[Mesa-dev] [PATCH 4/5] nvc0: avoid using magic numbers for the uniform_bo offsets

Pierre Moreau pierre.morrow at free.fr
Thu Mar 17 00:02:32 UTC 2016


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.

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

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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160317/4895b2b8/attachment-0001.sig>


More information about the mesa-dev mailing list