GPU: Special case to avoid assert on GenerateMipmaps (#12995)

(cherry picked from commit 86b206dadf)
This commit is contained in:
Evan Hemsley
2025-05-09 21:45:54 -07:00
committed by cosmonaut
parent 6e97d8d1b3
commit 9f1a1405a6
2 changed files with 20 additions and 2 deletions

View File

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

View File

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