On Fri, Aug 19, 2016 at 09:55:55AM -0700, Jason Ekstrand wrote: > --- > src/mesa/drivers/dri/i965/blorp.c | 27 +-------------------------- > src/mesa/drivers/dri/i965/blorp.h | 4 ++++ > src/mesa/drivers/dri/i965/blorp_blit.c | 2 +- > src/mesa/drivers/dri/i965/blorp_clear.c | 6 +++--- > src/mesa/drivers/dri/i965/blorp_priv.h | 21 --------------------- > src/mesa/drivers/dri/i965/brw_blorp.c | 19 +++++++++++++++++++ > src/mesa/drivers/dri/i965/genX_blorp_exec.c | 9 +++++++-- > 7 files changed, 35 insertions(+), 53 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/blorp.c > b/src/mesa/drivers/dri/i965/blorp.c > index 0688f6b..df10e50 100644 > --- a/src/mesa/drivers/dri/i965/blorp.c > +++ b/src/mesa/drivers/dri/i965/blorp.c > @@ -345,31 +345,6 @@ brw_blorp_compile_nir_shader(struct brw_context *brw, > struct nir_shader *nir, > } > > void > -brw_blorp_exec(struct brw_context *brw, const struct brw_blorp_params > *params) > -{ > - switch (brw->gen) { > - case 6: > - gen6_blorp_exec(brw, params); > - break; > - case 7: > - if (brw->is_haswell) > - gen75_blorp_exec(brw, params); > - else > - gen7_blorp_exec(brw, params); > - break; > - case 8: > - gen8_blorp_exec(brw, params); > - break; > - case 9: > - gen9_blorp_exec(brw, params); > - break; > - default: > - /* BLORP is not supported before Gen6. */ > - unreachable("not reached"); > - } > -} > - > -void > blorp_gen6_hiz_op(struct brw_context *brw, struct brw_blorp_surf *surf, > unsigned level, unsigned layer, enum gen6_hiz_op op) > { > @@ -436,5 +411,5 @@ blorp_gen6_hiz_op(struct brw_context *brw, struct > brw_blorp_surf *surf, > unreachable("not reached"); > } > > - brw_blorp_exec(brw, ¶ms); > + brw->blorp.exec(&brw->blorp, brw, ¶ms); > } > diff --git a/src/mesa/drivers/dri/i965/blorp.h > b/src/mesa/drivers/dri/i965/blorp.h > index a9ef754..671731e 100644 > --- a/src/mesa/drivers/dri/i965/blorp.h > +++ b/src/mesa/drivers/dri/i965/blorp.h > @@ -39,6 +39,8 @@ struct hash_table; > extern "C" { > #endif > > +struct brw_blorp_params; > + > struct blorp_context { > void *driver_ctx; > > @@ -56,6 +58,8 @@ struct blorp_context { > > uint32_t (*upload_shader)(struct blorp_context *, > const void *data, uint32_t size); > + void (*exec)(struct blorp_context *blorp, void *batch, > + const struct brw_blorp_params *params); > }; > > void blorp_init(struct blorp_context *blorp, void *driver_ctx, > diff --git a/src/mesa/drivers/dri/i965/blorp_blit.c > b/src/mesa/drivers/dri/i965/blorp_blit.c > index d01dfff..449e09d 100644 > --- a/src/mesa/drivers/dri/i965/blorp_blit.c > +++ b/src/mesa/drivers/dri/i965/blorp_blit.c > @@ -1647,5 +1647,5 @@ brw_blorp_blit(struct brw_context *brw, > swizzle_to_scs(GET_SWZ(src_swizzle, i)); > } > > - brw_blorp_exec(brw, ¶ms); > + brw->blorp.exec(&brw->blorp, brw, ¶ms); > } > diff --git a/src/mesa/drivers/dri/i965/blorp_clear.c > b/src/mesa/drivers/dri/i965/blorp_clear.c > index fb4d050..3b6d6d7 100644 > --- a/src/mesa/drivers/dri/i965/blorp_clear.c > +++ b/src/mesa/drivers/dri/i965/blorp_clear.c > @@ -110,7 +110,7 @@ blorp_fast_clear(struct brw_context *brw, const struct > brw_blorp_surf *surf, > brw_blorp_surface_info_init(brw, ¶ms.dst, surf, level, layer, > surf->surf->format, true); > > - brw_blorp_exec(brw, ¶ms); > + brw->blorp.exec(&brw->blorp, brw, ¶ms); > } > > > @@ -156,7 +156,7 @@ blorp_clear(struct brw_context *brw, const struct > brw_blorp_surf *surf, > brw_blorp_surface_info_init(brw, ¶ms.dst, surf, level, layer, > format, true); > > - brw_blorp_exec(brw, ¶ms); > + brw->blorp.exec(&brw->blorp, brw, ¶ms); > } > > void > @@ -186,5 +186,5 @@ brw_blorp_ccs_resolve(struct brw_context *brw, struct > brw_blorp_surf *surf, > > brw_blorp_params_get_clear_kernel(brw, ¶ms, true); > > - brw_blorp_exec(brw, ¶ms); > + brw->blorp.exec(&brw->blorp, brw, ¶ms); > } > diff --git a/src/mesa/drivers/dri/i965/blorp_priv.h > b/src/mesa/drivers/dri/i965/blorp_priv.h > index 9b987a8..c7a2a03 100644 > --- a/src/mesa/drivers/dri/i965/blorp_priv.h > +++ b/src/mesa/drivers/dri/i965/blorp_priv.h > @@ -183,27 +183,6 @@ struct brw_blorp_params > void > brw_blorp_params_init(struct brw_blorp_params *params); > > -void > -brw_blorp_exec(struct brw_context *brw, const struct brw_blorp_params > *params); > - > -void > -gen6_blorp_exec(struct brw_context *brw, > - const struct brw_blorp_params *params); > - > -void > -gen7_blorp_exec(struct brw_context *brw, > - const struct brw_blorp_params *params); > - > -void > -gen75_blorp_exec(struct brw_context *brw, > - const struct brw_blorp_params *params); > - > -void > -gen8_blorp_exec(struct brw_context *brw, const struct brw_blorp_params > *params); > - > -void > -gen9_blorp_exec(struct brw_context *brw, const struct brw_blorp_params > *params); > - > struct brw_blorp_blit_prog_key > { > /* Number of samples per pixel that have been configured in the surface > diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c > b/src/mesa/drivers/dri/i965/brw_blorp.c > index 26bf1aa..e4898a3 100644 > --- a/src/mesa/drivers/dri/i965/brw_blorp.c > +++ b/src/mesa/drivers/dri/i965/brw_blorp.c > @@ -58,6 +58,17 @@ brw_blorp_upload_shader(struct blorp_context *blorp, > return kernel; > } > > +void gen6_blorp_exec(struct blorp_context *blorp, void *batch, > + const struct brw_blorp_params *params); > +void gen7_blorp_exec(struct blorp_context *blorp, void *batch, > + const struct brw_blorp_params *params); > +void gen75_blorp_exec(struct blorp_context *blorp, void *batch, > + const struct brw_blorp_params *params); > +void gen8_blorp_exec(struct blorp_context *blorp, void *batch, > + const struct brw_blorp_params *params); > +void gen9_blorp_exec(struct blorp_context *blorp, void *batch, > + const struct brw_blorp_params *params); > + > void > brw_blorp_init(struct brw_context *brw) > { > @@ -68,21 +79,29 @@ brw_blorp_init(struct brw_context *brw) > brw->blorp.mocs.tex = 0; > brw->blorp.mocs.rb = 0; > brw->blorp.mocs.vb = 0; > + brw->blorp.exec = gen6_blorp_exec; > break; > case 7: > brw->blorp.mocs.tex = GEN7_MOCS_L3; > brw->blorp.mocs.rb = GEN7_MOCS_L3; > brw->blorp.mocs.vb = GEN7_MOCS_L3; > + if (brw->is_haswell) { > + brw->blorp.exec = gen75_blorp_exec; > + } else { > + brw->blorp.exec = gen7_blorp_exec; > + } > break; > case 8: > brw->blorp.mocs.tex = BDW_MOCS_WB; > brw->blorp.mocs.rb = BDW_MOCS_PTE; > brw->blorp.mocs.vb = BDW_MOCS_WB; > + brw->blorp.exec = gen8_blorp_exec; > break; > case 9: > brw->blorp.mocs.tex = SKL_MOCS_WB; > brw->blorp.mocs.rb = SKL_MOCS_PTE; > brw->blorp.mocs.vb = SKL_MOCS_WB; > + brw->blorp.exec = gen9_blorp_exec; > break; > default: > unreachable("Invalid gen"); > diff --git a/src/mesa/drivers/dri/i965/genX_blorp_exec.c > b/src/mesa/drivers/dri/i965/genX_blorp_exec.c > index 9ba1f8a..7390a1d 100644 > --- a/src/mesa/drivers/dri/i965/genX_blorp_exec.c > +++ b/src/mesa/drivers/dri/i965/genX_blorp_exec.c > @@ -166,10 +166,15 @@ blorp_emit_3dstate_multisample(struct blorp_context > *blorp, void *batch, > #endif > } > > +void genX(blorp_exec)(struct blorp_context *blorp, void *batch, > + const struct brw_blorp_params *params); > +
Separate prototype looks unnecessary, otherwise: Reviewed-by: Topi Pohjolainen <topi.pohjolai...@intel.com> > void > -genX(blorp_exec)(struct brw_context *brw, > +genX(blorp_exec)(struct blorp_context *blorp, void *batch, > const struct brw_blorp_params *params) > { > + assert(blorp->driver_ctx == batch); > + struct brw_context *brw = batch; > struct gl_context *ctx = &brw->ctx; > const uint32_t estimated_max_batch_usage = GEN_GEN >= 8 ? 1800 : 1500; > bool check_aperture_failed_once = false; > @@ -208,7 +213,7 @@ retry: > > brw_emit_depth_stall_flushes(brw); > > - blorp_exec(&brw->blorp, brw, params); > + blorp_exec(blorp, batch, params); > > /* Make sure we didn't wrap the batch unintentionally, and make sure we > * reserved enough space that a wrap will never happen. > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev