Re: [Mesa-dev] [PATCH v03 34/38] i965: Port push constant code to genxml.

2017-05-03 Thread Kenneth Graunke
On Monday, May 1, 2017 6:43:22 PM PDT Rafael Antognolli wrote:
> The following states are ported on this patch:
>- gen6_gs_push_constants
>- gen6_vs_push_constants
>- gen6_wm_push_constants
>- gen7_tes_push_constants
> 
> v2:
>- Use helper to setup brw_address (Kristian)
> v3:
>- Do not use macro for upload_constant_state (Ken)
>- Do not re-declare MOCS macro (Ken)
> 
> Signed-off-by: Rafael Antognolli 
> ---
>  src/mesa/drivers/dri/i965/Makefile.sources|   4 +-
>  src/mesa/drivers/dri/i965/brw_state.h |   5 +-
>  src/mesa/drivers/dri/i965/gen6_gs_state.c |  33 +---
>  src/mesa/drivers/dri/i965/gen6_vs_state.c |  70 +--
>  src/mesa/drivers/dri/i965/gen6_wm_state.c |  70 +--
>  src/mesa/drivers/dri/i965/gen7_ds_state.c |  57 +-
>  src/mesa/drivers/dri/i965/gen7_hs_state.c |  60 +-
>  src/mesa/drivers/dri/i965/genX_state_upload.c | 240 +--
>  8 files changed, 227 insertions(+), 312 deletions(-)
>  delete mode 100644 src/mesa/drivers/dri/i965/gen6_vs_state.c
>  delete mode 100644 src/mesa/drivers/dri/i965/gen6_wm_state.c
>  delete mode 100644 src/mesa/drivers/dri/i965/gen7_ds_state.c
>  delete mode 100644 src/mesa/drivers/dri/i965/gen7_hs_state.c

Shouldn't gen7_upload_constant_state() in gen6_constant_state.c get
deleted in this patch?

> @@ -1752,6 +1764,145 @@ static const struct brw_tracked_state 
> genX(scissor_state) = {
> .emit = genX(upload_scissor_state),
>  };
>  
> +#if GEN_GEN >= 7
> +UNUSED static const uint32_t push_constant_opcodes[] = {
> +   [MESA_SHADER_VERTEX]  = 21,
> +   [MESA_SHADER_TESS_CTRL]   = 25, /* HS */
> +   [MESA_SHADER_TESS_EVAL]   = 26, /* DS */
> +   [MESA_SHADER_GEOMETRY]= 22,
> +   [MESA_SHADER_FRAGMENT]= 23,
> +   [MESA_SHADER_COMPUTE] = 0,
> +};
> +
> +static void
> +upload_constant_state(struct brw_context *brw,
> +  struct brw_stage_state *stage_state,
> +  bool active, uint32_t stage)
> +{
> +   UNUSED uint32_t mocs = GEN_GEN < 8 ? GEN7_MOCS_L3 : 0;
> +   active = active && stage_state->push_const_size != 0;
> +
> +   brw_batch_emit(brw, GENX(3DSTATE_CONSTANT_VS), pkt) {
> +  pkt._3DCommandSubOpcode = push_constant_opcodes[stage];
> +  if (active) {
> +#if GEN_GEN >= 9
> + pkt.ConstantBody.ConstantBuffer2ReadLength =
> +stage_state->push_const_size;
> + pkt.ConstantBody.PointerToConstantBuffer2 =
> +render_ro_bo(
> +   brw->batch.bo, stage_state->push_const_offset);

I don't think you need to line-wrap this.

> +#else
> + pkt.ConstantBody.ConstantBuffer0ReadLength =
> +stage_state->push_const_size;
> + pkt.ConstantBody.PointerToConstantBuffer0.offset =
> +stage_state->push_const_offset | mocs;
> +#endif
> +  }
> +   }
> +
> +   brw->ctx.NewDriverState |= GEN_GEN >= 9 ? BRW_NEW_SURFACES : 0;
> +}
> +#endif
> +
> +static void
> +genX(upload_vs_push_constants)(struct brw_context *brw)
> +{
> +   struct brw_stage_state *stage_state = >vs.base;
> +
> +   /* _BRW_NEW_VERTEX_PROGRAM */
> +   const struct brw_program *vp = brw_program_const(brw->vertex_program);
> +   /* BRW_NEW_VS_PROG_DATA */
> +   const struct brw_stage_prog_data *prog_data = brw->vs.base.prog_data;
> +
> +   _mesa_shader_write_subroutine_indices(>ctx, MESA_SHADER_VERTEX);
> +   gen6_upload_push_constants(brw, >program, prog_data, stage_state);
> +
> +#if GEN_GEN >= 7
> +   if (brw->gen == 7 && !brw->is_haswell && !brw->is_baytrail)

   if (GEN_GEN == 7 && !GEN_IS_HASWELL && !brw->is_baytrail)

> +  gen7_emit_vs_workaround_flush(brw);
> +
> +   upload_constant_state(brw, stage_state, true /* active */,
> + MESA_SHADER_VERTEX);
> +#endif
> +}

With the old code deleted,
Reviewed-by: Kenneth Graunke 


signature.asc
Description: This is a digitally signed message part.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH v03 34/38] i965: Port push constant code to genxml.

2017-05-01 Thread Rafael Antognolli
The following states are ported on this patch:
   - gen6_gs_push_constants
   - gen6_vs_push_constants
   - gen6_wm_push_constants
   - gen7_tes_push_constants

v2:
   - Use helper to setup brw_address (Kristian)
v3:
   - Do not use macro for upload_constant_state (Ken)
   - Do not re-declare MOCS macro (Ken)

Signed-off-by: Rafael Antognolli 
---
 src/mesa/drivers/dri/i965/Makefile.sources|   4 +-
 src/mesa/drivers/dri/i965/brw_state.h |   5 +-
 src/mesa/drivers/dri/i965/gen6_gs_state.c |  33 +---
 src/mesa/drivers/dri/i965/gen6_vs_state.c |  70 +--
 src/mesa/drivers/dri/i965/gen6_wm_state.c |  70 +--
 src/mesa/drivers/dri/i965/gen7_ds_state.c |  57 +-
 src/mesa/drivers/dri/i965/gen7_hs_state.c |  60 +-
 src/mesa/drivers/dri/i965/genX_state_upload.c | 240 +--
 8 files changed, 227 insertions(+), 312 deletions(-)
 delete mode 100644 src/mesa/drivers/dri/i965/gen6_vs_state.c
 delete mode 100644 src/mesa/drivers/dri/i965/gen6_wm_state.c
 delete mode 100644 src/mesa/drivers/dri/i965/gen7_ds_state.c
 delete mode 100644 src/mesa/drivers/dri/i965/gen7_hs_state.c

diff --git a/src/mesa/drivers/dri/i965/Makefile.sources 
b/src/mesa/drivers/dri/i965/Makefile.sources
index a63d576..34162bd 100644
--- a/src/mesa/drivers/dri/i965/Makefile.sources
+++ b/src/mesa/drivers/dri/i965/Makefile.sources
@@ -87,11 +87,7 @@ i965_FILES = \
gen6_sol.c \
gen6_urb.c \
gen6_viewport_state.c \
-   gen6_vs_state.c \
-   gen6_wm_state.c \
gen7_cs_state.c \
-   gen7_ds_state.c \
-   gen7_hs_state.c \
gen7_l3_state.c \
gen7_misc_state.c \
gen7_sol_state.c \
diff --git a/src/mesa/drivers/dri/i965/brw_state.h 
b/src/mesa/drivers/dri/i965/brw_state.h
index 6adcf46..084f97f 100644
--- a/src/mesa/drivers/dri/i965/brw_state.h
+++ b/src/mesa/drivers/dri/i965/brw_state.h
@@ -109,7 +109,6 @@ extern const struct brw_tracked_state brw_cs_state;
 extern const struct brw_tracked_state gen7_cs_push_constants;
 extern const struct brw_tracked_state gen6_binding_table_pointers;
 extern const struct brw_tracked_state gen6_color_calc_state;
-extern const struct brw_tracked_state gen6_gs_push_constants;
 extern const struct brw_tracked_state gen6_gs_binding_table;
 extern const struct brw_tracked_state gen6_multisample_state;
 extern const struct brw_tracked_state gen6_renderbuffer_surfaces;
@@ -118,13 +117,9 @@ extern const struct brw_tracked_state gen6_sol_surface;
 extern const struct brw_tracked_state gen6_sf_vp;
 extern const struct brw_tracked_state gen6_urb;
 extern const struct brw_tracked_state gen6_viewport_state;
-extern const struct brw_tracked_state gen6_vs_push_constants;
-extern const struct brw_tracked_state gen6_wm_push_constants;
 extern const struct brw_tracked_state gen7_depthbuffer;
-extern const struct brw_tracked_state gen7_tcs_push_constants;
 extern const struct brw_tracked_state gen7_l3_state;
 extern const struct brw_tracked_state gen7_push_constant_space;
-extern const struct brw_tracked_state gen7_tes_push_constants;
 extern const struct brw_tracked_state gen7_urb;
 extern const struct brw_tracked_state haswell_cut_index;
 extern const struct brw_tracked_state gen8_index_buffer;
diff --git a/src/mesa/drivers/dri/i965/gen6_gs_state.c 
b/src/mesa/drivers/dri/i965/gen6_gs_state.c
index 6a9e951..6450c76 100644
--- a/src/mesa/drivers/dri/i965/gen6_gs_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_gs_state.c
@@ -31,39 +31,6 @@
 #include "intel_batchbuffer.h"
 #include "main/shaderapi.h"
 
-static void
-gen6_upload_gs_push_constants(struct brw_context *brw)
-{
-   struct brw_stage_state *stage_state = >gs.base;
-
-   /* BRW_NEW_GEOMETRY_PROGRAM */
-   const struct brw_program *gp = brw_program_const(brw->geometry_program);
-
-   if (gp) {
-  /* BRW_NEW_GS_PROG_DATA */
-  struct brw_stage_prog_data *prog_data = brw->gs.base.prog_data;
-
-  _mesa_shader_write_subroutine_indices(>ctx, MESA_SHADER_GEOMETRY);
-  gen6_upload_push_constants(brw, >program, prog_data, stage_state);
-   }
-
-   if (brw->gen >= 7)
-  gen7_upload_constant_state(brw, stage_state, gp, _3DSTATE_CONSTANT_GS);
-}
-
-const struct brw_tracked_state gen6_gs_push_constants = {
-   .dirty = {
-  .mesa  = _NEW_PROGRAM_CONSTANTS |
-   _NEW_TRANSFORM,
-  .brw   = BRW_NEW_BATCH |
-   BRW_NEW_BLORP |
-   BRW_NEW_GEOMETRY_PROGRAM |
-   BRW_NEW_GS_PROG_DATA |
-   BRW_NEW_PUSH_CONSTANT_ALLOCATION,
-   },
-   .emit = gen6_upload_gs_push_constants,
-};
-
 void
 upload_gs_state_for_tf(struct brw_context *brw)
 {
diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c 
b/src/mesa/drivers/dri/i965/gen6_vs_state.c
deleted file mode 100644
index b2d2306..000
--- a/src/mesa/drivers/dri/i965/gen6_vs_state.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any