SDL/src/gpu/d3d12
Logan Benjamin 3c2d7ecdd6 GPU D3D12 - Update to use typeless formats for depth buffer (#12701)
For a depth buffer in D3D12 that is also going to be used in a texture sampler, the creation (on an Intel HD 5500 igpu) fails. e.g. SDL_GPUTextureCreateInfo type = TEXTURE_2D, format = D32_FLOAT, usage = DEPTH_STENCIL_TARGET | SAMPLER

The error messages are:

D32_FLOAT
D3D12 ERROR: ID3D12Device::CreateShaderResourceView: The Format (0x29, R32_FLOAT) is invalid when creating a View; the
Resource was already created with a fully qualified Format, which is not castable (0x28, D32_FLOAT).

D24_UNORM
D3D12 ERROR: ID3D12Device::CreateShaderResourceView: For the resource format D24_UNORM_S8_UINT, when making a D3D view, the format name for the view can't be R24_UNORM_X8_TYPELESS.

I found this is because the texture format needs to be created as _TYPELESS, then the views (depth stencil view, shader resource view) should then be created as their respective types - e.g. texture = R32_TYPELESS, dsv = D32_FLOAT, srv = R32_FLOAT

Tested and working on:
NVidia RTX 3050 (D3D12 feature set 12_2)
Intel HD 5500 (D3D12 feature set 11_1)

(cherry picked from commit c81b62293a)
2025-04-23 16:30:47 -07:00
..
compile_shaders.bat GPU: Clean up D3D12 blit shader compilation 2024-12-04 14:56:36 -05:00
compile_shaders_xbox.bat
D3D12_Blit.h GPU: Cube Arrays (#10800) 2024-09-12 13:41:46 -07:00
D3D_Blit.hlsl GPU: Clean up D3D12 blit shader compilation 2024-12-04 14:56:36 -05:00
SDL_gpu_d3d12.c GPU D3D12 - Update to use typeless formats for depth buffer (#12701) 2025-04-23 16:30:47 -07:00