nvc0: rename nvc0_context::dirty to nvc0_context::dirty_3d

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
Samuel Pitoiset 2016-02-21 11:06:27 +01:00
parent 84b9b8f0a3
commit 5330ed959e
8 changed files with 64 additions and 64 deletions

View file

@ -239,7 +239,7 @@ nvc0_compute_validate_driverconst(struct nvc0_context *nvc0)
BEGIN_NVC0(push, NVC0_COMPUTE(CB_BIND), 1);
PUSH_DATA (push, (15 << 8) | 1);
nvc0->dirty |= NVC0_NEW_DRIVERCONST;
nvc0->dirty_3d |= NVC0_NEW_DRIVERCONST;
}
static void
@ -403,7 +403,7 @@ nvc0_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info)
}
/* Invalidate all 3D constbufs because they are aliased with COMPUTE. */
nvc0->dirty |= NVC0_NEW_CONSTBUF;
nvc0->dirty_3d |= NVC0_NEW_CONSTBUF;
for (s = 0; s < 5; s++) {
nvc0->constbuf_dirty[s] |= nvc0->constbuf_valid[s];
nvc0->state.uniform_buffer_bound[s] = 0;

View file

@ -194,7 +194,7 @@ nvc0_invalidate_resource_storage(struct nouveau_context *ctx,
for (i = 0; i < nvc0->framebuffer.nr_cbufs; ++i) {
if (nvc0->framebuffer.cbufs[i] &&
nvc0->framebuffer.cbufs[i]->texture == res) {
nvc0->dirty |= NVC0_NEW_FRAMEBUFFER;
nvc0->dirty_3d |= NVC0_NEW_FRAMEBUFFER;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_FB);
if (!--ref)
return ref;
@ -204,7 +204,7 @@ nvc0_invalidate_resource_storage(struct nouveau_context *ctx,
if (res->bind & PIPE_BIND_DEPTH_STENCIL) {
if (nvc0->framebuffer.zsbuf &&
nvc0->framebuffer.zsbuf->texture == res) {
nvc0->dirty |= NVC0_NEW_FRAMEBUFFER;
nvc0->dirty_3d |= NVC0_NEW_FRAMEBUFFER;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_FB);
if (!--ref)
return ref;
@ -214,7 +214,7 @@ nvc0_invalidate_resource_storage(struct nouveau_context *ctx,
if (res->target == PIPE_BUFFER) {
for (i = 0; i < nvc0->num_vtxbufs; ++i) {
if (nvc0->vtxbuf[i].buffer == res) {
nvc0->dirty |= NVC0_NEW_ARRAYS;
nvc0->dirty_3d |= NVC0_NEW_ARRAYS;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_VTX);
if (!--ref)
return ref;
@ -222,7 +222,7 @@ nvc0_invalidate_resource_storage(struct nouveau_context *ctx,
}
if (nvc0->idxbuf.buffer == res) {
nvc0->dirty |= NVC0_NEW_IDXBUF;
nvc0->dirty_3d |= NVC0_NEW_IDXBUF;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_IDX);
if (!--ref)
return ref;
@ -233,7 +233,7 @@ nvc0_invalidate_resource_storage(struct nouveau_context *ctx,
if (nvc0->textures[s][i] &&
nvc0->textures[s][i]->texture == res) {
nvc0->textures_dirty[s] |= 1 << i;
nvc0->dirty |= NVC0_NEW_TEXTURES;
nvc0->dirty_3d |= NVC0_NEW_TEXTURES;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_TEX(s, i));
if (!--ref)
return ref;
@ -252,7 +252,7 @@ nvc0_invalidate_resource_storage(struct nouveau_context *ctx,
nvc0->dirty_cp |= NVC0_NEW_CP_CONSTBUF;
nouveau_bufctx_reset(nvc0->bufctx_cp, NVC0_BIND_CP_CB(i));
} else {
nvc0->dirty |= NVC0_NEW_CONSTBUF;
nvc0->dirty_3d |= NVC0_NEW_CONSTBUF;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_CB(s, i));
}
if (!--ref)
@ -269,7 +269,7 @@ nvc0_invalidate_resource_storage(struct nouveau_context *ctx,
nvc0->dirty_cp |= NVC0_NEW_CP_BUFFERS;
nouveau_bufctx_reset(nvc0->bufctx_cp, NVC0_BIND_CP_BUF);
} else {
nvc0->dirty |= NVC0_NEW_BUFFERS;
nvc0->dirty_3d |= NVC0_NEW_BUFFERS;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_BUF);
}
if (!--ref)
@ -352,7 +352,7 @@ nvc0_create(struct pipe_screen *pscreen, void *priv, unsigned ctxflags)
if (!nvc0->tcp_empty)
goto out_err;
/* set the empty tctl prog on next draw in case one is never set */
nvc0->dirty |= NVC0_NEW_TCTLPROG;
nvc0->dirty_3d |= NVC0_NEW_TCTLPROG;
/* Do not bind the COMPUTE driver constbuf at screen initialization because
* CBs are aliased between 3D and COMPUTE, but make sure it will be bound if

View file

@ -118,7 +118,7 @@ struct nvc0_context {
const struct nv50_m2mf_rect *src,
uint32_t nblocksx, uint32_t nblocksy);
uint32_t dirty;
uint32_t dirty_3d; /* dirty flags for 3d state */
uint32_t dirty_cp; /* dirty flags for compute state */
struct nvc0_graph_state state;

View file

@ -152,7 +152,7 @@ nvc0_fragprog_validate(struct nvc0_context *nvc0)
NVC0_3D_SHADE_MODEL_SMOOTH);
}
if (fp->mem && !(nvc0->dirty & NVC0_NEW_FRAGPROG)) {
if (fp->mem && !(nvc0->dirty_3d & NVC0_NEW_FRAGPROG)) {
return;
}
@ -292,7 +292,7 @@ nvc0_tfb_validate(struct nvc0_context *nvc0)
}
nvc0->state.tfb = tfb;
if (!(nvc0->dirty & NVC0_NEW_TFB_TARGETS))
if (!(nvc0->dirty_3d & NVC0_NEW_TFB_TARGETS))
return;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_TFB);

View file

@ -186,7 +186,7 @@ nvc0_blend_state_bind(struct pipe_context *pipe, void *hwcso)
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->blend = hwcso;
nvc0->dirty |= NVC0_NEW_BLEND;
nvc0->dirty_3d |= NVC0_NEW_BLEND;
}
static void
@ -315,7 +315,7 @@ nvc0_rasterizer_state_bind(struct pipe_context *pipe, void *hwcso)
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->rast = hwcso;
nvc0->dirty |= NVC0_NEW_RASTERIZER;
nvc0->dirty_3d |= NVC0_NEW_RASTERIZER;
}
static void
@ -393,7 +393,7 @@ nvc0_zsa_state_bind(struct pipe_context *pipe, void *hwcso)
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->zsa = hwcso;
nvc0->dirty |= NVC0_NEW_ZSA;
nvc0->dirty_3d |= NVC0_NEW_ZSA;
}
static void
@ -449,7 +449,7 @@ nvc0_stage_sampler_states_bind(struct nvc0_context *nvc0, int s,
nvc0->num_samplers[s] = nr;
nvc0->dirty |= NVC0_NEW_SAMPLERS;
nvc0->dirty_3d |= NVC0_NEW_SAMPLERS;
}
static void
@ -584,7 +584,7 @@ nvc0_stage_set_sampler_views(struct nvc0_context *nvc0, int s,
nvc0->num_textures[s] = nr;
nvc0->dirty |= NVC0_NEW_TEXTURES;
nvc0->dirty_3d |= NVC0_NEW_TEXTURES;
}
static void
@ -733,7 +733,7 @@ nvc0_vp_state_bind(struct pipe_context *pipe, void *hwcso)
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->vertprog = hwcso;
nvc0->dirty |= NVC0_NEW_VERTPROG;
nvc0->dirty_3d |= NVC0_NEW_VERTPROG;
}
static void *
@ -749,7 +749,7 @@ nvc0_fp_state_bind(struct pipe_context *pipe, void *hwcso)
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->fragprog = hwcso;
nvc0->dirty |= NVC0_NEW_FRAGPROG;
nvc0->dirty_3d |= NVC0_NEW_FRAGPROG;
}
static void *
@ -765,7 +765,7 @@ nvc0_gp_state_bind(struct pipe_context *pipe, void *hwcso)
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->gmtyprog = hwcso;
nvc0->dirty |= NVC0_NEW_GMTYPROG;
nvc0->dirty_3d |= NVC0_NEW_GMTYPROG;
}
static void *
@ -781,7 +781,7 @@ nvc0_tcp_state_bind(struct pipe_context *pipe, void *hwcso)
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->tctlprog = hwcso;
nvc0->dirty |= NVC0_NEW_TCTLPROG;
nvc0->dirty_3d |= NVC0_NEW_TCTLPROG;
}
static void *
@ -797,7 +797,7 @@ nvc0_tep_state_bind(struct pipe_context *pipe, void *hwcso)
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->tevlprog = hwcso;
nvc0->dirty |= NVC0_NEW_TEVLPROG;
nvc0->dirty_3d |= NVC0_NEW_TEVLPROG;
}
static void *
@ -853,7 +853,7 @@ nvc0_set_constant_buffer(struct pipe_context *pipe, uint shader, uint index,
if (nvc0->constbuf[s][i].u.buf)
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_CB(s, i));
nvc0->dirty |= NVC0_NEW_CONSTBUF;
nvc0->dirty_3d |= NVC0_NEW_CONSTBUF;
}
nvc0->constbuf_dirty[s] |= 1 << i;
@ -893,7 +893,7 @@ nvc0_set_blend_color(struct pipe_context *pipe,
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->blend_colour = *bcol;
nvc0->dirty |= NVC0_NEW_BLEND_COLOUR;
nvc0->dirty_3d |= NVC0_NEW_BLEND_COLOUR;
}
static void
@ -903,7 +903,7 @@ nvc0_set_stencil_ref(struct pipe_context *pipe,
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->stencil_ref = *sr;
nvc0->dirty |= NVC0_NEW_STENCIL_REF;
nvc0->dirty_3d |= NVC0_NEW_STENCIL_REF;
}
static void
@ -914,7 +914,7 @@ nvc0_set_clip_state(struct pipe_context *pipe,
memcpy(nvc0->clip.ucp, clip->ucp, sizeof(clip->ucp));
nvc0->dirty |= NVC0_NEW_CLIP;
nvc0->dirty_3d |= NVC0_NEW_CLIP;
}
static void
@ -923,7 +923,7 @@ nvc0_set_sample_mask(struct pipe_context *pipe, unsigned sample_mask)
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->sample_mask = sample_mask;
nvc0->dirty |= NVC0_NEW_SAMPLE_MASK;
nvc0->dirty_3d |= NVC0_NEW_SAMPLE_MASK;
}
static void
@ -933,7 +933,7 @@ nvc0_set_min_samples(struct pipe_context *pipe, unsigned min_samples)
if (nvc0->min_samples != min_samples) {
nvc0->min_samples = min_samples;
nvc0->dirty |= NVC0_NEW_MIN_SAMPLES;
nvc0->dirty_3d |= NVC0_NEW_MIN_SAMPLES;
}
}
@ -947,7 +947,7 @@ nvc0_set_framebuffer_state(struct pipe_context *pipe,
util_copy_framebuffer_state(&nvc0->framebuffer, fb);
nvc0->dirty |= NVC0_NEW_FRAMEBUFFER;
nvc0->dirty_3d |= NVC0_NEW_FRAMEBUFFER;
}
static void
@ -957,7 +957,7 @@ nvc0_set_polygon_stipple(struct pipe_context *pipe,
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->stipple = *stipple;
nvc0->dirty |= NVC0_NEW_STIPPLE;
nvc0->dirty_3d |= NVC0_NEW_STIPPLE;
}
static void
@ -975,7 +975,7 @@ nvc0_set_scissor_states(struct pipe_context *pipe,
continue;
nvc0->scissors[start_slot + i] = scissor[i];
nvc0->scissors_dirty |= 1 << (start_slot + i);
nvc0->dirty |= NVC0_NEW_SCISSOR;
nvc0->dirty_3d |= NVC0_NEW_SCISSOR;
}
}
@ -994,7 +994,7 @@ nvc0_set_viewport_states(struct pipe_context *pipe,
continue;
nvc0->viewports[start_slot + i] = vpt[i];
nvc0->viewports_dirty |= 1 << (start_slot + i);
nvc0->dirty |= NVC0_NEW_VIEWPORT;
nvc0->dirty_3d |= NVC0_NEW_VIEWPORT;
}
}
@ -1008,7 +1008,7 @@ nvc0_set_tess_state(struct pipe_context *pipe,
memcpy(nvc0->default_tess_outer, default_tess_outer, 4 * sizeof(float));
memcpy(nvc0->default_tess_inner, default_tess_inner, 2 * sizeof(float));
nvc0->dirty |= NVC0_NEW_TESSFACTOR;
nvc0->dirty_3d |= NVC0_NEW_TESSFACTOR;
}
static void
@ -1020,7 +1020,7 @@ nvc0_set_vertex_buffers(struct pipe_context *pipe,
unsigned i;
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_VTX);
nvc0->dirty |= NVC0_NEW_ARRAYS;
nvc0->dirty_3d |= NVC0_NEW_ARRAYS;
util_set_vertex_buffers_count(nvc0->vtxbuf, &nvc0->num_vtxbufs, vb,
start_slot, count);
@ -1069,13 +1069,13 @@ nvc0_set_index_buffer(struct pipe_context *pipe,
nvc0->idxbuf.index_size = ib->index_size;
if (ib->buffer) {
nvc0->idxbuf.offset = ib->offset;
nvc0->dirty |= NVC0_NEW_IDXBUF;
nvc0->dirty_3d |= NVC0_NEW_IDXBUF;
} else {
nvc0->idxbuf.user_buffer = ib->user_buffer;
nvc0->dirty &= ~NVC0_NEW_IDXBUF;
nvc0->dirty_3d &= ~NVC0_NEW_IDXBUF;
}
} else {
nvc0->dirty &= ~NVC0_NEW_IDXBUF;
nvc0->dirty_3d &= ~NVC0_NEW_IDXBUF;
pipe_resource_reference(&nvc0->idxbuf.buffer, NULL);
}
}
@ -1086,7 +1086,7 @@ nvc0_vertex_state_bind(struct pipe_context *pipe, void *hwcso)
struct nvc0_context *nvc0 = nvc0_context(pipe);
nvc0->vertex = hwcso;
nvc0->dirty |= NVC0_NEW_VERTEX;
nvc0->dirty_3d |= NVC0_NEW_VERTEX;
}
static struct pipe_stream_output_target *
@ -1185,7 +1185,7 @@ nvc0_set_transform_feedback_targets(struct pipe_context *pipe,
nvc0->num_tfbbufs = num_targets;
if (nvc0->tfbbuf_dirty)
nvc0->dirty |= NVC0_NEW_TFB_TARGETS;
nvc0->dirty_3d |= NVC0_NEW_TFB_TARGETS;
}
static void
@ -1284,7 +1284,7 @@ nvc0_set_shader_buffers(struct pipe_context *pipe,
if (s == 5)
nvc0_context(pipe)->dirty_cp |= NVC0_NEW_CP_BUFFERS;
else
nvc0_context(pipe)->dirty |= NVC0_NEW_BUFFERS;
nvc0_context(pipe)->dirty_3d |= NVC0_NEW_BUFFERS;
}
static inline void

View file

@ -239,7 +239,7 @@ nvc0_validate_scissor(struct nvc0_context *nvc0)
int i;
struct nouveau_pushbuf *push = nvc0->base.pushbuf;
if (!(nvc0->dirty & NVC0_NEW_SCISSOR) &&
if (!(nvc0->dirty_3d & NVC0_NEW_SCISSOR) &&
nvc0->rast->pipe.scissor == nvc0->state.scissor)
return;
@ -367,7 +367,7 @@ nvc0_validate_clip(struct nvc0_context *nvc0)
if (clip_enable && vp->vp.num_ucps < PIPE_MAX_CLIP_PLANES)
nvc0_check_program_ucps(nvc0, vp, clip_enable);
if (nvc0->dirty & (NVC0_NEW_CLIP | (NVC0_NEW_VERTPROG << stage)))
if (nvc0->dirty_3d & (NVC0_NEW_CLIP | (NVC0_NEW_VERTPROG << stage)))
if (vp->vp.num_ucps > 0 && vp->vp.num_ucps <= PIPE_MAX_CLIP_PLANES)
nvc0_upload_uclip_planes(nvc0, stage);
@ -652,7 +652,7 @@ nvc0_switch_pipe_context(struct nvc0_context *ctx_to)
else
ctx_to->state = ctx_to->screen->save_state;
ctx_to->dirty = ~0;
ctx_to->dirty_3d = ~0;
ctx_to->dirty_cp = ~0;
ctx_to->viewports_dirty = ~0;
ctx_to->scissors_dirty = ~0;
@ -668,21 +668,21 @@ nvc0_switch_pipe_context(struct nvc0_context *ctx_to)
ctx_to->state.tfb = NULL;
if (!ctx_to->vertex)
ctx_to->dirty &= ~(NVC0_NEW_VERTEX | NVC0_NEW_ARRAYS);
ctx_to->dirty_3d &= ~(NVC0_NEW_VERTEX | NVC0_NEW_ARRAYS);
if (!ctx_to->idxbuf.buffer)
ctx_to->dirty &= ~NVC0_NEW_IDXBUF;
ctx_to->dirty_3d &= ~NVC0_NEW_IDXBUF;
if (!ctx_to->vertprog)
ctx_to->dirty &= ~NVC0_NEW_VERTPROG;
ctx_to->dirty_3d &= ~NVC0_NEW_VERTPROG;
if (!ctx_to->fragprog)
ctx_to->dirty &= ~NVC0_NEW_FRAGPROG;
ctx_to->dirty_3d &= ~NVC0_NEW_FRAGPROG;
if (!ctx_to->blend)
ctx_to->dirty &= ~NVC0_NEW_BLEND;
ctx_to->dirty_3d &= ~NVC0_NEW_BLEND;
if (!ctx_to->rast)
ctx_to->dirty &= ~(NVC0_NEW_RASTERIZER | NVC0_NEW_SCISSOR);
ctx_to->dirty_3d &= ~(NVC0_NEW_RASTERIZER | NVC0_NEW_SCISSOR);
if (!ctx_to->zsa)
ctx_to->dirty &= ~NVC0_NEW_ZSA;
ctx_to->dirty_3d &= ~NVC0_NEW_ZSA;
ctx_to->screen->cur_ctx = ctx_to;
}
@ -738,7 +738,7 @@ nvc0_state_validate(struct nvc0_context *nvc0, uint32_t mask)
if (nvc0->screen->cur_ctx != nvc0)
nvc0_switch_pipe_context(nvc0);
state_mask = nvc0->dirty & mask;
state_mask = nvc0->dirty_3d & mask;
if (state_mask) {
for (i = 0; i < ARRAY_SIZE(validate_list); ++i) {
@ -747,7 +747,7 @@ nvc0_state_validate(struct nvc0_context *nvc0, uint32_t mask)
if (state_mask & validate->states)
validate->func(nvc0);
}
nvc0->dirty &= ~state_mask;
nvc0->dirty_3d &= ~state_mask;
nvc0_bufctx_fence(nvc0, nvc0->bufctx_3d, false);
}

View file

@ -353,7 +353,7 @@ nvc0_clear_render_target(struct pipe_context *pipe,
IMMED_NVC0(push, NVC0_3D(COND_MODE), nvc0->cond_condmode);
nvc0->dirty |= NVC0_NEW_FRAMEBUFFER;
nvc0->dirty_3d |= NVC0_NEW_FRAMEBUFFER;
}
static void
@ -609,7 +609,7 @@ nvc0_clear_buffer(struct pipe_context *pipe,
data, data_size);
}
nvc0->dirty |= NVC0_NEW_FRAMEBUFFER;
nvc0->dirty_3d |= NVC0_NEW_FRAMEBUFFER;
}
static void
@ -678,7 +678,7 @@ nvc0_clear_depth_stencil(struct pipe_context *pipe,
IMMED_NVC0(push, NVC0_3D(COND_MODE), nvc0->cond_condmode);
nvc0->dirty |= NVC0_NEW_FRAMEBUFFER;
nvc0->dirty_3d |= NVC0_NEW_FRAMEBUFFER;
}
void
@ -793,7 +793,7 @@ struct nvc0_blitctx
struct pipe_sampler_view *texture[2];
struct nv50_tsc_entry *sampler[2];
unsigned min_samples;
uint32_t dirty;
uint32_t dirty_3d;
} saved;
struct nvc0_rasterizer_stateobj rast;
};
@ -1085,7 +1085,7 @@ nvc0_blitctx_pre_blit(struct nvc0_blitctx *ctx)
nvc0->min_samples = 1;
ctx->saved.dirty = nvc0->dirty;
ctx->saved.dirty_3d = nvc0->dirty_3d;
nvc0->textures_dirty[4] |= 3;
nvc0->samplers_dirty[4] |= 3;
@ -1094,7 +1094,7 @@ nvc0_blitctx_pre_blit(struct nvc0_blitctx *ctx)
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_TEX(4, 0));
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_TEX(4, 1));
nvc0->dirty = NVC0_NEW_FRAMEBUFFER | NVC0_NEW_MIN_SAMPLES |
nvc0->dirty_3d = NVC0_NEW_FRAMEBUFFER | NVC0_NEW_MIN_SAMPLES |
NVC0_NEW_VERTPROG | NVC0_NEW_FRAGPROG |
NVC0_NEW_TCTLPROG | NVC0_NEW_TEVLPROG | NVC0_NEW_GMTYPROG |
NVC0_NEW_TEXTURES | NVC0_NEW_SAMPLERS;
@ -1151,7 +1151,7 @@ nvc0_blitctx_post_blit(struct nvc0_blitctx *blit)
nouveau_bufctx_reset(nvc0->bufctx_3d, NVC0_BIND_TEX(4, 1));
nouveau_scratch_done(&nvc0->base);
nvc0->dirty = blit->saved.dirty |
nvc0->dirty_3d = blit->saved.dirty_3d |
(NVC0_NEW_FRAMEBUFFER | NVC0_NEW_SCISSOR | NVC0_NEW_SAMPLE_MASK |
NVC0_NEW_RASTERIZER | NVC0_NEW_ZSA | NVC0_NEW_BLEND |
NVC0_NEW_VIEWPORT |

View file

@ -446,7 +446,7 @@ nvc0_vertex_arrays_validate(struct nvc0_context *nvc0)
}
const_vbos = vbo_mode ? 0 : nvc0->constant_vbos;
update_vertex = (nvc0->dirty & NVC0_NEW_VERTEX) ||
update_vertex = (nvc0->dirty_3d & NVC0_NEW_VERTEX) ||
(const_vbos != nvc0->state.constant_vbos) ||
(vbo_mode != nvc0->state.vbo_mode);
@ -949,12 +949,12 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
info->indexed && (nvc0->vb_elt_limit >= (info->count * 2));
/* Check whether we want to switch vertex-submission mode. */
if (nvc0->vbo_user && !(nvc0->dirty & (NVC0_NEW_ARRAYS | NVC0_NEW_VERTEX))) {
if (nvc0->vbo_user && !(nvc0->dirty_3d & (NVC0_NEW_ARRAYS | NVC0_NEW_VERTEX))) {
if (nvc0->vbo_push_hint != !!nvc0->state.vbo_mode)
if (nvc0->state.vbo_mode != 3)
nvc0->dirty |= NVC0_NEW_ARRAYS;
nvc0->dirty_3d |= NVC0_NEW_ARRAYS;
if (!(nvc0->dirty & NVC0_NEW_ARRAYS) && nvc0->state.vbo_mode == 0) {
if (!(nvc0->dirty_3d & NVC0_NEW_ARRAYS) && nvc0->state.vbo_mode == 0) {
if (nvc0->vertex->shared_slots)
nvc0_update_user_vbufs_shared(nvc0);
else