X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fi965%2Fgen7_gs_state.c;h=7d733933e2b0035f80e6743718e148214404b393;hb=be095e11e41158f91bcb3f6fcbc2e2a91a5d9124;hp=d18ae155185ed2d6ea7936e212d5e014d970d0a6;hpb=30259856a8a82a55c030df1ad052e505c61144bc;p=mesa.git diff --git a/src/mesa/drivers/dri/i965/gen7_gs_state.c b/src/mesa/drivers/dri/i965/gen7_gs_state.c index d18ae155185..7d733933e2b 100644 --- a/src/mesa/drivers/dri/i965/gen7_gs_state.c +++ b/src/mesa/drivers/dri/i965/gen7_gs_state.c @@ -26,35 +26,6 @@ #include "brw_defines.h" #include "intel_batchbuffer.h" - -static void -gen7_upload_gs_push_constants(struct brw_context *brw) -{ - /* BRW_NEW_GEOMETRY_PROGRAM */ - const struct brw_geometry_program *vp = - (struct brw_geometry_program *) brw->geometry_program; - if (!vp) - return; - - /* CACHE_NEW_GS_PROG */ - const struct brw_vec4_prog_data *prog_data = &brw->gs.prog_data->base; - struct brw_stage_state *stage_state = &brw->gs.base; - - gen6_upload_vec4_push_constants(brw, &vp->program.Base, prog_data, - stage_state, AUB_TRACE_VS_CONSTANTS); -} - -const struct brw_tracked_state gen7_gs_push_constants = { - .dirty = { - .mesa = _NEW_TRANSFORM | _NEW_PROGRAM_CONSTANTS, - .brw = (BRW_NEW_BATCH | - BRW_NEW_GEOMETRY_PROGRAM), - .cache = CACHE_NEW_GS_PROG, - }, - .emit = gen7_upload_gs_push_constants, -}; - - static void upload_gs_state(struct brw_context *brw) { @@ -63,16 +34,8 @@ upload_gs_state(struct brw_context *brw) HSW_GS_MAX_THREADS_SHIFT : GEN6_GS_MAX_THREADS_SHIFT; /* BRW_NEW_GEOMETRY_PROGRAM */ bool active = brw->geometry_program; - /* CACHE_NEW_GS_PROG */ - const struct brw_vec4_prog_data *prog_data = &brw->gs.prog_data->base; - - /* CACHE_NEW_SAMPLER */ - BEGIN_BATCH(2); - OUT_BATCH(_3DSTATE_SAMPLER_STATE_POINTERS_GS << 16 | (2 - 2)); - OUT_BATCH(stage_state->sampler_offset); - ADVANCE_BATCH(); - - gen7_upload_constant_state(brw, stage_state, active, _3DSTATE_CONSTANT_GS); + /* BRW_NEW_GS_PROG_DATA */ + const struct brw_vue_prog_data *prog_data = &brw->gs.prog_data->base; /** * From Graphics BSpec: 3D-Media-GPGPU Engine > 3D Pipeline Stages > @@ -98,10 +61,10 @@ upload_gs_state(struct brw_context *brw) ((brw->gs.prog_data->base.base.binding_table.size_bytes / 4) << GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT)); - if (brw->gs.prog_data->base.total_scratch) { + if (brw->gs.prog_data->base.base.total_scratch) { OUT_RELOC(stage_state->scratch_bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, - ffs(brw->gs.prog_data->base.total_scratch) - 11); + ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); } @@ -114,7 +77,7 @@ upload_gs_state(struct brw_context *brw) (prog_data->urb_read_length << GEN6_GS_URB_READ_LENGTH_SHIFT) | (0 << GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT) | - (prog_data->dispatch_grf_start_reg << + (prog_data->base.dispatch_grf_start_reg << GEN6_GS_DISPATCH_START_GRF_SHIFT); /* Note: the meaning of the GEN7_GS_REORDER_TRAILING bit changes between @@ -149,9 +112,7 @@ upload_gs_state(struct brw_context *brw) GEN7_GS_CONTROL_DATA_HEADER_SIZE_SHIFT) | ((brw->gs.prog_data->invocations - 1) << GEN7_GS_INSTANCE_CONTROL_SHIFT) | - (brw->gs.prog_data->dual_instanced_dispatch ? - GEN7_GS_DISPATCH_MODE_DUAL_INSTANCE : - GEN7_GS_DISPATCH_MODE_DUAL_OBJECT) | + SET_FIELD(prog_data->dispatch_mode, GEN7_GS_DISPATCH_MODE) | GEN6_GS_STATISTICS_ENABLE | (brw->gs.prog_data->include_primitive_id ? GEN7_GS_INCLUDE_PRIMITIVE_ID : 0) | @@ -192,13 +153,12 @@ upload_gs_state(struct brw_context *brw) const struct brw_tracked_state gen7_gs_state = { .dirty = { - .mesa = _NEW_TRANSFORM | _NEW_PROGRAM_CONSTANTS, - .brw = (BRW_NEW_CONTEXT | - BRW_NEW_GEOMETRY_PROGRAM | - BRW_NEW_GS_BINDING_TABLE | - BRW_NEW_BATCH | - BRW_NEW_PUSH_CONSTANT_ALLOCATION), - .cache = CACHE_NEW_GS_PROG | CACHE_NEW_SAMPLER + .mesa = _NEW_TRANSFORM, + .brw = BRW_NEW_BATCH | + BRW_NEW_BLORP | + BRW_NEW_CONTEXT | + BRW_NEW_GEOMETRY_PROGRAM | + BRW_NEW_GS_PROG_DATA, }, .emit = upload_gs_state, };