Add robustBufferAccess as part of PixelProcessor::States
robustBufferAccess changes how OOB behavior is handled, so it must be
taken into account in PixelProcessor::States. Generally, pipelines
inherit whether robustness is enabled from the device, but that can
now be set per pipeline thanks to VK_EXT_pipeline_robustness.
For reference, see:
https://chromium-review.googlesource.com/c/angle/angle/+/3943534
Bug: b/253062051
Change-Id: I3cdb81de8f48ec3a82b5903680b2e3f19ef82458
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/68888
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Commit-Queue: Alexis Hétu <sugoi@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Device/PixelProcessor.cpp b/src/Device/PixelProcessor.cpp
index afedb55..0ffbf7a 100644
--- a/src/Device/PixelProcessor.cpp
+++ b/src/Device/PixelProcessor.cpp
@@ -87,11 +87,13 @@
{
state.shaderID = fragmentShader->getIdentifier();
state.pipelineLayoutIdentifier = fragmentState.getPipelineLayout()->identifier;
+ state.robustBufferAccess = fragmentShader->getRobustBufferAccess();
}
else
{
state.shaderID = 0;
state.pipelineLayoutIdentifier = 0;
+ state.robustBufferAccess = false;
}
state.alphaToCoverage = fragmentOutputInterfaceState.hasAlphaToCoverage();
diff --git a/src/Device/PixelProcessor.hpp b/src/Device/PixelProcessor.hpp
index a63af34..00d2c35 100644
--- a/src/Device/PixelProcessor.hpp
+++ b/src/Device/PixelProcessor.hpp
@@ -74,6 +74,8 @@
VkCompareOp depthCompareMode;
bool depthWriteEnable;
+ bool robustBufferAccess;
+
bool stencilActive;
StencilOpState frontStencil;
StencilOpState backStencil;