On Tue, 8 Nov 2011 14:32:09 -0800, Kenneth Graunke <kenn...@whitecape.org> wrote: > Like for the WM pull constants, we can merge the former prepare/emit > stages into one tracked state atom. Furthermore, the code that used to > handle the binding table was removed in the last commit, leaving some > rather silly looking short functions that can easily be folded in. > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
> - &brw_vs_constants, /* Before vs_surfaces and constant_buffer */ > - &brw_wm_pull_constants, /* Before brw_wm_binding_table */ > + /* Pull constants must be before brw_binding_table */ > + &brw_vs_pull_constants, > + &brw_wm_pull_constants, > + > &gen6_vs_push_constants, /* Before vs_state */ > &gen6_wm_push_constants, /* Before wm_state */ > > - &brw_vs_surfaces, /* must do before unit */ > &brw_renderbuffer_surfaces, /* must do before unit */ > &brw_texture_surfaces, /* must do before unit */ > &brw_binding_table, I think the pull constants atoms should live down with the rest of the surfaces. > -/** > - * Update the surface state for a VS constant buffer. > - * > - * Sets brw->vs.surf_bo[surf] and brw->vp->const_buffer. > - */ > -static void > -brw_update_vs_constant_surface( struct gl_context *ctx, > - GLuint surf) > -{ > - struct brw_context *brw = brw_context(ctx); > - struct intel_context *intel = &brw->intel; > - struct brw_vertex_program *vp = > - (struct brw_vertex_program *) brw->vertex_program; > - const struct gl_program_parameter_list *params = > vp->program.Base.Parameters; > - > - /* If there's no constant buffer, then no surface BO is needed to point at > - * it. > - */ > - if (brw->vs.const_bo == NULL) { > - brw->bind.surf_offset[surf] = 0; > - return; > - } > > + const int surf = SURF_INDEX_VERT_CONST_BUFFER; > intel->vtbl.create_constant_surface(brw, brw->vs.const_bo, > params->NumParameters, > &brw->bind.surf_offset[surf]); > -const struct brw_tracked_state brw_vs_surfaces = { > +const struct brw_tracked_state brw_vs_pull_constants = { > .dirty = { > - .mesa = 0, > - .brw = (BRW_NEW_VS_CONSTBUF | > - BRW_NEW_BATCH), > - .cache = 0 > + .mesa = (_NEW_PROGRAM_CONSTANTS), > + .brw = (BRW_NEW_VERTEX_PROGRAM), > + .cache = CACHE_NEW_VS_PROG, > }, > - .emit = brw_upload_vs_surfaces, > + .emit = brw_upload_vs_pull_constants, > }; Looks like BRW_NEW_BATCH got misplaced, which is required since you're uploading state batch data (create_constant_surface()). Hmm. You know, I ought to add some debug code that checks that !bo_references(intel->batch.bo, old_batch_bo).
pgpm732kX1QIo.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev