Lines Matching refs:st
44 typedef void (*update_func_t)(struct st_context *st);
60 void st_init_atoms( struct st_context *st )
69 void st_destroy_atoms( struct st_context *st )
77 static void check_program_state( struct st_context *st )
79 struct gl_context *ctx = st->ctx;
80 struct gl_program *old_vp = st->vp;
81 struct gl_program *old_tcp = st->tcp;
82 struct gl_program *old_tep = st->tep;
83 struct gl_program *old_gp = st->gp;
84 struct gl_program *old_fp = st->fp;
102 dirty |= ST_NEW_VERTEX_PROGRAM(st, new_vp);
143 if (st->state.num_viewports != num_viewports) {
144 st->state.num_viewports = num_viewports;
151 if (st->lower_point_size && st->ctx->LastVertexStageDirty &&
152 !st->ctx->VertexProgram.PointSizeEnabled && !st->ctx->PointSizeIsSet) {
154 st->dirty |= ST_NEW_GS_CONSTANTS;
156 st->dirty |= ST_NEW_TES_CONSTANTS;
158 st->dirty |= ST_NEW_VS_CONSTANTS;
161 st->ctx->LastVertexStageDirty = false;
163 st->dirty |= dirty;
166 void st_update_edgeflags(struct st_context *st, bool per_vertex_edgeflags)
168 bool edgeflags_enabled = st->ctx->Polygon.FrontMode != GL_FILL ||
169 st->ctx->Polygon.BackMode != GL_FILL;
172 if (vertdata_edgeflags != st->vertdata_edgeflags) {
173 st->vertdata_edgeflags = vertdata_edgeflags;
175 struct gl_program *vp = st->ctx->VertexProgram._Current;
177 st->dirty |= ST_NEW_VERTEX_PROGRAM(st, vp);
181 !st->ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0];
182 if (edgeflag_culls_prims != st->edgeflag_culls_prims) {
183 st->edgeflag_culls_prims = edgeflag_culls_prims;
184 st->dirty |= ST_NEW_RASTERIZER;
188 static void check_attrib_edgeflag(struct st_context *st)
190 st_update_edgeflags(st, _mesa_draw_edge_flag_array_enabled(st->ctx));
197 void st_validate_state( struct st_context *st, enum st_pipeline pipeline )
199 struct gl_context *ctx = st->ctx;
207 st->dirty |= ctx->NewDriverState & st->active_states & ST_ALL_STATES_MASK;
208 ctx->NewDriverState &= ~st->dirty;
214 if (st->ctx->API == API_OPENGL_COMPAT)
215 check_attrib_edgeflag(st);
217 if (st->gfx_shaders_may_be_dirty) {
218 check_program_state(st);
219 st->gfx_shaders_may_be_dirty = false;
222 st_manager_validate_framebuffers(st);
231 st_manager_validate_framebuffers(st);
236 if (st->gfx_shaders_may_be_dirty) {
237 check_program_state(st);
238 st->gfx_shaders_may_be_dirty = false;
241 st_manager_validate_framebuffers(st);
246 st_manager_validate_framebuffers(st);
251 struct gl_program *old_cp = st->cp;
256 st->dirty |= old_cp->affected_states;
258 st->dirty |= new_cp->affected_states;
261 st->compute_shader_may_be_dirty = false;
278 dirty = st->dirty & pipeline_mask;
290 update_functions[u_bit_scan(&dirty_lo)](st);
292 update_functions[32 + u_bit_scan(&dirty_hi)](st);
295 st->dirty &= ~pipeline_mask;