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

2018-05-28 Thread Marek Olšák
On Mon, May 28, 2018 at 3:21 PM, Ilia Mirkin  wrote:

> On Mon, May 28, 2018 at 3:12 PM, Marek Olšák  wrote:
> > On Mon, May 28, 2018 at 3:05 PM, Ilia Mirkin 
> wrote:
> >>
> >> On Mon, May 28, 2018 at 2:48 PM, Marek Olšák  wrote:
> >> > On Mon, May 28, 2018 at 5:29 AM, Nicolai Hähnle 
> >> > wrote:
> >> >>
> >> >> On 25.05.2018 23:03, Marek Olšák wrote:
> >> >>>
> >> >>> From: Marek Olšák 
> >> >>>
> >> >>> 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 
> >> >>> ---
> >> >>>   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
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2018-05-28 Thread Ilia Mirkin
On Mon, May 28, 2018 at 3:12 PM, Marek Olšák  wrote:
> On Mon, May 28, 2018 at 3:05 PM, Ilia Mirkin  wrote:
>>
>> On Mon, May 28, 2018 at 2:48 PM, Marek Olšák  wrote:
>> > On Mon, May 28, 2018 at 5:29 AM, Nicolai Hähnle 
>> > wrote:
>> >>
>> >> On 25.05.2018 23:03, Marek Olšák wrote:
>> >>>
>> >>> From: Marek Olšák 
>> >>>
>> >>> 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 
>> >>> ---
>> >>>   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.

  -ilia
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2018-05-28 Thread Marek Olšák
On Mon, May 28, 2018 at 3:05 PM, Ilia Mirkin  wrote:

> On Mon, May 28, 2018 at 2:48 PM, Marek Olšák  wrote:
> > On Mon, May 28, 2018 at 5:29 AM, Nicolai Hähnle 
> wrote:
> >>
> >> On 25.05.2018 23:03, Marek Olšák wrote:
> >>>
> >>> From: Marek Olšák 
> >>>
> >>> 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 
> >>> ---
> >>>   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.

Marek
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2018-05-28 Thread Ilia Mirkin
On Mon, May 28, 2018 at 2:48 PM, Marek Olšák  wrote:
> On Mon, May 28, 2018 at 5:29 AM, Nicolai Hähnle  wrote:
>>
>> On 25.05.2018 23:03, Marek Olšák wrote:
>>>
>>> From: Marek Olšák 
>>>
>>> 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 
>>> ---
>>>   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
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2018-05-28 Thread Marek Olšák
On Mon, May 28, 2018 at 5:29 AM, Nicolai Hähnle  wrote:

> On 25.05.2018 23:03, Marek Olšák wrote:
>
>> From: Marek Olšák 
>>
>> 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 
>> ---
>>   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.

Marek
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2018-05-28 Thread Nicolai Hähnle

On 25.05.2018 23:03, Marek Olšák wrote:

From: Marek Olšák 

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 
---
  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?

Cheers,
Nicolai



 }
  
 index = integer*2 + normalized;

 assert(index <= 2);
 assert(type >= GL_BYTE && type <= GL_FIXED);
 return vertex_formats[type - GL_BYTE][index][size-1];
  }
  
  static void init_velement(struct pipe_vertex_element *velement,

int src_offset, int format,




--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev