Re: [Mesa-dev] [PATCH 2/2] st/mesa: handle GL_UNSIGNED_INT64_ARB in st_pipe_vertex_format
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
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
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
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
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
On 25.05.2018 23:03, Marek Olšák wrote: From: Marek OlšákBindless 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