mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-09 12:48:32 +09:00
[Fix] (Espryt, Pipe): carry the bound sampler state's CSO handle into the sampler twin's sync and mix the texture-bind generation into the shader-image shutter - the twin resolved a content-addressed record by an identity handle, and an image re-bind that only moved the level never re-emitted the set
This commit is contained in:
@@ -5301,7 +5301,15 @@ namespace MobileGL::MG_Backend::DirectGLES {
|
||||
}
|
||||
backendSampler = backendObj.get();
|
||||
}
|
||||
#if MOBILEGL_PIPE_PUSH
|
||||
backendSampler->SyncToBackend(
|
||||
samplerObject,
|
||||
static_cast<SizeT>(unit) < MG_Pipe::MGPipeApplier().BoundSamplerStates.size()
|
||||
? MG_Pipe::MGPipeApplier().BoundSamplerStates[static_cast<SizeT>(unit)]
|
||||
: MG_Pipe::kMGPipeNullHandle);
|
||||
#else
|
||||
backendSampler->SyncToBackend(samplerObject);
|
||||
#endif
|
||||
// Syncing the object's parameters is not the same as putting it on the
|
||||
// unit: without this the driver kept sampling with the texture's own
|
||||
// parameters and every sampler object was inert.
|
||||
|
||||
@@ -515,8 +515,9 @@ namespace MobileGL::MG_Pipe {
|
||||
now[Index(MGPipeDirty::NewSamplers)] = MGPipeMixShutter(
|
||||
MGPipeMixShutter(textureParams, ctx.GetSamplingResolutionGeneration()),
|
||||
ctx.GetTextureBindGeneration());
|
||||
now[Index(MGPipeDirty::NewShaderImages)] =
|
||||
MGPipeMixShutter(MGPipeMixShutter(textureContent, textureParams), programImages);
|
||||
now[Index(MGPipeDirty::NewShaderImages)] = MGPipeMixShutter(
|
||||
MGPipeMixShutter(MGPipeMixShutter(textureContent, textureParams), programImages),
|
||||
ctx.GetTextureBindGeneration());
|
||||
now[Index(MGPipeDirty::NewConstBuffers)] = buffers;
|
||||
now[Index(MGPipeDirty::NewShaderBuffers)] = buffers;
|
||||
now[Index(MGPipeDirty::NewSoTargets)] =
|
||||
|
||||
Reference in New Issue
Block a user