Temporarily fix failing dEQP tests
A recent dEQP update has introduced 2 issues:
VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT used without us
exposing VK_EXT_graphics_pipeline_library
Related issue: https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/3616
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM
used without us exposing VK_ARM_rasterization_order_attachment_access
Related issue: https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/3617
This CL adds a workaround for both issues.
Tests: dEQP-VK.*
Bug: b/228307968
Change-Id: I4c5d0be5438376be41da228bc299fb32d4381278
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/64870
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Commit-Queue: Alexis Hétu <sugoi@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Vulkan/VkPhysicalDevice.cpp b/src/Vulkan/VkPhysicalDevice.cpp
index f188036..1881234 100644
--- a/src/Vulkan/VkPhysicalDevice.cpp
+++ b/src/Vulkan/VkPhysicalDevice.cpp
@@ -581,6 +581,10 @@
break;
case VK_STRUCTURE_TYPE_MAX_ENUM: // TODO(b/176893525): This may not be legal. dEQP tests that this value is ignored.
break;
+ // FIXME(b/228307968): VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM
+ // is used by dEQP without checking if VK_ARM_rasterization_order_attachment_access is present
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM:
+ break;
default:
UNSUPPORTED("curExtension->sType: %s", vk::Stringify(curExtension->sType).c_str());
break;
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp
index 198f47b..5cee79c 100644
--- a/src/Vulkan/libVulkan.cpp
+++ b/src/Vulkan/libVulkan.cpp
@@ -2248,7 +2248,10 @@
TRACE("(VkDevice device = %p, const VkPipelineLayoutCreateInfo* pCreateInfo = %p, const VkAllocationCallbacks* pAllocator = %p, VkPipelineLayout* pPipelineLayout = %p)",
device, pCreateInfo, pAllocator, pPipelineLayout);
- if(pCreateInfo->flags != 0)
+ if((pCreateInfo->flags != 0) &&
+ // FIXME(b/228307968) : VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT is used by dEQP
+ // without checking if VK_EXT_graphics_pipeline_library is present
+ (pCreateInfo->flags != VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT))
{
// Vulkan 1.2: "flags is reserved for future use." "flags must be 0"
UNSUPPORTED("pCreateInfo->flags %d", int(pCreateInfo->flags));