The default uniform descriptor set is reset while recreating the
pipeline layout during handling of immutable samplers and then is
never re-allocated and bound before the next draw.
The call stack to allocate the program uniforms descriptor set:
ProgramExecutableVk::allocUniformAndXfbDescriptorSet
ProgramVk::updateUniforms
ContextVk::setupDraw
ContextVk::drawArrays
Context::drawArrays
Unfortunately, this occurs before the pipeline layout is reset (and the
descriptor sets are reset) due to the presence of an immutable sampler:
ProgramExecutableVk::reset <<---- mDescriptorSets.fill(VK_NULL_HANDLE);
ProgramExecutableVk::createPipelineLayout
ContextVk::updateActiveTextures
ContextVk::invalidateCurrentTextures
ContextVk::syncState
Context::syncDirtyBits
Context::prepareForDraw
Context::drawArrays
This CL calls setAllDefaultUniformsDirty() for the Program/PPO to ensure
the default uniforms descriptor sets are re-allocated and re-bound
before the next draw command.
Bug: b/178424566
Bug: angleproject:5624
Test: CtsCameraTestCases
Change-Id: If54a9f2cc09809a5103bc3eac641c77f56362229
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2677385Reviewed-by:
Jamie Madill <jmadill@chromium.org>
Reviewed-by:
Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| d3d | Loading commit data... | |
| gl | Loading commit data... | |
| metal | Loading commit data... | |
| null | Loading commit data... | |
| vulkan | Loading commit data... | |
| BufferImpl.cpp | Loading commit data... | |
| BufferImpl.h | Loading commit data... | |
| BufferImpl_mock.h | Loading commit data... | |
| CompilerImpl.h | Loading commit data... | |
| ContextImpl.cpp | Loading commit data... | |
| ContextImpl.h | Loading commit data... | |
| DeviceImpl.cpp | Loading commit data... | |
| DeviceImpl.h | Loading commit data... | |
| DisplayImpl.cpp | Loading commit data... | |
| DisplayImpl.h | Loading commit data... | |
| EGLImplFactory.h | Loading commit data... | |
| EGLReusableSync.cpp | Loading commit data... | |
| EGLReusableSync.h | Loading commit data... | |
| EGLSyncImpl.cpp | Loading commit data... | |
| EGLSyncImpl.h | Loading commit data... | |
| FenceNVImpl.h | Loading commit data... | |
| Format.h | Loading commit data... | |
| FormatID_autogen.h | Loading commit data... | |
| Format_table_autogen.cpp | Loading commit data... | |
| FramebufferAttachmentObjectImpl.h | Loading commit data... | |
| FramebufferImpl.h | Loading commit data... | |
| FramebufferImpl_mock.h | Loading commit data... | |
| GLImplFactory.h | Loading commit data... | |
| ImageImpl.h | Loading commit data... | |
| ImageImpl_mock.h | Loading commit data... | |
| MemoryObjectImpl.h | Loading commit data... | |
| OverlayImpl.h | Loading commit data... | |
| ProgramImpl.h | Loading commit data... | |
| ProgramImpl_mock.h | Loading commit data... | |
| ProgramPipelineImpl.cpp | Loading commit data... | |
| ProgramPipelineImpl.h | Loading commit data... | |
| QueryImpl.cpp | Loading commit data... | |
| QueryImpl.h | Loading commit data... | |
| RenderTargetCache.h | Loading commit data... | |
| RenderbufferImpl.h | Loading commit data... | |
| RenderbufferImpl_mock.h | Loading commit data... | |
| SamplerImpl.h | Loading commit data... | |
| SemaphoreImpl.h | Loading commit data... | |
| ShaderImpl.cpp | Loading commit data... | |
| ShaderImpl.h | Loading commit data... | |
| StreamProducerImpl.h | Loading commit data... | |
| SurfaceImpl.cpp | Loading commit data... | |
| SurfaceImpl.h | Loading commit data... | |
| SyncImpl.h | Loading commit data... | |
| TextureImpl.cpp | Loading commit data... | |
| TextureImpl.h | Loading commit data... | |
| TextureImpl_mock.h | Loading commit data... | |
| TransformFeedbackImpl.h | Loading commit data... | |
| TransformFeedbackImpl_mock.h | Loading commit data... | |
| VertexArrayImpl.h | Loading commit data... | |
| angle_format.py | Loading commit data... | |
| angle_format_data.json | Loading commit data... | |
| angle_format_map.json | Loading commit data... | |
| copyvertex.h | Loading commit data... | |
| copyvertex.inc.h | Loading commit data... | |
| d3d_format.cpp | Loading commit data... | |
| d3d_format.h | Loading commit data... | |
| driver_utils.cpp | Loading commit data... | |
| driver_utils.h | Loading commit data... | |
| driver_utils_mac.mm | Loading commit data... | |
| dxgi_format_data.json | Loading commit data... | |
| dxgi_format_map.h | Loading commit data... | |
| dxgi_format_map_autogen.cpp | Loading commit data... | |
| dxgi_support_data.json | Loading commit data... | |
| dxgi_support_table.h | Loading commit data... | |
| dxgi_support_table_autogen.cpp | Loading commit data... | |
| gen_angle_format_table.py | Loading commit data... | |
| gen_dxgi_format_table.py | Loading commit data... | |
| gen_dxgi_support_tables.py | Loading commit data... | |
| gen_load_functions_table.py | Loading commit data... | |
| glslang_wrapper_utils.cpp | Loading commit data... | |
| glslang_wrapper_utils.h | Loading commit data... | |
| load_functions_data.json | Loading commit data... | |
| load_functions_table.h | Loading commit data... | |
| load_functions_table_autogen.cpp | Loading commit data... | |
| renderer_utils.cpp | Loading commit data... | |
| renderer_utils.h | Loading commit data... | |
| serial_utils.h | Loading commit data... | |
| serial_utils_unittest.cpp | Loading commit data... |