Partially revert "Pipeline robustness fix"

This CL partially reverts:
https://swiftshader-review.googlesource.com/c/SwiftShader/+/68331

Some of the changes were unnecessary and caused
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT to no
longer be properly supported when specified. This was not uncovered
because of the lack of test coverage. This CL fixes the issue by
setting inheritRobustBufferAccess to deviceRobustBufferAccess when
overrideRobustness IS specified, instead of when it IS NOT specified,
which is what the original issue was.

Tests: dEQP-VK.robustness.pipeline_robustness_buffer_access.*
Bug: b/185122256
Change-Id: I9c09b9dc3a25dacd35e166189eb828f78dd9c422
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/68488
Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
Commit-Queue: Alexis Hétu <sugoi@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
diff --git a/src/Vulkan/VkPipeline.cpp b/src/Vulkan/VkPipeline.cpp
index 9f573b8..5e0902e 100644
--- a/src/Vulkan/VkPipeline.cpp
+++ b/src/Vulkan/VkPipeline.cpp
@@ -270,7 +270,7 @@
 	}
 }
 
-bool getRobustBufferAccess(const VkPipelineRobustnessCreateInfoEXT *overrideRobustness, bool inheritRobustBufferAccess)
+bool getRobustBufferAccess(const VkPipelineRobustnessCreateInfoEXT *overrideRobustness, bool deviceRobustBufferAccess, bool inheritRobustBufferAccess)
 {
 	VkPipelineRobustnessBufferBehaviorEXT storageBehavior = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT;
 	VkPipelineRobustnessBufferBehaviorEXT uniformBehavior = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT;
@@ -281,6 +281,7 @@
 		storageBehavior = overrideRobustness->storageBuffers;
 		uniformBehavior = overrideRobustness->uniformBuffers;
 		vertexBehavior = overrideRobustness->vertexInputs;
+		inheritRobustBufferAccess = deviceRobustBufferAccess;
 	}
 
 	bool storageRobustBufferAccess = getRobustBufferAccess(storageBehavior, inheritRobustBufferAccess);
@@ -300,14 +301,15 @@
 
 	// 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);
+	return getRobustBufferAccess(overrideRobustness, deviceRobustBufferAccess, deviceRobustBufferAccess);
 }
 
-bool getPipelineStageRobustBufferAccess(const void *pNext, bool pipelineRobustBufferAccess)
+bool getPipelineStageRobustBufferAccess(const void *pNext, vk::Device *device, 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, pipelineRobustBufferAccess);
+	return getRobustBufferAccess(overrideRobustness, deviceRobustBufferAccess, pipelineRobustBufferAccess);
 }
 
 }  // anonymous namespace
@@ -452,7 +454,7 @@
 			}
 		}
 
-		const bool stageRobustBufferAccess = getPipelineStageRobustBufferAccess(stageInfo.pNext, robustBufferAccess);
+		const bool stageRobustBufferAccess = getPipelineStageRobustBufferAccess(stageInfo.pNext, device, robustBufferAccess);
 
 		// TODO(b/201798871): use allocator.
 		auto shader = std::make_shared<sw::SpirvShader>(stageInfo.stage, stageInfo.pName, spirv,
@@ -528,7 +530,7 @@
 		}
 	}
 
-	const bool stageRobustBufferAccess = getPipelineStageRobustBufferAccess(stage.pNext, robustBufferAccess);
+	const bool stageRobustBufferAccess = getPipelineStageRobustBufferAccess(stage.pNext, device, robustBufferAccess);
 
 	// TODO(b/201798871): use allocator.
 	shader = std::make_shared<sw::SpirvShader>(stage.stage, stage.pName, spirv,