[Mesa-dev] [PATCH] anv/pipeline: Move multiple shaders/module finishme

Jason Ekstrand jason at jlekstrand.net
Fri Nov 4 17:06:41 UTC 2016


I'm pretty sure we can actually just delete the finishme.  There are CTS
tests that do multiple shaders per module and we pass them.
--Jason

On Fri, Nov 4, 2016 at 8:34 AM, Robert Bragg <robert at sixbynine.org> wrote:

> The heuristic expecting the entrypoint to be named 'main' was causing
> false warnings for modules with only a single shader that happen to use
> another name. We now count entrypoints before triggering this warning.
>
> Signed-off-by: Robert Bragg <robert at sixbynine.org>
> ---
>  src/compiler/spirv/spirv_to_nir.c | 6 ++++++
>  src/compiler/spirv/vtn_private.h  | 1 +
>  src/intel/vulkan/anv_pipeline.c   | 4 ----
>  3 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/src/compiler/spirv/spirv_to_nir.c
> b/src/compiler/spirv/spirv_to_nir.c
> index 9c5d331..6adeaa6 100644
> --- a/src/compiler/spirv/spirv_to_nir.c
> +++ b/src/compiler/spirv/spirv_to_nir.c
> @@ -2507,6 +2507,8 @@ vtn_handle_preamble_instruction(struct vtn_builder
> *b, SpvOp opcode,
>        unsigned name_words;
>        entry_point->name = vtn_string_literal(b, &w[3], count - 3,
> &name_words);
>
> +      b->n_entry_points++;
> +
>        if (strcmp(entry_point->name, b->entry_point_name) != 0 ||
>            stage_for_execution_model(w[1]) != b->entry_point_stage)
>           break;
> @@ -2995,6 +2997,10 @@ spirv_to_nir(const uint32_t *words, size_t
> word_count,
>        return NULL;
>     }
>
> +   if (b->n_entry_points > 1) {
> +      vtn_warn("FINISHME: Multiple shaders per module not really
> supported");
> +   }
> +
>     b->shader = nir_shader_create(NULL, stage, options, NULL);
>
>     /* Set shader info defaults */
> diff --git a/src/compiler/spirv/vtn_private.h b/src/compiler/spirv/vtn_
> private.h
> index 6f34f09..5746898 100644
> --- a/src/compiler/spirv/vtn_private.h
> +++ b/src/compiler/spirv/vtn_private.h
> @@ -377,6 +377,7 @@ struct vtn_builder {
>     gl_shader_stage entry_point_stage;
>     const char *entry_point_name;
>     struct vtn_value *entry_point;
> +   int n_entry_points;
>     bool origin_upper_left;
>     bool pixel_center_integer;
>
> diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_
> pipeline.c
> index 0aac711..9600cd3 100644
> --- a/src/intel/vulkan/anv_pipeline.c
> +++ b/src/intel/vulkan/anv_pipeline.c
> @@ -90,10 +90,6 @@ anv_shader_compile_to_nir(struct anv_device *device,
>                            gl_shader_stage stage,
>                            const VkSpecializationInfo *spec_info)
>  {
> -   if (strcmp(entrypoint_name, "main") != 0) {
> -      anv_finishme("Multiple shaders per module not really supported");
> -   }
> -
>     const struct brw_compiler *compiler =
>        device->instance->physicalDevice.compiler;
>     const nir_shader_compiler_options *nir_options =
> --
> 2.10.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161104/e9819b31/attachment.html>


More information about the mesa-dev mailing list