diff options
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.h | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_gs.c | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_state_upload.c | 5 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/gen6_sol.c | 7 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/gen7_sol_state.c | 14 |
6 files changed, 22 insertions, 14 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index ceaf325e25b..04d6943352e 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -153,6 +153,8 @@ brwCreateContext(int api, if (tnl) tnl->Driver.RunPipeline = _tnl_run_pipeline; + ctx->DriverFlags.NewTransformFeedback = BRW_NEW_TRANSFORM_FEEDBACK; + ctx->Const.MaxDualSourceDrawBuffers = 1; ctx->Const.MaxDrawBuffers = BRW_MAX_DRAW_BUFFERS; ctx->Const.MaxTextureImageUnits = BRW_MAX_TEX_UNIT; diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 114c369f821..e4fd0714c33 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -150,6 +150,7 @@ enum brw_state_id { BRW_STATE_STATE_BASE_ADDRESS, BRW_STATE_SOL_INDICES, BRW_STATE_VUE_MAP_GEOM_OUT, + BRW_STATE_TRANSFORM_FEEDBACK, }; #define BRW_NEW_URB_FENCE (1 << BRW_STATE_URB_FENCE) @@ -178,6 +179,7 @@ enum brw_state_id { #define BRW_NEW_STATE_BASE_ADDRESS (1 << BRW_STATE_STATE_BASE_ADDRESS) #define BRW_NEW_SOL_INDICES (1 << BRW_STATE_SOL_INDICES) #define BRW_NEW_VUE_MAP_GEOM_OUT (1 << BRW_STATE_VUE_MAP_GEOM_OUT) +#define BRW_NEW_TRANSFORM_FEEDBACK (1 << BRW_STATE_TRANSFORM_FEEDBACK) struct brw_state_flags { /** State update flags signalled by mesa internals */ diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c index caa3b3efdd6..59053d4c6c9 100644 --- a/src/mesa/drivers/dri/i965/brw_gs.c +++ b/src/mesa/drivers/dri/i965/brw_gs.c @@ -186,7 +186,7 @@ static void populate_key( struct brw_context *brw, key->need_gs_prog = false; } else if (intel->gen == 6) { /* On Gen6, GS is used for transform feedback. */ - /* _NEW_TRANSFORM_FEEDBACK */ + /* BRW_NEW_TRANSFORM_FEEDBACK */ if (_mesa_is_xfb_active_and_unpaused(ctx)) { const struct gl_shader_program *shaderprog = ctx->Shader.CurrentVertexProgram; @@ -258,9 +258,9 @@ brw_upload_gs_prog(struct brw_context *brw) const struct brw_tracked_state brw_gs_prog = { .dirty = { .mesa = (_NEW_LIGHT | - _NEW_TRANSFORM_FEEDBACK | _NEW_RASTERIZER_DISCARD), - .brw = BRW_NEW_PRIMITIVE, + .brw = (BRW_NEW_PRIMITIVE | + BRW_NEW_TRANSFORM_FEEDBACK), .cache = CACHE_NEW_VS_PROG }, .emit = brw_upload_gs_prog diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c index 8c562455d8e..843324f8c9f 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -345,7 +345,6 @@ static struct dirty_bit_map mesa_bits[] = { DEFINE_BIT(_NEW_PROGRAM_CONSTANTS), DEFINE_BIT(_NEW_BUFFER_OBJECT), DEFINE_BIT(_NEW_FRAG_CLAMP), - DEFINE_BIT(_NEW_TRANSFORM_FEEDBACK), DEFINE_BIT(_NEW_VARYING_VP_INPUTS), {0, 0, 0} }; @@ -372,6 +371,7 @@ static struct dirty_bit_map brw_bits[] = { DEFINE_BIT(BRW_NEW_STATE_BASE_ADDRESS), DEFINE_BIT(BRW_NEW_SOL_INDICES), DEFINE_BIT(BRW_NEW_VUE_MAP_GEOM_OUT), + DEFINE_BIT(BRW_NEW_TRANSFORM_FEEDBACK), {0, 0, 0} }; @@ -440,6 +440,9 @@ void brw_upload_state(struct brw_context *brw) state->mesa |= brw->intel.NewGLState; brw->intel.NewGLState = 0; + state->brw |= ctx->NewDriverState; + ctx->NewDriverState = 0; + if (brw->emit_state_always) { state->mesa |= ~0; state->brw |= ~0; diff --git a/src/mesa/drivers/dri/i965/gen6_sol.c b/src/mesa/drivers/dri/i965/gen6_sol.c index cf7a60db6be..3cbf28e7dc4 100644 --- a/src/mesa/drivers/dri/i965/gen6_sol.c +++ b/src/mesa/drivers/dri/i965/gen6_sol.c @@ -37,7 +37,7 @@ static void gen6_update_sol_surfaces(struct brw_context *brw) { struct gl_context *ctx = &brw->intel.ctx; - /* _NEW_TRANSFORM_FEEDBACK */ + /* BRW_NEW_TRANSFORM_FEEDBACK */ struct gl_transform_feedback_object *xfb_obj = ctx->TransformFeedback.CurrentObject; /* BRW_NEW_VERTEX_PROGRAM */ @@ -69,9 +69,10 @@ gen6_update_sol_surfaces(struct brw_context *brw) const struct brw_tracked_state gen6_sol_surface = { .dirty = { - .mesa = _NEW_TRANSFORM_FEEDBACK, + .mesa = 0, .brw = (BRW_NEW_BATCH | - BRW_NEW_VERTEX_PROGRAM), + BRW_NEW_VERTEX_PROGRAM | + BRW_NEW_TRANSFORM_FEEDBACK), .cache = 0 }, .emit = gen6_update_sol_surfaces, diff --git a/src/mesa/drivers/dri/i965/gen7_sol_state.c b/src/mesa/drivers/dri/i965/gen7_sol_state.c index 03709eafba9..a404e2be3d4 100644 --- a/src/mesa/drivers/dri/i965/gen7_sol_state.c +++ b/src/mesa/drivers/dri/i965/gen7_sol_state.c @@ -45,7 +45,7 @@ upload_3dstate_so_buffers(struct brw_context *brw) ctx->Shader.CurrentVertexProgram; const struct gl_transform_feedback_info *linked_xfb_info = &vs_prog->LinkedTransformFeedback; - /* _NEW_TRANSFORM_FEEDBACK */ + /* BRW_NEW_TRANSFORM_FEEDBACK */ struct gl_transform_feedback_object *xfb_obj = ctx->TransformFeedback.CurrentObject; int i; @@ -116,7 +116,7 @@ upload_3dstate_so_decl_list(struct brw_context *brw, /* BRW_NEW_VERTEX_PROGRAM */ const struct gl_shader_program *vs_prog = ctx->Shader.CurrentVertexProgram; - /* _NEW_TRANSFORM_FEEDBACK */ + /* BRW_NEW_TRANSFORM_FEEDBACK */ const struct gl_transform_feedback_info *linked_xfb_info = &vs_prog->LinkedTransformFeedback; int i; @@ -189,7 +189,7 @@ upload_3dstate_streamout(struct brw_context *brw, bool active, { struct intel_context *intel = &brw->intel; struct gl_context *ctx = &intel->ctx; - /* _NEW_TRANSFORM_FEEDBACK */ + /* BRW_NEW_TRANSFORM_FEEDBACK */ struct gl_transform_feedback_object *xfb_obj = ctx->TransformFeedback.CurrentObject; uint32_t dw1 = 0, dw2 = 0; @@ -238,7 +238,7 @@ upload_sol_state(struct brw_context *brw) { struct intel_context *intel = &brw->intel; struct gl_context *ctx = &intel->ctx; - /* _NEW_TRANSFORM_FEEDBACK */ + /* BRW_NEW_TRANSFORM_FEEDBACK */ bool active = _mesa_is_xfb_active_and_unpaused(ctx); if (active) { @@ -264,11 +264,11 @@ upload_sol_state(struct brw_context *brw) const struct brw_tracked_state gen7_sol_state = { .dirty = { .mesa = (_NEW_RASTERIZER_DISCARD | - _NEW_LIGHT | - _NEW_TRANSFORM_FEEDBACK), + _NEW_LIGHT), .brw = (BRW_NEW_BATCH | BRW_NEW_VERTEX_PROGRAM | - BRW_NEW_VUE_MAP_GEOM_OUT) + BRW_NEW_VUE_MAP_GEOM_OUT | + BRW_NEW_TRANSFORM_FEEDBACK) }, .emit = upload_sol_state, }; |