75 lines
3.9 KiB
C
75 lines
3.9 KiB
C
// SPDX-FileCopyrightText: Copyright 2024 freegnm Project
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
#pragma once
|
|
|
|
#include "video_core/amdgpu/gpuaddr/error.h"
|
|
#include "video_core/amdgpu/gpuaddr/types.h"
|
|
|
|
//
|
|
// Surface
|
|
//
|
|
GpaError gpaComputeSurfaceInfo(GpaSurfaceInfo* out, const GpaTilingParams* tp);
|
|
GpaError gpaComputeHtileInfo(GpaHtileInfo* outinfo, const GpaHtileParams* params);
|
|
GpaError gpaComputeCmaskInfo(GpaCmaskInfo* outinfo, const GpaCmaskParams* params);
|
|
GpaError gpaComputeFmaskInfo(GpaFmaskInfo* outinfo, const GpaFmaskParams* params);
|
|
GpaError gpaComputeSurfaceTileMode(GnmTileMode* outtilemode, GnmGpuMode mingpumode,
|
|
GnmArrayMode arraymode, GpaSurfaceFlags flags,
|
|
GnmDataFormat surfacefmt, u32 numfragsperpixel,
|
|
GnmMicroTileMode mtm);
|
|
|
|
//
|
|
// Surface generation
|
|
//
|
|
GpaError gpaFindOptimalSurface(GpaSurfaceProperties* outprops, GpaSurfaceType surfacetype, u32 bpp,
|
|
u32 numfrags, bool mipmapped, GnmGpuMode mingpumode);
|
|
|
|
//
|
|
// Element/Utility
|
|
//
|
|
uint64_t gpaComputeSurfaceAddrFromCoordLinear(u32 x, u32 y, u32 slice, u32 sample, u32 bpp,
|
|
u32 pitch, u32 height, u32 numSlices,
|
|
u32* pBitPosition);
|
|
GpaError gpaCalcSurfaceSizeOffset(uint64_t* outsize, uint64_t* outoffset, const GpaTextureInfo* tex,
|
|
u32 miplevel, u32 arrayslice);
|
|
|
|
GpaError gpaGetTileInfo(GpaTileInfo* outinfo, GnmTileMode tilemode, u32 bpp, u32 numfrags,
|
|
GnmGpuMode gpumode);
|
|
GpaError gpaComputeBaseSwizzle(u32* outswizzle, GnmTileMode tilemode, u32 surfindex, u32 bpp,
|
|
u32 numfrags, GnmGpuMode gpumode);
|
|
|
|
//
|
|
// Decompression
|
|
//
|
|
GpaError gpaGetDecompressedSize(uint64_t* outsize, const void* inbuffer, size_t inbuffersize,
|
|
const GpaTextureInfo* texinfo);
|
|
GpaError gpaDecompressTexture(void* outbuffer, uint64_t outbuffersize, const void* inbuffer,
|
|
uint64_t inbuffersize, const GpaTextureInfo* texinfo,
|
|
GnmDataFormat* outfmt);
|
|
|
|
//
|
|
// Tiler
|
|
//
|
|
GpaError gpaTpInit(GpaTilingParams* tp, const GpaTextureInfo* tex, u32 miplevel, u32 arrayslice);
|
|
|
|
GpaError gpaTileSurface(void* outtile, size_t outtilesize, const void* inuntile,
|
|
size_t inuntilesize, const GpaTilingParams* tp);
|
|
GpaError gpaTileSurfaceRegion(void* outtile, size_t outtilesize, const void* inuntile,
|
|
size_t inuntilesize, const GpaTilingParams* tp,
|
|
const GpaSurfaceRegion* region, u32 srcpitch, u32 srcslicepitch);
|
|
GpaError gpaTileTextureIndexed(const void* inbuffer, size_t inbuffersize, void* outbuffer,
|
|
size_t outbuffersize, const GpaTextureInfo* texinfo, u32 mip,
|
|
u32 slice);
|
|
GpaError gpaTileTextureAll(const void* inbuffer, size_t inbuffersize, void* outbuffer,
|
|
size_t outbuffersize, const GpaTextureInfo* texinfo);
|
|
GpaError gpaDetileSurface(void* outuntile, size_t outuntilesize, const void* intile,
|
|
size_t intilesize, const GpaTilingParams* tp);
|
|
GpaError gpaDetileSurfaceRegion(void* outuntile, size_t outuntilesize, const void* intile,
|
|
size_t intilesize, const GpaTilingParams* tp,
|
|
const GpaSurfaceRegion* region, u32 dstpitch, u32 dstslicepitch);
|
|
GpaError gpaDetileTextureIndexed(const void* inbuffer, size_t inbuffersize, void* outbuffer,
|
|
size_t outbuffersize, const GpaTextureInfo* texinfo, u32 mip,
|
|
u32 slice);
|
|
GpaError gpaDetileTextureAll(const void* inbuffer, size_t inbuffersize, void* outbuffer,
|
|
size_t outbuffersize, const GpaTextureInfo* texinfo);
|