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

Ilia Mirkin imirkin at alum.mit.edu
Mon May 28 19:05:02 UTC 2018


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.

  -ilia


More information about the mesa-dev mailing list