[Mesa-dev] [PATCH 2/2] st/mesa: fix assertion failures with GL_UNSIGNED_INT64_ARB (v2)

Ilia Mirkin imirkin at alum.mit.edu
Tue May 29 01:15:15 UTC 2018


Series is Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

Thanks for tracking down why this wasn't working cleanly in the first
place. This should make the NV int64 attrib extension much simpler.

On Mon, May 28, 2018 at 9:10 PM, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> Bindless texture handles can be passed via vertex attribs using this type.
> They use the double codepath, so don't use st_pipe_vertex_format.
>
> Cc: 18.0 18.1 <mesa-stable at lists.freedesktop.org>
> ---
>  src/mesa/state_tracker/st_atom_array.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/state_tracker/st_atom_array.c b/src/mesa/state_tracker/st_atom_array.c
> index 9a0935e21a5..e4fc19eb5e2 100644
> --- a/src/mesa/state_tracker/st_atom_array.c
> +++ b/src/mesa/state_tracker/st_atom_array.c
> @@ -317,21 +317,20 @@ static void init_velement(struct pipe_vertex_element *velement,
>     velement->vertex_buffer_index = vbo_index;
>     assert(velement->src_format);
>  }
>
>  static void init_velement_lowered(const struct st_vertex_program *vp,
>                                    struct pipe_vertex_element *velements,
>                                    const struct gl_array_attributes *attrib,
>                                    int src_offset, int instance_divisor,
>                                    int vbo_index, int idx)
>  {
> -   const unsigned format = st_pipe_vertex_format(attrib);
>     const GLubyte nr_components = attrib->Size;
>
>     if (attrib->Doubles) {
>        int lower_format;
>
>        if (nr_components < 2)
>           lower_format = PIPE_FORMAT_R32G32_UINT;
>        else
>           lower_format = PIPE_FORMAT_R32G32B32A32_UINT;
>
> @@ -351,20 +350,22 @@ static void init_velement_lowered(const struct st_vertex_program *vp,
>                          lower_format, instance_divisor, vbo_index);
>           } else {
>              /* The values here are undefined. Fill in some conservative
>               * dummy values.
>               */
>              init_velement(&velements[idx], src_offset, PIPE_FORMAT_R32G32_UINT,
>                            instance_divisor, vbo_index);
>           }
>        }
>     } else {
> +      const unsigned format = st_pipe_vertex_format(attrib);
> +
>        init_velement(&velements[idx], src_offset,
>                      format, instance_divisor, vbo_index);
>     }
>  }
>
>  static void
>  set_vertex_attribs(struct st_context *st,
>                     struct pipe_vertex_buffer *vbuffers,
>                     unsigned num_vbuffers,
>                     struct pipe_vertex_element *velements,
> --
> 2.17.0
>
> _______________________________________________
> 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