[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