Re: [Mesa-dev] [PATCH 16/31] i965/blorp: Pull the guts of blorp_exec into a driver-agnostic header
On Fri, Aug 19, 2016 at 09:55:53AM -0700, Jason Ekstrand wrote: > --- > src/mesa/drivers/dri/i965/Makefile.sources | 15 +- > src/mesa/drivers/dri/i965/blorp_priv.h |2 +- > src/mesa/drivers/dri/i965/genX_blorp_exec.c | 1113 +- > src/mesa/drivers/dri/i965/genX_blorp_exec.h | 1121 > +++ > 4 files changed, 1133 insertions(+), 1118 deletions(-) > create mode 100644 src/mesa/drivers/dri/i965/genX_blorp_exec.h > > diff --git a/src/mesa/drivers/dri/i965/Makefile.sources > b/src/mesa/drivers/dri/i965/Makefile.sources > index 5ea7b96..c97486c 100644 > --- a/src/mesa/drivers/dri/i965/Makefile.sources > +++ b/src/mesa/drivers/dri/i965/Makefile.sources > @@ -259,16 +259,21 @@ i965_FILES = \ > intel_upload.c > > i965_gen6_FILES = \ > - genX_blorp_exec.c > + genX_blorp_exec.c \ > + genX_blorp_exec.h > > i965_gen7_FILES = \ > - genX_blorp_exec.c > + genX_blorp_exec.c \ > + genX_blorp_exec.h > > i965_gen75_FILES = \ > - genX_blorp_exec.c > + genX_blorp_exec.c \ > + genX_blorp_exec.h > > i965_gen8_FILES = \ > - genX_blorp_exec.c > + genX_blorp_exec.c \ > + genX_blorp_exec.h > > i965_gen9_FILES = \ > - genX_blorp_exec.c > + genX_blorp_exec.c \ > + genX_blorp_exec.h > diff --git a/src/mesa/drivers/dri/i965/blorp_priv.h > b/src/mesa/drivers/dri/i965/blorp_priv.h > index 977f54d..9b987a8 100644 > --- a/src/mesa/drivers/dri/i965/blorp_priv.h > +++ b/src/mesa/drivers/dri/i965/blorp_priv.h > @@ -141,7 +141,7 @@ struct brw_blorp_prog_data > */ > uint32_t flat_inputs; > unsigned num_varying_inputs; > - GLbitfield64 inputs_read; > + uint64_t inputs_read; > }; > > static inline unsigned > diff --git a/src/mesa/drivers/dri/i965/genX_blorp_exec.c > b/src/mesa/drivers/dri/i965/genX_blorp_exec.c > index 8c15b16..e07fa0a 100644 > --- a/src/mesa/drivers/dri/i965/genX_blorp_exec.c > +++ b/src/mesa/drivers/dri/i965/genX_blorp_exec.c > @@ -29,9 +29,7 @@ > #include "brw_context.h" > #include "brw_state.h" > > -#include "blorp_priv.h" > - > -#include "genxml/gen_macros.h" > +#include "genX_blorp_exec.h" > > static void * > blorp_emit_dwords(struct blorp_context *blorp, void *batch, unsigned n) > @@ -168,1115 +166,6 @@ blorp_emit_3dstate_multisample(struct blorp_context > *blorp, void *batch, > #endif > } > > -struct blorp_batch { > - struct blorp_context *blorp; > - void *batch; > -}; > - > -#define __gen_address_type struct blorp_address > -#define __gen_user_data struct blorp_batch > - > -static uint64_t > -__gen_combine_address(struct blorp_batch *batch, void *location, > - struct blorp_address address, uint32_t delta) > -{ > - if (address.buffer == NULL) { > - return address.offset + delta; > - } else { > - return blorp_emit_reloc(batch->blorp, batch->batch, > - location, address, delta); > - } > -} > - > -#include "genxml/genX_pack.h" > - > -#define _blorp_cmd_length(cmd) cmd ## _length > -#define _blorp_cmd_length_bias(cmd) cmd ## _length_bias > -#define _blorp_cmd_header(cmd) cmd ## _header > -#define _blorp_cmd_pack(cmd) cmd ## _pack > - > -#define blorp_emit(batch, cmd, name)\ > - for (struct cmd name = { _blorp_cmd_header(cmd) }, \ > -*_dst = blorp_emit_dwords(batch.blorp, batch.batch, \ > - _blorp_cmd_length(cmd)); \ > -__builtin_expect(_dst != NULL, 1); \ > -_blorp_cmd_pack(cmd)(, (void *)_dst, ), \ > -_dst = NULL) > - > -#define blorp_emitn(batch, cmd, n) ({ \ > - uint32_t *_dw = blorp_emit_dwords(batch.blorp, batch.batch, n); \ > - struct cmd template = { \ > - _blorp_cmd_header(cmd),\ > - .DWordLength = n - _blorp_cmd_length_bias(cmd),\ > - };\ > - _blorp_cmd_pack(cmd)(, _dw, ); \ > - _dw + 1; /* Array starts at dw[1] */ \ > - }) > - > -/* Once vertex fetcher has written full VUE entries with complete > - * header the space requirement is as follows per vertex (in bytes): > - * > - * HeaderPositionProgram constants > - * +++---+ > - * | 16 | 16 | n x 16 | > - * +++---+ > - * > - * where 'n' stands for number of varying inputs expressed as vec4s. > - * > - * The URB size is in turn expressed in 64 bytes (512 bits). > - */ > -static inline unsigned > -gen7_blorp_get_vs_entry_size(const struct brw_blorp_params *params) > -{ > -const unsigned num_varyings = > - params->wm_prog_data ? params->wm_prog_data->num_varying_inputs : 0; > -const unsigned total_needed
[Mesa-dev] [PATCH 16/31] i965/blorp: Pull the guts of blorp_exec into a driver-agnostic header
--- src/mesa/drivers/dri/i965/Makefile.sources | 15 +- src/mesa/drivers/dri/i965/blorp_priv.h |2 +- src/mesa/drivers/dri/i965/genX_blorp_exec.c | 1113 +- src/mesa/drivers/dri/i965/genX_blorp_exec.h | 1121 +++ 4 files changed, 1133 insertions(+), 1118 deletions(-) create mode 100644 src/mesa/drivers/dri/i965/genX_blorp_exec.h diff --git a/src/mesa/drivers/dri/i965/Makefile.sources b/src/mesa/drivers/dri/i965/Makefile.sources index 5ea7b96..c97486c 100644 --- a/src/mesa/drivers/dri/i965/Makefile.sources +++ b/src/mesa/drivers/dri/i965/Makefile.sources @@ -259,16 +259,21 @@ i965_FILES = \ intel_upload.c i965_gen6_FILES = \ - genX_blorp_exec.c + genX_blorp_exec.c \ + genX_blorp_exec.h i965_gen7_FILES = \ - genX_blorp_exec.c + genX_blorp_exec.c \ + genX_blorp_exec.h i965_gen75_FILES = \ - genX_blorp_exec.c + genX_blorp_exec.c \ + genX_blorp_exec.h i965_gen8_FILES = \ - genX_blorp_exec.c + genX_blorp_exec.c \ + genX_blorp_exec.h i965_gen9_FILES = \ - genX_blorp_exec.c + genX_blorp_exec.c \ + genX_blorp_exec.h diff --git a/src/mesa/drivers/dri/i965/blorp_priv.h b/src/mesa/drivers/dri/i965/blorp_priv.h index 977f54d..9b987a8 100644 --- a/src/mesa/drivers/dri/i965/blorp_priv.h +++ b/src/mesa/drivers/dri/i965/blorp_priv.h @@ -141,7 +141,7 @@ struct brw_blorp_prog_data */ uint32_t flat_inputs; unsigned num_varying_inputs; - GLbitfield64 inputs_read; + uint64_t inputs_read; }; static inline unsigned diff --git a/src/mesa/drivers/dri/i965/genX_blorp_exec.c b/src/mesa/drivers/dri/i965/genX_blorp_exec.c index 8c15b16..e07fa0a 100644 --- a/src/mesa/drivers/dri/i965/genX_blorp_exec.c +++ b/src/mesa/drivers/dri/i965/genX_blorp_exec.c @@ -29,9 +29,7 @@ #include "brw_context.h" #include "brw_state.h" -#include "blorp_priv.h" - -#include "genxml/gen_macros.h" +#include "genX_blorp_exec.h" static void * blorp_emit_dwords(struct blorp_context *blorp, void *batch, unsigned n) @@ -168,1115 +166,6 @@ blorp_emit_3dstate_multisample(struct blorp_context *blorp, void *batch, #endif } -struct blorp_batch { - struct blorp_context *blorp; - void *batch; -}; - -#define __gen_address_type struct blorp_address -#define __gen_user_data struct blorp_batch - -static uint64_t -__gen_combine_address(struct blorp_batch *batch, void *location, - struct blorp_address address, uint32_t delta) -{ - if (address.buffer == NULL) { - return address.offset + delta; - } else { - return blorp_emit_reloc(batch->blorp, batch->batch, - location, address, delta); - } -} - -#include "genxml/genX_pack.h" - -#define _blorp_cmd_length(cmd) cmd ## _length -#define _blorp_cmd_length_bias(cmd) cmd ## _length_bias -#define _blorp_cmd_header(cmd) cmd ## _header -#define _blorp_cmd_pack(cmd) cmd ## _pack - -#define blorp_emit(batch, cmd, name)\ - for (struct cmd name = { _blorp_cmd_header(cmd) }, \ -*_dst = blorp_emit_dwords(batch.blorp, batch.batch, \ - _blorp_cmd_length(cmd)); \ -__builtin_expect(_dst != NULL, 1); \ -_blorp_cmd_pack(cmd)(, (void *)_dst, ), \ -_dst = NULL) - -#define blorp_emitn(batch, cmd, n) ({ \ - uint32_t *_dw = blorp_emit_dwords(batch.blorp, batch.batch, n); \ - struct cmd template = { \ - _blorp_cmd_header(cmd),\ - .DWordLength = n - _blorp_cmd_length_bias(cmd),\ - };\ - _blorp_cmd_pack(cmd)(, _dw, ); \ - _dw + 1; /* Array starts at dw[1] */ \ - }) - -/* Once vertex fetcher has written full VUE entries with complete - * header the space requirement is as follows per vertex (in bytes): - * - * HeaderPositionProgram constants - * +++---+ - * | 16 | 16 | n x 16 | - * +++---+ - * - * where 'n' stands for number of varying inputs expressed as vec4s. - * - * The URB size is in turn expressed in 64 bytes (512 bits). - */ -static inline unsigned -gen7_blorp_get_vs_entry_size(const struct brw_blorp_params *params) -{ -const unsigned num_varyings = - params->wm_prog_data ? params->wm_prog_data->num_varying_inputs : 0; -const unsigned total_needed = 16 + 16 + num_varyings * 16; - - return DIV_ROUND_UP(total_needed, 64); -} - -/* 3DSTATE_URB -/* 3DSTATE_URB_VS - * 3DSTATE_URB_HS - * 3DSTATE_URB_DS - * 3DSTATE_URB_GS - * - * Assign the entire URB to the VS. Even though the VS disabled, URB space - * is still needed because the clipper loads the VUE's