[Mesa-dev] [PATCH] spirv: Builtin Layer is an input for fragment shaders
Jason Ekstrand
jason at jlekstrand.net
Fri Dec 2 21:24:16 UTC 2016
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
On Fri, Dec 2, 2016 at 5:16 AM, Iago Toral Quiroga <itoral at igalia.com>
wrote:
> This change makes it so we emit a load_input intrinsic when Layer
> is read in a fragment shader.
> ---
>
> Even with this, layered rendering does not seem to work in the Vulkan
> driver, so there is something else that is broken. We are probably
> not mapping the Layer input correctly somewhere.
>
I'm not sure how fragment shader layers work in GL today. I did recently
add a NIR intrinsic for layer_id and hook it up in the FS backend. We can
probably just plumb that through. It would be good to check GL first
though.
--Jason
> src/compiler/spirv/vtn_variables.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_
> variables.c
> index 14366dc..c6d73a7 100644
> --- a/src/compiler/spirv/vtn_variables.c
> +++ b/src/compiler/spirv/vtn_variables.c
> @@ -819,7 +819,12 @@ vtn_get_builtin_location(struct vtn_builder *b,
> break;
> case SpvBuiltInLayer:
> *location = VARYING_SLOT_LAYER;
> - *mode = nir_var_shader_out;
> + if (b->shader->stage == MESA_SHADER_FRAGMENT)
> + *mode = nir_var_shader_in;
> + else if (b->shader->stage == MESA_SHADER_GEOMETRY)
> + *mode = nir_var_shader_out;
> + else
> + unreachable("invalid stage for SpvBuiltInLayer");
> break;
> case SpvBuiltInViewportIndex:
> *location = VARYING_SLOT_VIEWPORT;
> --
> 2.7.4
>
> _______________________________________________
> 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/20161202/c1d09add/attachment.html>
More information about the mesa-dev
mailing list