[Mesa-dev] [PATCH 4/5] nvc0: avoid using magic numbers for the uniform_bo offsets
Samuel Pitoiset
samuel.pitoiset at gmail.com
Thu Mar 17 08:44:02 UTC 2016
On 03/17/2016 01:02 AM, Pierre Moreau wrote:
> Hello,
>
> On 09:55 PM - Mar 15 2016, Samuel Pitoiset wrote:
>> Instead make use of constants to improve readability.
>>
>> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
>> ---
>> src/gallium/drivers/nouveau/nvc0/nvc0_compute.c | 13 +++++-----
>> src/gallium/drivers/nouveau/nvc0/nvc0_context.h | 22 +++++++++++++++++
>> src/gallium/drivers/nouveau/nvc0/nvc0_program.c | 12 +++++-----
>> src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 12 +++++-----
>> src/gallium/drivers/nouveau/nvc0/nvc0_screen.h | 2 +-
>> .../drivers/nouveau/nvc0/nvc0_state_validate.c | 28 ++++++++++++----------
>> src/gallium/drivers/nouveau/nvc0/nvc0_tex.c | 9 ++++---
>> src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c | 14 ++++++-----
>> 8 files changed, 69 insertions(+), 43 deletions(-)
>>
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c b/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c
>> index ffbb16f..6aaa7ce 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c
>> @@ -153,7 +153,7 @@ nvc0_compute_validate_constbufs(struct nvc0_context *nvc0)
>>
>> if (nvc0->constbuf[s][i].user) {
>> struct nouveau_bo *bo = nvc0->screen->uniform_bo;
>> - const unsigned base = s << 16;
>> + const unsigned base = NVC0_CB_USR_INFO(s);
>> const unsigned size = nvc0->constbuf[s][0].size;
>> assert(i == 0); /* we really only want OpenGL uniforms here */
>> assert(nvc0->constbuf[s][0].u.data);
>> @@ -207,8 +207,8 @@ nvc0_compute_validate_driverconst(struct nvc0_context *nvc0)
>>
>> BEGIN_NVC0(push, NVC0_CP(CB_SIZE), 3);
>> PUSH_DATA (push, 1024);
>> - PUSH_DATAh(push, screen->uniform_bo->offset + (6 << 16) + (5 << 10));
>> - PUSH_DATA (push, screen->uniform_bo->offset + (6 << 16) + (5 << 10));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(5));
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(5));
>> BEGIN_NVC0(push, NVC0_CP(CB_BIND), 1);
>> PUSH_DATA (push, (15 << 8) | 1);
>>
>> @@ -219,15 +219,16 @@ static void
>> nvc0_compute_validate_buffers(struct nvc0_context *nvc0)
>> {
>> struct nouveau_pushbuf *push = nvc0->base.pushbuf;
>> + struct nvc0_screen *screen = nvc0->screen;
>
> Why define `screen` and not `offset`? You would *save* more characters. It's
> not like you are reusing screen otherwise in this function. Sure the same
> pattern comes back multiple times in various functions, but you should be able
> to do the same factorisation in those as well.
Because I prefer to see PUSH_DATA with uniform_bo with git grep. :-)
That might help.
>
>> const int s = 5;
>> int i;
>>
>> BEGIN_NVC0(push, NVC0_CP(CB_SIZE), 3);
>> PUSH_DATA (push, 1024);
>> - PUSH_DATAh(push, nvc0->screen->uniform_bo->offset + (6 << 16) + (s << 10));
>> - PUSH_DATA (push, nvc0->screen->uniform_bo->offset + (6 << 16) + (s << 10));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));
>> BEGIN_1IC0(push, NVC0_CP(CB_POS), 1 + 4 * NVC0_MAX_BUFFERS);
>> - PUSH_DATA (push, 512);
>> + PUSH_DATA (push, NVC0_CB_AUX_BUF_INFO(0));
>>
>> for (i = 0; i < NVC0_MAX_BUFFERS; i++) {
>> if (nvc0->buffers[s][i].buffer) {
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_context.h b/src/gallium/drivers/nouveau/nvc0/nvc0_context.h
>> index 54afe88..c63d138 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_context.h
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_context.h
>> @@ -98,6 +98,28 @@
>> #define NVC0_BIND_M2MF 0
>> #define NVC0_BIND_FENCE 1
>>
>> +/* 6 user uniform buffers, at 64K each */
>> +#define NVC0_CB_USR_INFO(s) (s << 16)
>> +#define NVC0_CB_USR_SIZE (6 << 16)
>> +/* 6 driver constbuts, at 1K each */
>> +#define NVC0_CB_AUX_INFO(s) NVC0_CB_USR_SIZE + (s << 10)
>> +#define NVC0_CB_AUX_SIZE (6 << 10)
>> +/* 32 textures handles, at 1 32-bits integer each */
>> +#define NVC0_CB_AUX_TEX_INFO(i) 0x020 + (i) * 4
>> +#define NVC0_CB_AUX_TEX_SIZE (32 * 4)
>> +/* 8 user clip planes, at 4 32-bits floats each */
>> +#define NVC0_CB_AUX_UCP_INFO 0x100
>
> This one (and the following ones) seems to be placed in memory one after the
> other. Wouldn't it be better to define them relative to each other, rather than
> hardcoding the value. It blurs how they are layout in memory, and makes it more
> prone to errors if one decides to insert something in between two, or do some
> other modifications.
>
>> +#define NVC0_CB_AUX_UCP_SIZE (PIPE_MAX_CLIP_PLANES * 4 * 4)
>> +/* 8 sets of 32-bits integer pairs sample offsets */
>> +#define NVC0_CB_AUX_SAMPLE_INFO 0x180 /* FP */
>> +#define NVC0_CB_AUX_SAMPLE_SIZE (8 * 4 * 2)
>> +/* draw parameters (index bais, base instance, drawid) */
>> +#define NVC0_CB_AUX_DRAW_INFO 0x180 /* VP */
>
> What is the status of this one? Is the region from 0x180 and after considered
> as the `AUX_DRAW_INFO`, and has a subpart named as `AUX_SAMPLE_INFO`, or should
> one of those be at 0x180 and the other at 0x1c0, both with a size of 0x40?
Nope because it's different shader types, so they use a separate area in
the uniform_bo and we can reuse the same offset.
>
> Apart from these nitpicks, this is
> Acked-by: Pierre Moreau <pierre.morrow at free.fr>
>
> Pierre
>
>> +/* 32 user buffers, at 4 32-bits integers each */
>> +#define NVC0_CB_AUX_BUF_INFO(i) 0x200 + (i) * 4 * 4
>> +#define NVC0_CB_AUX_BUF_SIZE (NVC0_MAX_BUFFERS * 4 * 4)
>> +/* 4 32-bits floats for the vertex runout, put at the end */
>> +#define NVC0_CB_AUX_RUNOUT_INFO NVC0_CB_USR_SIZE + NVC0_CB_AUX_SIZE
>>
>> struct nvc0_blitctx;
>>
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
>> index 48e3475..b7c6faf 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
>> @@ -535,8 +535,8 @@ nvc0_program_translate(struct nvc0_program *prog, uint16_t chipset,
>>
>> info->io.genUserClip = prog->vp.num_ucps;
>> info->io.auxCBSlot = 15;
>> - info->io.ucpBase = 256;
>> - info->io.drawInfoBase = 256 + 128;
>> + info->io.ucpBase = NVC0_CB_AUX_UCP_INFO;
>> + info->io.drawInfoBase = NVC0_CB_AUX_DRAW_INFO;
>>
>> if (prog->type == PIPE_SHADER_COMPUTE) {
>> if (chipset >= NVISA_GK104_CHIPSET) {
>> @@ -545,17 +545,17 @@ nvc0_program_translate(struct nvc0_program *prog, uint16_t chipset,
>> info->io.suInfoBase = NVE4_CP_INPUT_SUF(0);
>> info->prop.cp.gridInfoBase = NVE4_CP_INPUT_GRID_INFO(0);
>> } else {
>> - info->io.suInfoBase = 512;
>> + info->io.suInfoBase = NVC0_CB_AUX_BUF_INFO(0);
>> }
>> info->io.msInfoCBSlot = 0;
>> info->io.msInfoBase = NVE4_CP_INPUT_MS_OFFSETS;
>> } else {
>> if (chipset >= NVISA_GK104_CHIPSET) {
>> - info->io.texBindBase = 0x20;
>> + info->io.texBindBase = NVC0_CB_AUX_TEX_INFO(0);
>> info->io.suInfoBase = 0; /* TODO */
>> }
>> - info->io.sampleInfoBase = 256 + 128;
>> - info->io.suInfoBase = 512;
>> + info->io.sampleInfoBase = NVC0_CB_AUX_SAMPLE_INFO;
>> + info->io.suInfoBase = NVC0_CB_AUX_BUF_INFO(0);
>> info->io.msInfoCBSlot = 15;
>> info->io.msInfoBase = 0; /* TODO */
>> }
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
>> index d316235..741b5ce 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
>> @@ -922,8 +922,8 @@ nvc0_screen_create(struct nouveau_device *dev)
>> for (i = 0; i < 5; ++i) {
>> BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
>> PUSH_DATA (push, 1024);
>> - PUSH_DATAh(push, screen->uniform_bo->offset + (6 << 16) + (i << 10));
>> - PUSH_DATA (push, screen->uniform_bo->offset + (6 << 16) + (i << 10));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(i));
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(i));
>> BEGIN_NVC0(push, NVC0_3D(CB_BIND(i)), 1);
>> PUSH_DATA (push, (15 << 4) | 1);
>> if (screen->eng3d->oclass < NVE4_3D_CLASS) {
>> @@ -937,8 +937,8 @@ nvc0_screen_create(struct nouveau_device *dev)
>> /* return { 0.0, 0.0, 0.0, 0.0 } for out-of-bounds vtxbuf access */
>> BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
>> PUSH_DATA (push, 256);
>> - PUSH_DATAh(push, screen->uniform_bo->offset + (6 << 16) + (6 << 10));
>> - PUSH_DATA (push, screen->uniform_bo->offset + (6 << 16) + (6 << 10));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_RUNOUT_INFO);
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_RUNOUT_INFO);
>> BEGIN_1IC0(push, NVC0_3D(CB_POS), 5);
>> PUSH_DATA (push, 0);
>> PUSH_DATAf(push, 0.0f);
>> @@ -946,8 +946,8 @@ nvc0_screen_create(struct nouveau_device *dev)
>> PUSH_DATAf(push, 0.0f);
>> PUSH_DATAf(push, 0.0f);
>> BEGIN_NVC0(push, NVC0_3D(VERTEX_RUNOUT_ADDRESS_HIGH), 2);
>> - PUSH_DATAh(push, screen->uniform_bo->offset + (6 << 16) + (6 << 10));
>> - PUSH_DATA (push, screen->uniform_bo->offset + (6 << 16) + (6 << 10));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_RUNOUT_INFO);
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_RUNOUT_INFO);
>>
>> if (screen->base.drm->version >= 0x01000101) {
>> ret = nouveau_getparam(dev, NOUVEAU_GETPARAM_GRAPH_UNITS, &value);
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.h b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.h
>> index 8487abc..46b692d 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.h
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.h
>> @@ -66,7 +66,7 @@ struct nvc0_screen {
>>
>> struct nouveau_bo *text;
>> struct nouveau_bo *parm; /* for COMPUTE */
>> - struct nouveau_bo *uniform_bo; /* for 3D */
>> + struct nouveau_bo *uniform_bo;
>> struct nouveau_bo *tls;
>> struct nouveau_bo *txc; /* TIC (offset 0) and TSC (65536) */
>> struct nouveau_bo *poly_cache;
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c b/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c
>> index c0ed5c0..9c64482 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c
>> @@ -72,6 +72,7 @@ nvc0_validate_fb(struct nvc0_context *nvc0)
>> {
>> struct nouveau_pushbuf *push = nvc0->base.pushbuf;
>> struct pipe_framebuffer_state *fb = &nvc0->framebuffer;
>> + struct nvc0_screen *screen = nvc0->screen;
>> unsigned i, ms;
>> unsigned ms_mode = NVC0_3D_MULTISAMPLE_MODE_MS1;
>> bool serialize = false;
>> @@ -183,10 +184,10 @@ nvc0_validate_fb(struct nvc0_context *nvc0)
>> ms = 1 << ms_mode;
>> BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
>> PUSH_DATA (push, 1024);
>> - PUSH_DATAh(push, nvc0->screen->uniform_bo->offset + (6 << 16) + (4 << 10));
>> - PUSH_DATA (push, nvc0->screen->uniform_bo->offset + (6 << 16) + (4 << 10));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(4));
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(4));
>> BEGIN_1IC0(push, NVC0_3D(CB_POS), 1 + 2 * ms);
>> - PUSH_DATA (push, 256 + 128);
>> + PUSH_DATA (push, NVC0_CB_AUX_SAMPLE_INFO);
>> for (i = 0; i < ms; i++) {
>> float xy[2];
>> nvc0->base.pipe.get_sample_position(&nvc0->base.pipe, ms, i, xy);
>> @@ -313,14 +314,14 @@ static inline void
>> nvc0_upload_uclip_planes(struct nvc0_context *nvc0, unsigned s)
>> {
>> struct nouveau_pushbuf *push = nvc0->base.pushbuf;
>> - struct nouveau_bo *bo = nvc0->screen->uniform_bo;
>> + struct nvc0_screen *screen = nvc0->screen;
>>
>> BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
>> PUSH_DATA (push, 1024);
>> - PUSH_DATAh(push, bo->offset + (6 << 16) + (s << 10));
>> - PUSH_DATA (push, bo->offset + (6 << 16) + (s << 10));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));
>> BEGIN_1IC0(push, NVC0_3D(CB_POS), PIPE_MAX_CLIP_PLANES * 4 + 1);
>> - PUSH_DATA (push, 256);
>> + PUSH_DATA (push, NVC0_CB_AUX_UCP_INFO);
>> PUSH_DATAp(push, &nvc0->clip.ucp[0][0], PIPE_MAX_CLIP_PLANES * 4);
>> }
>>
>> @@ -424,7 +425,7 @@ nvc0_constbufs_validate(struct nvc0_context *nvc0)
>>
>> if (nvc0->constbuf[s][i].user) {
>> struct nouveau_bo *bo = nvc0->screen->uniform_bo;
>> - const unsigned base = s << 16;
>> + const unsigned base = NVC0_CB_USR_INFO(s);
>> const unsigned size = nvc0->constbuf[s][0].size;
>> assert(i == 0); /* we really only want OpenGL uniforms here */
>> assert(nvc0->constbuf[s][0].u.data);
>> @@ -478,15 +479,16 @@ static void
>> nvc0_validate_buffers(struct nvc0_context *nvc0)
>> {
>> struct nouveau_pushbuf *push = nvc0->base.pushbuf;
>> + struct nvc0_screen *screen = nvc0->screen;
>> int i, s;
>>
>> for (s = 0; s < 5; s++) {
>> BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
>> PUSH_DATA (push, 1024);
>> - PUSH_DATAh(push, nvc0->screen->uniform_bo->offset + (6 << 16) + (s << 10));
>> - PUSH_DATA (push, nvc0->screen->uniform_bo->offset + (6 << 16) + (s << 10));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));
>> BEGIN_1IC0(push, NVC0_3D(CB_POS), 1 + 4 * NVC0_MAX_BUFFERS);
>> - PUSH_DATA (push, 512);
>> + PUSH_DATA (push, NVC0_CB_AUX_BUF_INFO(0));
>> for (i = 0; i < NVC0_MAX_BUFFERS; i++) {
>> if (nvc0->buffers[s][i].buffer) {
>> struct nv04_resource *res =
>> @@ -550,8 +552,8 @@ nvc0_validate_driverconst(struct nvc0_context *nvc0)
>> for (i = 0; i < 5; ++i) {
>> BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
>> PUSH_DATA (push, 1024);
>> - PUSH_DATAh(push, screen->uniform_bo->offset + (6 << 16) + (i << 10));
>> - PUSH_DATA (push, screen->uniform_bo->offset + (6 << 16) + (i << 10));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(i));
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(i));
>> BEGIN_NVC0(push, NVC0_3D(CB_BIND(i)), 1);
>> PUSH_DATA (push, (15 << 4) | 1);
>> }
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c b/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c
>> index 5333240..ce6a6dc 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_tex.c
>> @@ -707,21 +707,20 @@ void
>> nve4_set_tex_handles(struct nvc0_context *nvc0)
>> {
>> struct nouveau_pushbuf *push = nvc0->base.pushbuf;
>> - uint64_t address;
>> + struct nvc0_screen *screen = nvc0->screen;
>> unsigned s;
>>
>> if (nvc0->screen->base.class_3d < NVE4_3D_CLASS)
>> return;
>> - address = nvc0->screen->uniform_bo->offset + (6 << 16);
>>
>> - for (s = 0; s < 5; ++s, address += (1 << 10)) {
>> + for (s = 0; s < 5; ++s) {
>> uint32_t dirty = nvc0->textures_dirty[s] | nvc0->samplers_dirty[s];
>> if (!dirty)
>> continue;
>> BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
>> PUSH_DATA (push, 1024);
>> - PUSH_DATAh(push, address);
>> - PUSH_DATA (push, address);
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(s));
>> do {
>> int i = ffs(dirty) - 1;
>> dirty &= ~(1 << i);
>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c
>> index e0e0ad2..4d9cd57 100644
>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c
>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c
>> @@ -820,6 +820,7 @@ nvc0_draw_indirect(struct nvc0_context *nvc0, const struct pipe_draw_info *info)
>> struct nv04_resource *buf_count = nv04_resource(info->indirect_params);
>> unsigned size, macro, count = info->indirect_count, drawid = info->drawid;
>> uint32_t offset = buf->offset + info->indirect_offset;
>> + struct nvc0_screen *screen = nvc0->screen;
>>
>> PUSH_SPACE(push, 7);
>>
>> @@ -833,10 +834,10 @@ nvc0_draw_indirect(struct nvc0_context *nvc0, const struct pipe_draw_info *info)
>> /* Queue things up to let the macros write params to the driver constbuf */
>> BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
>> PUSH_DATA (push, 512);
>> - PUSH_DATAh(push, nvc0->screen->uniform_bo->offset + (6 << 16) + (0 << 9));
>> - PUSH_DATA (push, nvc0->screen->uniform_bo->offset + (6 << 16) + (0 << 9));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(0));
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(0));
>> BEGIN_NVC0(push, NVC0_3D(CB_POS), 1);
>> - PUSH_DATA (push, 256 + 128);
>> + PUSH_DATA (push, NVC0_CB_AUX_DRAW_INFO);
>>
>> if (info->indexed) {
>> assert(nvc0->idxbuf.buffer);
>> @@ -934,6 +935,7 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
>> {
>> struct nvc0_context *nvc0 = nvc0_context(pipe);
>> struct nouveau_pushbuf *push = nvc0->base.pushbuf;
>> + struct nvc0_screen *screen = nvc0->screen;
>> int s;
>>
>> /* NOTE: caller must ensure that (min_index + index_bias) is >= 0 */
>> @@ -975,11 +977,11 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
>> PUSH_SPACE(push, 9);
>> BEGIN_NVC0(push, NVC0_3D(CB_SIZE), 3);
>> PUSH_DATA (push, 512);
>> - PUSH_DATAh(push, nvc0->screen->uniform_bo->offset + (6 << 16) + (0 << 9));
>> - PUSH_DATA (push, nvc0->screen->uniform_bo->offset + (6 << 16) + (0 << 9));
>> + PUSH_DATAh(push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(0));
>> + PUSH_DATA (push, screen->uniform_bo->offset + NVC0_CB_AUX_INFO(0));
>> if (!info->indirect) {
>> BEGIN_1IC0(push, NVC0_3D(CB_POS), 1 + 3);
>> - PUSH_DATA (push, 256 + 128);
>> + PUSH_DATA (push, NVC0_CB_AUX_DRAW_INFO);
>> PUSH_DATA (push, info->index_bias);
>> PUSH_DATA (push, info->start_instance);
>> PUSH_DATA (push, info->drawid);
>> --
>> 2.7.3
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list