зеркало из https://github.com/AvaloniaUI/angle.git
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:
Родитель
ab1a5dbeb4
Коммит
ef96bde8b0
|
@ -199,6 +199,11 @@ struct FeaturesVk : FeatureSetBase
|
|||
"Transform feedback uses the VK_EXT_transform_feedback extension.", &members,
|
||||
"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
|
||||
// http://anglebug.com/4405
|
||||
Feature supportsIndexTypeUint8 = {"supportsIndexTypeUint8", FeatureCategory::VulkanFeatures,
|
||||
|
|
|
@ -2368,6 +2368,9 @@ void RendererVk::initFeatures(DisplayVk *displayVk,
|
|||
ANGLE_FEATURE_CONDITION(&mFeatures, supportsTransformFeedbackExtension,
|
||||
mTransformFeedbackFeatures.transformFeedback == VK_TRUE);
|
||||
|
||||
ANGLE_FEATURE_CONDITION(&mFeatures, supportsGeometryStreamsCapability,
|
||||
mTransformFeedbackFeatures.geometryStreams == VK_TRUE);
|
||||
|
||||
ANGLE_FEATURE_CONDITION(&mFeatures, supportsIndexTypeUint8,
|
||||
mIndexTypeUint8Features.indexTypeUint8 == VK_TRUE);
|
||||
|
||||
|
|
|
@ -1957,7 +1957,7 @@ angle::Result GraphicsPipelineDesc::initializePipeline(
|
|||
|
||||
VkPipelineRasterizationStateStreamCreateInfoEXT rasterStreamState = {};
|
||||
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;
|
||||
*pNextPtr = &rasterStreamState;
|
||||
|
|
|
@ -202,6 +202,7 @@ bool EGLWindow::initializeDisplay(OSWindow *osWindow,
|
|||
if (params.transformFeedbackFeature == EGL_FALSE)
|
||||
{
|
||||
disabledFeatureOverrides.push_back("supportsTransformFeedbackExtension");
|
||||
disabledFeatureOverrides.push_back("supportsGeometryStreamsCapability");
|
||||
disabledFeatureOverrides.push_back("emulateTransformFeedback");
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче