[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