Implement 3D Textures
This commit is contained in:
parent
f912a82a8e
commit
fd9e2d0073
4 changed files with 10 additions and 1 deletions
|
@ -448,7 +448,10 @@ public:
|
|||
BitField<8, 3, u32> block_depth;
|
||||
BitField<12, 1, InvMemoryLayout> type;
|
||||
} memory_layout;
|
||||
u32 array_mode;
|
||||
union {
|
||||
BitField<0, 16, u32> array_mode;
|
||||
BitField<16, 1, u32> volume;
|
||||
};
|
||||
u32 layer_stride;
|
||||
u32 base_layer;
|
||||
INSERT_PADDING_WORDS(7);
|
||||
|
|
|
@ -155,6 +155,7 @@ void SurfaceParams::InitCacheParameters(Tegra::GPUVAddr gpu_addr_) {
|
|||
params.rt.index = static_cast<u32>(index);
|
||||
params.rt.array_mode = config.array_mode;
|
||||
params.rt.layer_stride = config.layer_stride;
|
||||
params.rt.volume = config.volume;
|
||||
params.rt.base_layer = config.base_layer;
|
||||
|
||||
params.InitCacheParameters(config.Address());
|
||||
|
@ -1213,6 +1214,7 @@ Surface RasterizerCacheOpenGL::RecreateSurface(const Surface& old_surface,
|
|||
const bool is_blit{old_params.pixel_format == new_params.pixel_format};
|
||||
|
||||
switch (new_params.target) {
|
||||
case SurfaceParams::SurfaceTarget::Texture3D:
|
||||
case SurfaceParams::SurfaceTarget::Texture2D:
|
||||
if (is_blit) {
|
||||
BlitSurface(old_surface, new_surface, read_framebuffer.handle, draw_framebuffer.handle);
|
||||
|
|
|
@ -132,6 +132,8 @@ struct SurfaceParams {
|
|||
case Tegra::Texture::TextureType::Texture2D:
|
||||
case Tegra::Texture::TextureType::Texture2DNoMipmap:
|
||||
return SurfaceTarget::Texture2D;
|
||||
case Tegra::Texture::TextureType::Texture3D:
|
||||
return SurfaceTarget::Texture3D;
|
||||
case Tegra::Texture::TextureType::TextureCubemap:
|
||||
return SurfaceTarget::TextureCubemap;
|
||||
case Tegra::Texture::TextureType::Texture1DArray:
|
||||
|
@ -791,6 +793,7 @@ struct SurfaceParams {
|
|||
struct {
|
||||
u32 index;
|
||||
u32 array_mode;
|
||||
u32 volume;
|
||||
u32 layer_stride;
|
||||
u32 base_layer;
|
||||
} rt;
|
||||
|
|
|
@ -1142,6 +1142,7 @@ private:
|
|||
case Tegra::Shader::TextureType::Texture2D: {
|
||||
return 2;
|
||||
}
|
||||
case Tegra::Shader::TextureType::Texture3D:
|
||||
case Tegra::Shader::TextureType::TextureCube: {
|
||||
return 3;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue