On 11/5/17 4:48 PM, Ilia Mirkin wrote: > This enables std430-style packing for UBOs which aren't otherwise marked > as std140. > > There might be small register lifetime changes as a result of removed > duplicate loads in some cases, but this seems worth it overall.
A before/after shader-db run would be nice to see. Reviewed-by: Tobias Klausmann <[email protected]> > > Signed-off-by: Ilia Mirkin <[email protected]> > --- > src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 2 ++ > src/gallium/drivers/nouveau/nv50/nv50_screen.c | 2 +- > src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 2 +- > 3 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > index 34351dab518..dfddffc89da 100644 > --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > @@ -403,6 +403,7 @@ static nv50_ir::DataFile translateFile(uint file) > { > switch (file) { > case TGSI_FILE_CONSTANT: return nv50_ir::FILE_MEMORY_CONST; > + case TGSI_FILE_CONSTBUF: return nv50_ir::FILE_MEMORY_CONST; > case TGSI_FILE_INPUT: return nv50_ir::FILE_SHADER_INPUT; > case TGSI_FILE_OUTPUT: return nv50_ir::FILE_SHADER_OUTPUT; > case TGSI_FILE_TEMPORARY: return nv50_ir::FILE_GPR; > @@ -2628,6 +2629,7 @@ Converter::handleLOAD(Value *dst0[4]) > > switch (tgsi.getSrc(0).getFile()) { > case TGSI_FILE_BUFFER: > + case TGSI_FILE_CONSTBUF: > case TGSI_FILE_MEMORY: > for (c = 0; c < 4; ++c) { > if (!dst0[c]) > diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c > b/src/gallium/drivers/nouveau/nv50/nv50_screen.c > index 2066cf3f6e1..5ee5a26b652 100644 > --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c > +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c > @@ -202,6 +202,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum > pipe_cap param) > case PIPE_CAP_TGSI_CLOCK: > case PIPE_CAP_CAN_BIND_CONST_BUFFER_AS_VERTEX: > case PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION: > + case PIPE_CAP_LOAD_CONSTBUF: > return 1; > case PIPE_CAP_SEAMLESS_CUBE_MAP: > return 1; /* class_3d >= NVA0_3D_CLASS; */ > @@ -275,7 +276,6 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum > pipe_cap param) > case PIPE_CAP_NIR_SAMPLERS_AS_DEREF: > case PIPE_CAP_QUERY_SO_OVERFLOW: > case PIPE_CAP_MEMOBJ: > - case PIPE_CAP_LOAD_CONSTBUF: > case PIPE_CAP_TGSI_ANY_REG_AS_ADDRESS: > case PIPE_CAP_TILE_RASTER_ORDER: > case PIPE_CAP_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: > diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > index d62a5552536..3544afe044b 100644 > --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > @@ -257,6 +257,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum > pipe_cap param) > case PIPE_CAP_COMPUTE: > case PIPE_CAP_CAN_BIND_CONST_BUFFER_AS_VERTEX: > case PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION: > + case PIPE_CAP_LOAD_CONSTBUF: > return 1; > case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE: > return (class_3d >= NVE4_3D_CLASS) ? 1 : 0; > @@ -304,7 +305,6 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum > pipe_cap param) > case PIPE_CAP_NIR_SAMPLERS_AS_DEREF: > case PIPE_CAP_QUERY_SO_OVERFLOW: > case PIPE_CAP_MEMOBJ: > - case PIPE_CAP_LOAD_CONSTBUF: > case PIPE_CAP_TGSI_ANY_REG_AS_ADDRESS: > case PIPE_CAP_TILE_RASTER_ORDER: > case PIPE_CAP_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
