vulkan: enable VK_KHR_shader_expect_assume

This implementation ignores the hints.

Acked-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27265>
This commit is contained in:
Daniel Schürmann 2024-01-25 10:54:01 +01:00 committed by Marge Bot
parent 5df7be8017
commit 26c8f13ff5
13 changed files with 42 additions and 0 deletions

View file

@ -536,6 +536,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, radv/gfx10.3+)
VK_KHR_ray_tracing_position_fetch DONE (anv, radv/gfx10.3+)
VK_KHR_shader_clock DONE (anv, hasvk, lvp, nvk, radv, vn)
VK_KHR_shader_expect_assume DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
VK_KHR_shader_subgroup_rotate DONE (anv, radv)
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, radv)
VK_KHR_shared_presentable_image not started

View file

@ -2,3 +2,4 @@ VK_KHR_shader_subgroup_rotate on RADV
VK_KHR_load_store_op_none on RADV
VK_KHR_line_rasterization on RADV
VK_KHR_index_type_uint8 on RADV
VK_KHR_shader_expect_assume on all Vulkan drivers

View file

@ -500,6 +500,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device
.KHR_shader_atomic_int64 = true,
.KHR_shader_clock = true,
.KHR_shader_draw_parameters = true,
.KHR_shader_expect_assume = true,
.KHR_shader_float16_int8 = true,
.KHR_shader_float_controls = true,
.KHR_shader_integer_dot_product = true,
@ -1129,6 +1130,9 @@ radv_physical_device_get_features(const struct radv_physical_device *pdevice, st
/* VK_EXT_shader_object */
.shaderObject = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
};
}

View file

@ -161,6 +161,7 @@ get_device_extensions(const struct v3dv_physical_device *device,
.KHR_multiview = true,
.KHR_pipeline_executable_properties = true,
.KHR_separate_depth_stencil_layouts = true,
.KHR_shader_expect_assume = true,
.KHR_shader_float_controls = true,
.KHR_shader_non_semantic_info = true,
.KHR_sampler_mirror_clamp_to_edge = true,
@ -453,6 +454,9 @@ get_features(const struct v3dv_physical_device *physical_device,
/* VK_EXT_subgroup_size_control */
.subgroupSizeControl = true,
.computeFullSubgroups = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
};
}

View file

@ -191,6 +191,7 @@ get_device_extensions(const struct tu_physical_device *device,
.KHR_sampler_ycbcr_conversion = true,
.KHR_separate_depth_stencil_layouts = true,
.KHR_shader_draw_parameters = true,
.KHR_shader_expect_assume = true,
.KHR_shader_float16_int8 = true,
.KHR_shader_float_controls = true,
.KHR_shader_integer_dot_product = true,
@ -582,6 +583,9 @@ tu_get_features(struct tu_physical_device *pdevice,
/* VK_KHR_maintenance5 */
features->maintenance5 = true;
/* VK_KHR_shader_expect_assume */
features->shaderExpectAssume = true;
}
static const struct vk_pipeline_cache_object_ops *const cache_import_ops[] = {

View file

@ -136,6 +136,7 @@ static const struct vk_device_extension_table lvp_device_extensions_supported =
.KHR_shader_atomic_int64 = true,
.KHR_shader_clock = true,
.KHR_shader_draw_parameters = true,
.KHR_shader_expect_assume = true,
.KHR_shader_float16_int8 = true,
.KHR_shader_integer_dot_product = true,
.KHR_shader_non_semantic_info = true,
@ -611,6 +612,9 @@ lvp_get_features(const struct lvp_physical_device *pdevice,
/* maintenance6 */
.maintenance6 = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
/* VK_AMDX_shader_enqueue */
#ifdef VK_ENABLE_BETA_EXTENSIONS
.shaderEnqueue = true,

View file

@ -180,6 +180,7 @@ static void pvr_physical_device_get_supported_extensions(
.KHR_external_semaphore_fd = PVR_USE_WSI_PLATFORM,
.KHR_get_memory_requirements2 = true,
.KHR_image_format_list = true,
.KHR_shader_expect_assume = true,
.KHR_swapchain = PVR_USE_WSI_PLATFORM,
.KHR_timeline_semaphore = true,
.KHR_uniform_buffer_standard_layout = true,
@ -273,6 +274,8 @@ static void pvr_physical_device_get_supported_features(
/* Vulkan 1.3 / VK_EXT_texel_buffer_alignment */
.texelBufferAlignment = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
};
}

View file

@ -294,6 +294,7 @@ get_device_extensions(const struct anv_physical_device *device,
.KHR_shader_atomic_int64 = true,
.KHR_shader_clock = true,
.KHR_shader_draw_parameters = true,
.KHR_shader_expect_assume = true,
.KHR_shader_float16_int8 = !device->instance->no_16bit,
.KHR_shader_float_controls = true,
.KHR_shader_integer_dot_product = true,
@ -888,6 +889,9 @@ get_features(const struct anv_physical_device *pdevice,
/* VK_EXT_attachment_feedback_loop_dynamic_state */
.attachmentFeedbackLoopDynamicState = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
};
/* The new DOOM and Wolfenstein games require depthBounds without

View file

@ -239,6 +239,7 @@ get_device_extensions(const struct anv_physical_device *device,
.KHR_separate_depth_stencil_layouts = true,
.KHR_shader_clock = true,
.KHR_shader_draw_parameters = true,
.KHR_shader_expect_assume = true,
.KHR_shader_float16_int8 = device->info.ver >= 8 && !device->instance->no_16bit,
.KHR_shader_float_controls = true,
.KHR_shader_integer_dot_product = true,
@ -629,6 +630,9 @@ get_features(const struct anv_physical_device *pdevice,
/* VK_EXT_depth_clip_control */
.depthClipControl = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
};
/* We can't do image stores in vec4 shaders */

View file

@ -128,6 +128,7 @@ dzn_physical_device_get_extensions(struct dzn_physical_device *pdev)
.KHR_sampler_mirror_clamp_to_edge = true,
.KHR_separate_depth_stencil_layouts = true,
.KHR_shader_draw_parameters = true,
.KHR_shader_expect_assume = true,
.KHR_shader_float16_int8 = pdev->options4.Native16BitShaderOpsSupported,
.KHR_shader_float_controls = true,
.KHR_shader_integer_dot_product = true,
@ -778,6 +779,7 @@ dzn_physical_device_get_features(const struct dzn_physical_device *pdev,
.dynamicRendering = true,
.shaderIntegerDotProduct = true,
.maintenance4 = false,
.shaderExpectAssume = true,
.vertexAttributeInstanceRateDivisor = true,
.vertexAttributeInstanceRateZeroDivisor = true,

View file

@ -130,6 +130,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance,
nvk_use_nak(info),
.KHR_shader_clock = true,
.KHR_shader_draw_parameters = true,
.KHR_shader_expect_assume = true,
.KHR_shader_float_controls = true,
.KHR_shader_float16_int8 = true,
.KHR_shader_integer_dot_product = true,
@ -527,6 +528,9 @@ nvk_get_device_features(const struct nv_device_info *info,
/* VK_VALVE_mutable_descriptor_type */
.mutableDescriptorType = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
};
}

View file

@ -158,6 +158,7 @@ panvk_get_device_extensions(const struct panvk_physical_device *device,
{
*ext = (struct vk_device_extension_table){
.KHR_copy_commands2 = true,
.KHR_shader_expect_assume = true,
.KHR_storage_buffer_storage_class = true,
.KHR_descriptor_update_template = true,
#ifdef PANVK_USE_WSI_PLATFORM
@ -289,6 +290,9 @@ panvk_get_features(const struct panvk_physical_device *device,
/* VK_EXT_custom_border_color */
.customBorderColors = true,
.customBorderColorWithoutFormat = true,
/* VK_KHR_shader_expect_assume */
.shaderExpectAssume = true,
};
}

View file

@ -142,6 +142,7 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev)
/* KHR */
VkPhysicalDeviceShaderClockFeaturesKHR shader_clock;
VkPhysicalDeviceShaderExpectAssumeFeaturesKHR expect_assume;
/* EXT */
VkPhysicalDeviceBorderColorSwizzleFeaturesEXT border_color_swizzle;
@ -244,6 +245,7 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev)
/* KHR */
VN_ADD_PNEXT_EXT(feats2, SHADER_CLOCK_FEATURES_KHR, local_feats.shader_clock, exts->KHR_shader_clock);
VN_ADD_PNEXT_EXT(feats2, SHADER_EXPECT_ASSUME_FEATURES_KHR, local_feats.expect_assume, exts->KHR_shader_expect_assume);
/* EXT */
VN_ADD_PNEXT_EXT(feats2, BORDER_COLOR_SWIZZLE_FEATURES_EXT, local_feats.border_color_swizzle, exts->EXT_border_color_swizzle);
@ -1122,6 +1124,7 @@ vn_physical_device_get_passthrough_extensions(
.KHR_pipeline_library = true,
.KHR_push_descriptor = true,
.KHR_shader_clock = true,
.KHR_shader_expect_assume = true,
/* EXT */
.EXT_border_color_swizzle = true,