{
&brw_vs_prog, /* must do before GS prog, state base address. */
&brw_gs_prog, /* must do before state base address */
+
+ &brw_interpolation_map,
+
&brw_clip_prog, /* must do before state base address */
&brw_sf_prog, /* must do before state base address */
&brw_wm_prog, /* must do before state base address */
&brw_vs_binding_table,
&brw_wm_binding_table,
- &brw_samplers,
+ &brw_fs_samplers,
+ &brw_vs_samplers,
/* These set up state for brw_psp_urb_cbs */
&brw_wm_unit,
&gen6_blend_state, /* must do before cc unit */
&gen6_color_calc_state, /* must do before cc unit */
&gen6_depth_stencil_state, /* must do before cc unit */
- &gen6_cc_state_pointers,
&gen6_vs_push_constants, /* Before vs_state */
&gen6_wm_push_constants, /* Before wm_state */
&gen6_gs_binding_table,
&brw_wm_binding_table,
- &brw_samplers,
+ &brw_fs_samplers,
+ &brw_vs_samplers,
&gen6_sampler_state,
&gen6_multisample_state,
&gen6_blend_state, /* must do before cc unit */
&gen6_color_calc_state, /* must do before cc unit */
&gen6_depth_stencil_state, /* must do before cc unit */
- &gen7_blend_state_pointer,
- &gen7_cc_state_pointer,
- &gen7_depth_stencil_state_pointer,
&gen6_vs_push_constants, /* Before vs_state */
&gen6_wm_push_constants, /* Before wm_surfaces and constant_buffer */
&brw_vs_binding_table,
&brw_wm_binding_table,
- &gen7_samplers,
+ &brw_fs_samplers,
+ &brw_vs_samplers,
&gen6_multisample_state,
&gen7_disable_stages,
static void
brw_upload_initial_gpu_state(struct brw_context *brw)
{
- struct intel_context *intel = &brw->intel;
-
/* On platforms with hardware contexts, we can set our initial GPU state
* right away rather than doing it via state atoms. This saves a small
* amount of overhead on every draw call.
*/
- if (!intel->hw_ctx)
+ if (!brw->hw_ctx)
return;
brw_upload_invariant_state(brw);
- if (intel->gen >= 7) {
+ if (brw->gen >= 7) {
gen7_allocate_push_constants(brw);
}
}
brw_init_caches(brw);
- if (brw->intel.gen >= 7) {
+ if (brw->gen >= 7) {
atoms = gen7_atoms;
num_atoms = ARRAY_SIZE(gen7_atoms);
- } else if (brw->intel.gen == 6) {
+ } else if (brw->gen == 6) {
atoms = gen6_atoms;
num_atoms = ARRAY_SIZE(gen6_atoms);
} else {
DEFINE_BIT(BRW_NEW_RASTERIZER_DISCARD),
DEFINE_BIT(BRW_NEW_UNIFORM_BUFFER),
DEFINE_BIT(BRW_NEW_META_IN_PROGRESS),
+ DEFINE_BIT(BRW_NEW_INTERPOLATION_MAP),
{0, 0, 0}
};
static struct dirty_bit_map cache_bits[] = {
- DEFINE_BIT(CACHE_NEW_BLEND_STATE),
- DEFINE_BIT(CACHE_NEW_DEPTH_STENCIL_STATE),
- DEFINE_BIT(CACHE_NEW_COLOR_CALC_STATE),
DEFINE_BIT(CACHE_NEW_CC_VP),
DEFINE_BIT(CACHE_NEW_CC_UNIT),
DEFINE_BIT(CACHE_NEW_WM_PROG),
*/
void brw_upload_state(struct brw_context *brw)
{
- struct gl_context *ctx = &brw->intel.ctx;
- struct intel_context *intel = &brw->intel;
+ struct gl_context *ctx = &brw->ctx;
struct brw_state_flags *state = &brw->state.dirty;
int i;
static int dirty_count = 0;
- state->mesa |= brw->intel.NewGLState;
- brw->intel.NewGLState = 0;
+ state->mesa |= brw->NewGLState;
+ brw->NewGLState = 0;
state->brw |= ctx->NewDriverState;
ctx->NewDriverState = 0;
brw->state.dirty.brw |= BRW_NEW_FRAGMENT_PROGRAM;
}
+ if (brw->geometry_program != ctx->GeometryProgram._Current) {
+ brw->geometry_program = ctx->GeometryProgram._Current;
+ brw->state.dirty.brw |= BRW_NEW_GEOMETRY_PROGRAM;
+ }
+
if (brw->vertex_program != ctx->VertexProgram._Current) {
brw->vertex_program = ctx->VertexProgram._Current;
brw->state.dirty.brw |= BRW_NEW_VERTEX_PROGRAM;
if ((state->mesa | state->cache | state->brw) == 0)
return;
- intel_check_front_buffer_rendering(intel);
+ intel_check_front_buffer_rendering(brw);
if (unlikely(INTEL_DEBUG)) {
/* Debug version which enforces various sanity checks on the