diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index e3b342b01e2..b3ebe982b99 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -3146,6 +3146,7 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr bool vs_prologs = false; bool global_bo_list = false; bool image_2d_view_of_3d = false; + bool primitives_generated_query = false; /* Check enabled features */ if (pCreateInfo->pEnabledFeatures) { @@ -3218,6 +3219,14 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr image_2d_view_of_3d = true; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: { + const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *features = (const void *)ext; + if (features->primitivesGeneratedQuery || + features->primitivesGeneratedQueryWithRasterizerDiscard || + features->primitivesGeneratedQueryWithNonZeroStreams) + primitives_generated_query = true; + break; + } default: break; } @@ -3282,6 +3291,8 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr device->image_2d_view_of_3d = image_2d_view_of_3d; + device->primitives_generated_query = primitives_generated_query; + radv_init_shader_arenas(device); device->overallocation_disallowed = overallocation_disallowed; diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 0d409d49d58..52066f01863 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -854,6 +854,9 @@ struct radv_device { /* Whether 2D views of 3D image is enabled. */ bool image_2d_view_of_3d; + /* Whether primitives generated query features are enabled. */ + bool primitives_generated_query; + /* Whether anisotropy is forced with RADV_TEX_ANISO (-1 is disabled). */ int force_aniso;