[Mesa-dev] [PATCH] spirv: Fix loading an entire block at once.

Jason Ekstrand jason at jlekstrand.net
Sat Dec 9 06:13:28 UTC 2017


On Fri, Dec 8, 2017 at 9:36 AM, Emil Velikov <emil.l.velikov at gmail.com>
wrote:

> On 3 December 2017 at 14:40, Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
> wrote:
> > There is no chain, so  checking the length ends with a SEGFAULT.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103579
> > Cc: <mesa-stable at lists.freedesktop.org>
> I'm not 100% sure if a missing chain does not hint to an issue elsewhere?
>
> Patch does what it says on the tin - I would use something simpler (as
> below), but regardless
> Reviewed-by: Emil Velikov <emil.velikov at collabora.com>
>
>
> > ---
> >  src/compiler/spirv/vtn_variables.c | 58 ++++++++++++++++++++----------
> --------
> >  1 file changed, 30 insertions(+), 28 deletions(-)
> >
> > diff --git a/src/compiler/spirv/vtn_variables.c
> b/src/compiler/spirv/vtn_variables.c
> > index c57f5541319..242f4f916aa 100644
> > --- a/src/compiler/spirv/vtn_variables.c
> > +++ b/src/compiler/spirv/vtn_variables.c
> > @@ -518,35 +518,37 @@ vtn_pointer_to_offset(struct vtn_builder *b,
> struct vtn_pointer *ptr,
> >     *index_out = get_vulkan_resource_index(b, ptr, &type, &idx);
> >
> >     nir_ssa_def *offset = nir_imm_int(&b->nb, 0);
>
> +   if (!ptr->chain) {
> +      return;
>

That doesn't quite work.  There's another out-parameter we have to set.

You could do something weird with the for loop such as

for (; ptr->chain && idx < ptr->chain->length; i++)

Either way,

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

One of these days, we should probably just make push constants work like
all of the other direct-offset things.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171208/e4d9dab0/attachment.html>


More information about the mesa-dev mailing list