Pipeline robustness fix

VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT provides a
default behavior which means that it uses the default value, as if
the pipeline robustness feature wasn't present. In this case, it
means that stages inherit robustness from the pipeline, not from the
device.

Tests: dEQP-VK.robustness.pipeline_robustness_buffer_access.*
Bug: b/185122256
Change-Id: Iaa2a5e584de98786bdc9a0850ffdb4710bb13322
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/68331
Tested-by: Alexis Hétu <sugoi@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Commit-Queue: Alexis Hétu <sugoi@google.com>
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/Vulkan/VkPipeline.cpp b/src/Vulkan/VkPipeline.cpp
index 504cd4d..9f573b8 100644
--- a/src/Vulkan/VkPipeline.cpp
+++ b/src/Vulkan/VkPipeline.cpp
@@ -270,7 +270,7 @@
 	}
 }
 
-bool getRobustBufferAccess(const VkPipelineRobustnessCreateInfoEXT *overrideRobustness, bool deviceRobustBufferAccess, bool inheritRobustBufferAccess)
+bool getRobustBufferAccess(const VkPipelineRobustnessCreateInfoEXT *overrideRobustness, bool inheritRobustBufferAccess)
 {
 	VkPipelineRobustnessBufferBehaviorEXT storageBehavior = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT;
 	VkPipelineRobustnessBufferBehaviorEXT uniformBehavior = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT;
@@ -282,10 +282,6 @@
 		uniformBehavior = overrideRobustness->uniformBuffers;
 		vertexBehavior = overrideRobustness->vertexInputs;
 	}
-	else
-	{
-		inheritRobustBufferAccess = deviceRobustBufferAccess;
-	}
 
 	bool storageRobustBufferAccess = getRobustBufferAccess(storageBehavior, inheritRobustBufferAccess);
 	bool uniformRobustBufferAccess = getRobustBufferAccess(uniformBehavior, inheritRobustBufferAccess);
@@ -304,15 +300,14 @@
 
 	// For pipelines, there's no robustBufferAccess to inherit from.  Default and no-override
 	// both lead to using the device's robustBufferAccess.
-	return getRobustBufferAccess(overrideRobustness, deviceRobustBufferAccess, deviceRobustBufferAccess);
+	return getRobustBufferAccess(overrideRobustness, deviceRobustBufferAccess);
 }
 
-bool getPipelineStageRobustBufferAccess(const void *pNext, vk::Device *device, bool pipelineRobustBufferAccess)
+bool getPipelineStageRobustBufferAccess(const void *pNext, bool pipelineRobustBufferAccess)
 {
 	const VkPipelineRobustnessCreateInfoEXT *overrideRobustness = vk::GetExtendedStruct<VkPipelineRobustnessCreateInfoEXT>(pNext, VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT);
-	const bool deviceRobustBufferAccess = device->getEnabledFeatures().robustBufferAccess;
 
-	return getRobustBufferAccess(overrideRobustness, deviceRobustBufferAccess, pipelineRobustBufferAccess);
+	return getRobustBufferAccess(overrideRobustness, pipelineRobustBufferAccess);
 }
 
 }  // anonymous namespace
@@ -457,7 +452,7 @@
 			}
 		}
 
-		const bool stageRobustBufferAccess = getPipelineStageRobustBufferAccess(stageInfo.pNext, device, robustBufferAccess);
+		const bool stageRobustBufferAccess = getPipelineStageRobustBufferAccess(stageInfo.pNext, robustBufferAccess);
 
 		// TODO(b/201798871): use allocator.
 		auto shader = std::make_shared<sw::SpirvShader>(stageInfo.stage, stageInfo.pName, spirv,
@@ -533,7 +528,7 @@
 		}
 	}
 
-	const bool stageRobustBufferAccess = getPipelineStageRobustBufferAccess(stage.pNext, device, robustBufferAccess);
+	const bool stageRobustBufferAccess = getPipelineStageRobustBufferAccess(stage.pNext, robustBufferAccess);
 
 	// TODO(b/201798871): use allocator.
 	shader = std::make_shared<sw::SpirvShader>(stage.stage, stage.pName, spirv,