mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-12 22:28: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();
|
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);
|
backendSampler->SyncToBackend(samplerObject);
|
||||||
|
#endif
|
||||||
// Syncing the object's parameters is not the same as putting it on the
|
// 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
|
// unit: without this the driver kept sampling with the texture's own
|
||||||
// parameters and every sampler object was inert.
|
// parameters and every sampler object was inert.
|
||||||
|
|||||||
@@ -515,8 +515,9 @@ namespace MobileGL::MG_Pipe {
|
|||||||
now[Index(MGPipeDirty::NewSamplers)] = MGPipeMixShutter(
|
now[Index(MGPipeDirty::NewSamplers)] = MGPipeMixShutter(
|
||||||
MGPipeMixShutter(textureParams, ctx.GetSamplingResolutionGeneration()),
|
MGPipeMixShutter(textureParams, ctx.GetSamplingResolutionGeneration()),
|
||||||
ctx.GetTextureBindGeneration());
|
ctx.GetTextureBindGeneration());
|
||||||
now[Index(MGPipeDirty::NewShaderImages)] =
|
now[Index(MGPipeDirty::NewShaderImages)] = MGPipeMixShutter(
|
||||||
MGPipeMixShutter(MGPipeMixShutter(textureContent, textureParams), programImages);
|
MGPipeMixShutter(MGPipeMixShutter(textureContent, textureParams), programImages),
|
||||||
|
ctx.GetTextureBindGeneration());
|
||||||
now[Index(MGPipeDirty::NewConstBuffers)] = buffers;
|
now[Index(MGPipeDirty::NewConstBuffers)] = buffers;
|
||||||
now[Index(MGPipeDirty::NewShaderBuffers)] = buffers;
|
now[Index(MGPipeDirty::NewShaderBuffers)] = buffers;
|
||||||
now[Index(MGPipeDirty::NewSoTargets)] =
|
now[Index(MGPipeDirty::NewSoTargets)] =
|
||||||
|
|||||||
Reference in New Issue
Block a user