spirv,radv,anv: implement no-op VK_GOOGLE_user_type
This extension only allows HLSL shader compilers to optionally embed unambiguous type information which can be safely ignored by the driver. This fixes a crash with the recent Vulkan backend of Path Of Exile (it uses the extension without checking if it's supported). Cc: <mesa-stable@lists.freedesktop.org> Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Tested-by: Edmondo Tommasina <edmondo.tommasina@gmail.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5237>
This commit is contained in:
@@ -3,3 +3,4 @@ VK_AMD_texture_gather_bias_lod on RADV.
|
|||||||
VK_EXT_private_data on ANV and RADV.
|
VK_EXT_private_data on ANV and RADV.
|
||||||
VK_EXT_custom_border_color on RADV.
|
VK_EXT_custom_border_color on RADV.
|
||||||
VK_EXT_pipeline_creation_cache_control on RADV.
|
VK_EXT_pipeline_creation_cache_control on RADV.
|
||||||
|
VK_GOOGLE_user_type on ANV and RADV.
|
||||||
|
@@ -182,6 +182,7 @@ EXTENSIONS = [
|
|||||||
Extension('VK_AMD_texture_gather_bias_lod', 1, True),
|
Extension('VK_AMD_texture_gather_bias_lod', 1, True),
|
||||||
Extension('VK_GOOGLE_decorate_string', 1, True),
|
Extension('VK_GOOGLE_decorate_string', 1, True),
|
||||||
Extension('VK_GOOGLE_hlsl_functionality1', 1, True),
|
Extension('VK_GOOGLE_hlsl_functionality1', 1, True),
|
||||||
|
Extension('VK_GOOGLE_user_type', 1, True),
|
||||||
Extension('VK_NV_compute_shader_derivatives', 1, True),
|
Extension('VK_NV_compute_shader_derivatives', 1, True),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@@ -859,6 +859,7 @@ struct_member_decoration_cb(struct vtn_builder *b,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SpvDecorationUserSemantic:
|
case SpvDecorationUserSemantic:
|
||||||
|
case SpvDecorationUserTypeGOOGLE:
|
||||||
/* User semantic decorations can safely be ignored by the driver. */
|
/* User semantic decorations can safely be ignored by the driver. */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1040,6 +1041,10 @@ type_decoration_cb(struct vtn_builder *b,
|
|||||||
spirv_decoration_to_string(dec->decoration));
|
spirv_decoration_to_string(dec->decoration));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SpvDecorationUserTypeGOOGLE:
|
||||||
|
/* User semantic decorations can safely be ignored by the driver. */
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
vtn_fail_with_decoration("Unhandled decoration", dec->decoration);
|
vtn_fail_with_decoration("Unhandled decoration", dec->decoration);
|
||||||
}
|
}
|
||||||
|
@@ -1677,6 +1677,7 @@ apply_var_decoration(struct vtn_builder *b,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SpvDecorationUserSemantic:
|
case SpvDecorationUserSemantic:
|
||||||
|
case SpvDecorationUserTypeGOOGLE:
|
||||||
/* User semantic decorations can safely be ignored by the driver. */
|
/* User semantic decorations can safely be ignored by the driver. */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@@ -161,6 +161,7 @@ EXTENSIONS = [
|
|||||||
Extension('VK_ANDROID_native_buffer', 7, 'ANDROID'),
|
Extension('VK_ANDROID_native_buffer', 7, 'ANDROID'),
|
||||||
Extension('VK_GOOGLE_decorate_string', 1, True),
|
Extension('VK_GOOGLE_decorate_string', 1, True),
|
||||||
Extension('VK_GOOGLE_hlsl_functionality1', 1, True),
|
Extension('VK_GOOGLE_hlsl_functionality1', 1, True),
|
||||||
|
Extension('VK_GOOGLE_user_type', 1, True),
|
||||||
Extension('VK_INTEL_performance_query', 1, 'device->perf && device->perf->i915_perf_version >= 3'),
|
Extension('VK_INTEL_performance_query', 1, 'device->perf && device->perf->i915_perf_version >= 3'),
|
||||||
Extension('VK_INTEL_shader_integer_functions2', 1, 'device->info.gen >= 8'),
|
Extension('VK_INTEL_shader_integer_functions2', 1, 'device->info.gen >= 8'),
|
||||||
Extension('VK_NV_compute_shader_derivatives', 1, True),
|
Extension('VK_NV_compute_shader_derivatives', 1, True),
|
||||||
|
Reference in New Issue
Block a user