Re: [Mesa-dev] [PATCH 16/31] i965/blorp: Pull the guts of blorp_exec into a driver-agnostic header

2016-08-23 Thread Pohjolainen, Topi
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

2016-08-19 Thread Jason Ekstrand
---
 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