diff --git a/src/gpu/d3d12/SDL_gpu_d3d12.c b/src/gpu/d3d12/SDL_gpu_d3d12.c index a2190f7ccd..4316603c62 100644 --- a/src/gpu/d3d12/SDL_gpu_d3d12.c +++ b/src/gpu/d3d12/SDL_gpu_d3d12.c @@ -3646,7 +3646,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;