Vulkan: Fix VVL error regarding geometryStreams

Addresses new validation error:

    [ VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324 ] Validation Error: [ VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324 ] Object 0: handle = 0xb400007e8176af60, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xf1034461 | pCreateInfos[0].pRasterizationState pNext chain includes VkPipelineRasterizationStateStreamCreateInfoEXT, but geometryStreams feature is not enabled. The Vulkan spec states: VkPhysicalDeviceTransformFeedbackFeaturesEXT::geometryStreams must be enabled (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324)

The validation was added in this commit:
bdaec8454a

Test: World of Kings MEC
Bug: b/198101940
Bug: angleproject:6339
Change-Id: I3cfacc20d231d246500e83451c9ec6b74d9372f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3127942
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
This commit is contained in:
Cody Northrop 2021-08-28 23:59:33 -06:00 коммит произвёл Angle LUCI CQ
Родитель ab1a5dbeb4
Коммит ef96bde8b0
4 изменённых файлов: 10 добавлений и 1 удалений

Просмотреть файл

@ -199,6 +199,11 @@ struct FeaturesVk : FeatureSetBase
"Transform feedback uses the VK_EXT_transform_feedback extension.", &members, "Transform feedback uses the VK_EXT_transform_feedback extension.", &members,
"http://anglebug.com/3206"}; "http://anglebug.com/3206"};
Feature supportsGeometryStreamsCapability = {
"supportsGeometryStreamsCapability", FeatureCategory::VulkanFeatures,
"Implementation supports the GeometryStreams SPIR-V capability.", &members,
"http://anglebug.com/3206"};
// Whether the VkDevice supports the VK_EXT_index_type_uint8 extension // Whether the VkDevice supports the VK_EXT_index_type_uint8 extension
// http://anglebug.com/4405 // http://anglebug.com/4405
Feature supportsIndexTypeUint8 = {"supportsIndexTypeUint8", FeatureCategory::VulkanFeatures, Feature supportsIndexTypeUint8 = {"supportsIndexTypeUint8", FeatureCategory::VulkanFeatures,

Просмотреть файл

@ -2368,6 +2368,9 @@ void RendererVk::initFeatures(DisplayVk *displayVk,
ANGLE_FEATURE_CONDITION(&mFeatures, supportsTransformFeedbackExtension, ANGLE_FEATURE_CONDITION(&mFeatures, supportsTransformFeedbackExtension,
mTransformFeedbackFeatures.transformFeedback == VK_TRUE); mTransformFeedbackFeatures.transformFeedback == VK_TRUE);
ANGLE_FEATURE_CONDITION(&mFeatures, supportsGeometryStreamsCapability,
mTransformFeedbackFeatures.geometryStreams == VK_TRUE);
ANGLE_FEATURE_CONDITION(&mFeatures, supportsIndexTypeUint8, ANGLE_FEATURE_CONDITION(&mFeatures, supportsIndexTypeUint8,
mIndexTypeUint8Features.indexTypeUint8 == VK_TRUE); mIndexTypeUint8Features.indexTypeUint8 == VK_TRUE);

Просмотреть файл

@ -1957,7 +1957,7 @@ angle::Result GraphicsPipelineDesc::initializePipeline(
VkPipelineRasterizationStateStreamCreateInfoEXT rasterStreamState = {}; VkPipelineRasterizationStateStreamCreateInfoEXT rasterStreamState = {};
rasterStreamState.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT; rasterStreamState.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT;
if (contextVk->getFeatures().supportsTransformFeedbackExtension.enabled) if (contextVk->getFeatures().supportsGeometryStreamsCapability.enabled)
{ {
rasterStreamState.rasterizationStream = 0; rasterStreamState.rasterizationStream = 0;
*pNextPtr = &rasterStreamState; *pNextPtr = &rasterStreamState;

Просмотреть файл

@ -202,6 +202,7 @@ bool EGLWindow::initializeDisplay(OSWindow *osWindow,
if (params.transformFeedbackFeature == EGL_FALSE) if (params.transformFeedbackFeature == EGL_FALSE)
{ {
disabledFeatureOverrides.push_back("supportsTransformFeedbackExtension"); disabledFeatureOverrides.push_back("supportsTransformFeedbackExtension");
disabledFeatureOverrides.push_back("supportsGeometryStreamsCapability");
disabledFeatureOverrides.push_back("emulateTransformFeedback"); disabledFeatureOverrides.push_back("emulateTransformFeedback");
} }