GPU: Special case to avoid assert on GenerateMipmaps (#12995)
Some checks are pending
Build (All) / Create test plan (push) Waiting to run
Build (All) / level1 (push) Blocked by required conditions
Build (All) / level2 (push) Blocked by required conditions

This commit is contained in:
Evan Hemsley 2025-05-09 21:45:54 -07:00 committed by GitHub
parent 7b3bd8c538
commit 86b206dadf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 2 deletions

View file

@ -1756,7 +1756,11 @@ void SDL_BindGPUVertexSamplers(
if (RENDERPASS_DEVICE->debug_mode) { if (RENDERPASS_DEVICE->debug_mode) {
CHECK_RENDERPASS CHECK_RENDERPASS
CHECK_SAMPLER_TEXTURES
if (!((CommandBufferCommonHeader*)RENDERPASS_COMMAND_BUFFER)->ignore_render_pass_texture_validation)
{
CHECK_SAMPLER_TEXTURES
}
} }
RENDERPASS_DEVICE->BindVertexSamplers( RENDERPASS_DEVICE->BindVertexSamplers(
@ -1836,7 +1840,11 @@ void SDL_BindGPUFragmentSamplers(
if (RENDERPASS_DEVICE->debug_mode) { if (RENDERPASS_DEVICE->debug_mode) {
CHECK_RENDERPASS CHECK_RENDERPASS
CHECK_SAMPLER_TEXTURES
if (!((CommandBufferCommonHeader*)RENDERPASS_COMMAND_BUFFER)->ignore_render_pass_texture_validation)
{
CHECK_SAMPLER_TEXTURES
}
} }
RENDERPASS_DEVICE->BindFragmentSamplers( RENDERPASS_DEVICE->BindFragmentSamplers(
@ -2605,11 +2613,19 @@ void SDL_GenerateMipmapsForGPUTexture(
SDL_assert_release(!"GenerateMipmaps texture must be created with SAMPLER and COLOR_TARGET usage flags!"); SDL_assert_release(!"GenerateMipmaps texture must be created with SAMPLER and COLOR_TARGET usage flags!");
return; return;
} }
CommandBufferCommonHeader *commandBufferHeader = (CommandBufferCommonHeader *)command_buffer;
commandBufferHeader->ignore_render_pass_texture_validation = true;
} }
COMMAND_BUFFER_DEVICE->GenerateMipmaps( COMMAND_BUFFER_DEVICE->GenerateMipmaps(
command_buffer, command_buffer,
texture); texture);
if (COMMAND_BUFFER_DEVICE->debug_mode) {
CommandBufferCommonHeader *commandBufferHeader = (CommandBufferCommonHeader *)command_buffer;
commandBufferHeader->ignore_render_pass_texture_validation = false;
}
} }
void SDL_BlitGPUTexture( void SDL_BlitGPUTexture(

View file

@ -66,6 +66,8 @@ typedef struct CommandBufferCommonHeader
Pass copy_pass; Pass copy_pass;
bool swapchain_texture_acquired; bool swapchain_texture_acquired;
bool submitted; bool submitted;
// used to avoid tripping assert on GenerateMipmaps
bool ignore_render_pass_texture_validation;
} CommandBufferCommonHeader; } CommandBufferCommonHeader;
typedef struct TextureCommonHeader typedef struct TextureCommonHeader