mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-06 14:43:20 +00:00
Fix D3D12 DSV creation for array/cube/cube-array depth textures
DSV creation was missing a TEXTURE2DARRAY branch for array, cube, and cube-array depth textures. It fell through to TEXTURE2D, so FirstArraySlice was never set and all layers' DSVs targeted layer 0. This caused incorrect rendering when using depth textures with multiple layers, such as cubemap shadow maps.
This commit is contained in:
parent
dc590257ba
commit
76ff74eeab
1 changed files with 6 additions and 1 deletions
|
|
@ -3600,7 +3600,12 @@ static D3D12Texture *D3D12_INTERNAL_CreateTexture(
|
|||
dsvDesc.Format = SDLToD3D12_DepthFormat[createinfo->format];
|
||||
dsvDesc.Flags = (D3D12_DSV_FLAGS)0;
|
||||
|
||||
if (isMultisample) {
|
||||
if (createinfo->type == SDL_GPU_TEXTURETYPE_2D_ARRAY || createinfo->type == SDL_GPU_TEXTURETYPE_CUBE || createinfo->type == SDL_GPU_TEXTURETYPE_CUBE_ARRAY) {
|
||||
dsvDesc.ViewDimension = D3D12_DSV_DIMENSION_TEXTURE2DARRAY;
|
||||
dsvDesc.Texture2DArray.MipSlice = levelIndex;
|
||||
dsvDesc.Texture2DArray.FirstArraySlice = layerIndex;
|
||||
dsvDesc.Texture2DArray.ArraySize = 1;
|
||||
} else if (isMultisample) {
|
||||
dsvDesc.ViewDimension = D3D12_DSV_DIMENSION_TEXTURE2DMS;
|
||||
} else {
|
||||
dsvDesc.ViewDimension = D3D12_DSV_DIMENSION_TEXTURE2D;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue