[Mesa-dev] [PATCH 2/6] spirv/radv: add AMD_gcn_shader capability, remove current extensions
Bas Nieuwenhuizen
bas at basnieuwenhuizen.nl
Thu Mar 15 10:01:07 UTC 2018
On Thu, Mar 15, 2018 at 10:46 AM, Daniel Schürmann
<daniel.schuermann at campus.tu-berlin.de> wrote:
> With AMD_gcn_shader renamed to gcn_shader, this patch is
>
> Reviewed-by: Daniel Schürmann <daniel.schuermann at campus.tu-berlin.de>
Note that the mailaddress is mangled a bit.
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
>
> On 08.03.2018 16:00, Alejandro Piñeiro wrote:
>
> So now, during spirv_to_nir, it uses the capability instead of the
> extension. Note that we are really doing here is treating
> SPV_AMD_gcn_shader as other supported extensions. SPV_AMD_gcn_shader
> is not the first SPV extension supported. For example, the capability
> draw_parameters infers if the extension SPV_KHR_shader_draw_parameters
> is supported or not.
>
> This could be seen as counter-intuitive, and that it would be easier
> to define which extensions are supported, and based our checks on
> that, but we need to take into account that some capabilities are
> optional from core, and others came from new extensions.
>
> Also this commit would make the implementation of ARB_spirv_extensions
> easier.
> ---
>
> Note that I'm aware that this can be somewhat confusing at first. But
> most of the SPV extensions defines a new capability, so it makes sense
> to add one, and compute the other based on that. As I mention on a
> different patch on this series, it was easier to compute extensions
> from capabilities, instead of the other way around, because core
> SPIR-V defines optional capabilities without the need of an extension.
>
> Having said so, I have read the SPV_AMD_gcn_shader, and it doesn't
> define a new capability (the first one I see that doesn't do that), so
> I'm somewhat forcing that here.
>
>
> src/amd/vulkan/radv_shader.c | 2 --
> src/compiler/shader_info.h | 4 ----
> src/compiler/spirv/nir_spirv.h | 1 -
> src/compiler/spirv/spirv_to_nir.c | 2 +-
> 4 files changed, 1 insertion(+), 8 deletions(-)
>
> diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
> index 85672e600d7..46017290654 100644
> --- a/src/amd/vulkan/radv_shader.c
> +++ b/src/amd/vulkan/radv_shader.c
> @@ -214,8 +214,6 @@ radv_shader_compile_to_nir(struct radv_device *device,
> .multiview = true,
> .subgroup_basic = true,
> .variable_pointers = true,
> - },
> - .exts = {
> .AMD_gcn_shader = true,
> },
> };
> diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h
> index b1e200070f7..502b7901370 100644
> --- a/src/compiler/shader_info.h
> +++ b/src/compiler/shader_info.h
> @@ -51,10 +51,6 @@ struct spirv_supported_capabilities {
> bool subgroup_quad;
> bool subgroup_shuffle;
> bool subgroup_vote;
> -};
> -
> -/* The supported extensions which add extended instructions */
> -struct spirv_supported_extensions {
> bool AMD_gcn_shader;
> };
>
> diff --git a/src/compiler/spirv/nir_spirv.h b/src/compiler/spirv/nir_spirv.h
> index 87d4120c380..d2766abb7f9 100644
> --- a/src/compiler/spirv/nir_spirv.h
> +++ b/src/compiler/spirv/nir_spirv.h
> @@ -60,7 +60,6 @@ struct spirv_to_nir_options {
> bool lower_workgroup_access_to_offsets;
>
> struct spirv_supported_capabilities caps;
> - struct spirv_supported_extensions exts;
>
> struct {
> void (*func)(void *private_data,
> diff --git a/src/compiler/spirv/spirv_to_nir.c
> b/src/compiler/spirv/spirv_to_nir.c
> index 66b87c049bb..6aa4a4d6b6f 100644
> --- a/src/compiler/spirv/spirv_to_nir.c
> +++ b/src/compiler/spirv/spirv_to_nir.c
> @@ -374,7 +374,7 @@ vtn_handle_extension(struct vtn_builder *b, SpvOp
> opcode,
> if (strcmp((const char *)&w[2], "GLSL.std.450") == 0) {
> val->ext_handler = vtn_handle_glsl450_instruction;
> } else if ((strcmp((const char *)&w[2], "SPV_AMD_gcn_shader") == 0)
> - && (b->options && b->options->exts.AMD_gcn_shader)) {
> + && (b->options && b->options->caps.AMD_gcn_shader)) {
> val->ext_handler = vtn_handle_amd_gcn_shader_instruction;
> } else {
> vtn_fail("Unsupported extension");
>
>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list