[Mesa-dev] [PATCH 2/2] st/mesa: handle GL_UNSIGNED_INT64_ARB in st_pipe_vertex_format

Marek Olšák maraeo at gmail.com
Mon May 28 23:46:45 UTC 2018


On Mon, May 28, 2018 at 3:21 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:

> On Mon, May 28, 2018 at 3:12 PM, Marek Olšák <maraeo at gmail.com> wrote:
> > On Mon, May 28, 2018 at 3:05 PM, Ilia Mirkin <imirkin at alum.mit.edu>
> wrote:
> >>
> >> On Mon, May 28, 2018 at 2:48 PM, Marek Olšák <maraeo at gmail.com> wrote:
> >> > On Mon, May 28, 2018 at 5:29 AM, Nicolai Hähnle <nhaehnle at gmail.com>
> >> > wrote:
> >> >>
> >> >> On 25.05.2018 23:03, Marek Olšák wrote:
> >> >>>
> >> >>> From: Marek Olšák <marek.olsak at amd.com>
> >> >>>
> >> >>> Bindless texture handles can be passed via vertex attribs using this
> >> >>> type.
> >> >>> This fixes a bunch of bindless piglit tests on radeonsi.
> >> >>>
> >> >>> Cc: 18.0 18.1 <mesa-stable at lists.freedesktop.org>
> >> >>> ---
> >> >>>   src/mesa/state_tracker/st_atom_array.c | 3 +++
> >> >>>   1 file changed, 3 insertions(+)
> >> >>>
> >> >>> diff --git a/src/mesa/state_tracker/st_atom_array.c
> >> >>> b/src/mesa/state_tracker/st_atom_array.c
> >> >>> index 9a0935e21a5..76dc81975c8 100644
> >> >>> --- a/src/mesa/state_tracker/st_atom_array.c
> >> >>> +++ b/src/mesa/state_tracker/st_atom_array.c
> >> >>> @@ -292,20 +292,23 @@ st_pipe_vertex_format(const struct
> >> >>> gl_array_attributes *attrib)
> >> >>>         assert(size == 3 && !integer && format == GL_RGBA);
> >> >>>         return PIPE_FORMAT_R11G11B10_FLOAT;
> >> >>>        case GL_UNSIGNED_BYTE:
> >> >>>         if (format == GL_BGRA) {
> >> >>>            /* this is an odd-ball case */
> >> >>>            assert(normalized);
> >> >>>            return PIPE_FORMAT_B8G8R8A8_UNORM;
> >> >>>         }
> >> >>>         break;
> >> >>> +
> >> >>> +   case GL_UNSIGNED_INT64_ARB:
> >> >>> +      return PIPE_FORMAT_R32G32_UINT;
> >> >>
> >> >>
> >> >> Is it not possible to have vectors of uint64 as attributes?
> >> >
> >> >
> >> > I don't think we support uint64 in shaders. We only support bindless
> >> > samplers, which can't be vectors.
> >>
> >> While we do support them in theory [i64vecN attributes], in practice
> >> they get lowered in init_velement_lowered (ideally attrib->Doubles is
> >> set there). Given that the 64-bit bindless attributes have the same
> >> counting issues, I think they should go through the same lowering
> >> logic, even though in practice it won't matter (since it always fits
> >> into a single attribute).
> >>
> >> I did do a bit of tracing, and it seemed like that should already work
> >> with the current code, but clearly it doesn't for some reason.
> >>
> >> This patch seems like a workaround, although in practice, it will work
> >> too.
> >
> >
> > Vector uint64 vertex attributes are only supported with the NV extension.
>
> Indeed you're right -- I thought ARB_gpu_shader_int64 would support
> them, but I had misread it earlier. However the remainder of my
> arguments applies, I think.
>
> _mesa_VertexAttribLPointer sets doubles to true, so it should already work.
>

It doesn't work with immediate mode (stride=0). I'll send out a new series.

Marek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180528/a0b06279/attachment.html>


More information about the mesa-dev mailing list