From: Paul Berry Date: Sat, 11 Jan 2014 05:39:25 +0000 (-0800) Subject: i965/cs: Add BRW_NEW_COMPUTE_PROGRAM state flag. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6ee4dac1ef7db88b1fd5b27b215fb8baa7bc9c66;p=mesa.git i965/cs: Add BRW_NEW_COMPUTE_PROGRAM state flag. Also add code to brw_upload_state to set it when the compute program changes. Reviewed-by: Jordan Justen Reviewed-by: Kristian Høgsberg Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index e2f26f5b2d4..bd253efb3e2 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -209,6 +209,7 @@ enum brw_state_id { BRW_STATE_CLIP_VP, BRW_STATE_SAMPLER_STATE_TABLE, BRW_STATE_VS_ATTRIB_WORKAROUNDS, + BRW_STATE_COMPUTE_PROGRAM, BRW_NUM_STATE_BITS }; @@ -288,6 +289,7 @@ enum brw_state_id { #define BRW_NEW_CLIP_VP (1ull << BRW_STATE_CLIP_VP) #define BRW_NEW_SAMPLER_STATE_TABLE (1ull << BRW_STATE_SAMPLER_STATE_TABLE) #define BRW_NEW_VS_ATTRIB_WORKAROUNDS (1ull << BRW_STATE_VS_ATTRIB_WORKAROUNDS) +#define BRW_NEW_COMPUTE_PROGRAM (1ull << BRW_STATE_COMPUTE_PROGRAM) struct brw_state_flags { /** State update flags signalled by mesa internals */ @@ -1205,6 +1207,7 @@ struct brw_context const struct gl_vertex_program *vertex_program; const struct gl_geometry_program *geometry_program; const struct gl_fragment_program *fragment_program; + const struct gl_compute_program *compute_program; /** * Number of samples in ctx->DrawBuffer, updated by BRW_NEW_NUM_SAMPLES so diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c index ab316bfc431..435f75907b0 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -580,6 +580,7 @@ static struct dirty_bit_map brw_bits[] = { DEFINE_BIT(BRW_NEW_CLIP_VP), DEFINE_BIT(BRW_NEW_SAMPLER_STATE_TABLE), DEFINE_BIT(BRW_NEW_VS_ATTRIB_WORKAROUNDS), + DEFINE_BIT(BRW_NEW_COMPUTE_PROGRAM), {0, 0, 0} }; @@ -670,6 +671,11 @@ brw_upload_pipeline_state(struct brw_context *brw, } } + if (brw->compute_program != ctx->ComputeProgram._Current) { + brw->compute_program = ctx->ComputeProgram._Current; + brw->ctx.NewDriverState |= BRW_NEW_COMPUTE_PROGRAM; + } + if (brw->meta_in_progress != _mesa_meta_in_progress(ctx)) { brw->meta_in_progress = _mesa_meta_in_progress(ctx); brw->ctx.NewDriverState |= BRW_NEW_META_IN_PROGRESS;