On Tuesday 19 January 2016, Nicolai Hähnle wrote: > On 19.01.2016 10:45, Fredrik Höglund wrote: > > On Tuesday 19 January 2016, Nicolai Hähnle wrote: > >> > >> On 18.01.2016 18:50, Ilia Mirkin wrote: > >>> On Mon, Jan 18, 2016 at 5:22 PM, Nicolai Hähnle <nhaeh...@gmail.com> > >>> wrote: > >>>> diff --git a/src/gallium/drivers/nouveau/nv30/nv30_screen.c > >>>> b/src/gallium/drivers/nouveau/nv30/nv30_screen.c > >>>> index 933330f..1ae557d 100644 > >>>> --- a/src/gallium/drivers/nouveau/nv30/nv30_screen.c > >>>> +++ b/src/gallium/drivers/nouveau/nv30/nv30_screen.c > >>>> @@ -75,6 +75,8 @@ nv30_screen_get_param(struct pipe_screen *pscreen, > >>>> enum pipe_cap param) > >>>> return 1; > >>>> case PIPE_CAP_MAX_VERTEX_ATTRIB_STRIDE: > >>>> return 2048; > >>>> + case PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY: > >>>> + return 0; > >>>> /* supported capabilities */ > >>>> case PIPE_CAP_TWO_SIDED_STENCIL: > >>>> case PIPE_CAP_ANISOTROPIC_FILTER: > >>>> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c > >>>> b/src/gallium/drivers/nouveau/nv50/nv50_screen.c > >>>> index 712835c..99d7ae6 100644 > >>>> --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c > >>>> +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c > >>>> @@ -121,6 +121,8 @@ nv50_screen_get_param(struct pipe_screen *pscreen, > >>>> enum pipe_cap param) > >>>> return 256; > >>>> case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT: > >>>> return 1; /* 256 for binding as RT, but that's not possible in > >>>> GL */ > >>>> + case PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY: > >>>> + return 0; > >>>> case PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT: > >>>> return NOUVEAU_MIN_BUFFER_MAP_ALIGN; > >>>> case PIPE_CAP_MAX_VIEWPORTS: > >>>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > >>>> b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > >>>> index 7211df9..612f1c0 100644 > >>>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > >>>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > >>>> @@ -111,6 +111,8 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, > >>>> enum pipe_cap param) > >>>> return 256; > >>>> case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT: > >>>> return 1; /* 256 for binding as RT, but that's not possible in > >>>> GL */ > >>>> + case PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY: > >>>> + return 0; > >>>> case PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT: > >>>> return NOUVEAU_MIN_BUFFER_MAP_ALIGN; > >>>> case PIPE_CAP_MAX_VIEWPORTS: > >>> > >>> I would greatly appreciate it if you could stick these into the > >>> "unsupported" list of caps -- each of nv30/nv50/nvc0 should have one, > >>> of varying length. (Same applies to the other cap you're adding.) > >> > >> Do you really want that? I actually put them aside on purpose, because > >> the somewhat unusual sense of the cap means that the return value of 1 > >> is something unsupported. Of course, one might argue that I should have > >> changed the boolean sense and renamed it to something like > >> PIPE_CAP_BUFFER_SAMPLER_VIEW_SWIZZLES. > > > > That is actually the name I was going to use at first (minus the s). > > But then it occurred to me that it would be misleading, since this > > is not about pipe_sampler_view::swizzle_r/g/b/a. > > It's about both the swizzles and the formats, isn't it? If it were only > the formats, the deficiency could be fixed by using the swizzles.
Yeah, it's about both. The whole issue could probably be avoided by rewriting the texture-buffer implementation in r600g to use texture fetches instead of vertex fetches. But it was easier to just work around it in the state tracker. Fredrik _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev