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