@@ -3259,6 +3259,10 @@ static D3D12Texture *D3D12_INTERNAL_CreateTexture(
3259
3259
D3D12_CLEAR_VALUE clearValue ;
3260
3260
DXGI_FORMAT format ;
3261
3261
bool useClearValue = false;
3262
+ bool needsSRV =
3263
+ (createinfo -> usage & SDL_GPU_TEXTUREUSAGE_SAMPLER ) ||
3264
+ (createinfo -> usage & SDL_GPU_TEXTUREUSAGE_GRAPHICS_STORAGE_READ ) ||
3265
+ (createinfo -> usage & SDL_GPU_TEXTUREUSAGE_COMPUTE_STORAGE_READ );
3262
3266
bool needsUAV =
3263
3267
(createinfo -> usage & SDL_GPU_TEXTUREUSAGE_COMPUTE_STORAGE_WRITE ) ||
3264
3268
(createinfo -> usage & SDL_GPU_TEXTUREUSAGE_COMPUTE_STORAGE_SIMULTANEOUS_READ_WRITE );
@@ -3291,7 +3295,7 @@ static D3D12Texture *D3D12_INTERNAL_CreateTexture(
3291
3295
clearValue .Format = SDLToD3D12_DepthFormat [createinfo -> format ];
3292
3296
clearValue .DepthStencil .Depth = SDL_GetFloatProperty (createinfo -> props , SDL_PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_DEPTH_FLOAT , 0 );
3293
3297
clearValue .DepthStencil .Stencil = (UINT8 )SDL_GetNumberProperty (createinfo -> props , SDL_PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_STENCIL_UINT8 , 0 );
3294
- format = SDLToD3D12_TypelessFormat [createinfo -> format ];
3298
+ format = needsSRV ? SDLToD3D12_TypelessFormat [ createinfo -> format ] : SDLToD3D12_DepthFormat [createinfo -> format ];
3295
3299
}
3296
3300
3297
3301
if (needsUAV ) {
@@ -3352,9 +3356,7 @@ static D3D12Texture *D3D12_INTERNAL_CreateTexture(
3352
3356
texture -> resource = handle ;
3353
3357
3354
3358
// Create the SRV if applicable
3355
- if ((createinfo -> usage & SDL_GPU_TEXTUREUSAGE_SAMPLER ) ||
3356
- (createinfo -> usage & SDL_GPU_TEXTUREUSAGE_GRAPHICS_STORAGE_READ ) ||
3357
- (createinfo -> usage & SDL_GPU_TEXTUREUSAGE_COMPUTE_STORAGE_READ )) {
3359
+ if (needsSRV ) {
3358
3360
D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc ;
3359
3361
3360
3362
D3D12_INTERNAL_AssignStagingDescriptorHandle (
0 commit comments