[Mesa-dev] [PATCH 16/19] i965: Add brw_populate_default_key

Timothy Arceri tarceri at itsqueeze.com
Sat Jun 30 01:40:25 UTC 2018


On 15/05/18 02:52, Jordan Justen wrote:
> We will need to populate the default key for ARB_get_program_binary to
> allow us to retrieve the default gen program to store save in the

store save - > store ???

> program binary.
> 
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
>   src/mesa/drivers/dri/i965/brw_cs.c      | 15 ++++++---
>   src/mesa/drivers/dri/i965/brw_cs.h      |  4 +++
>   src/mesa/drivers/dri/i965/brw_gs.c      | 16 ++++++---
>   src/mesa/drivers/dri/i965/brw_gs.h      |  4 +++
>   src/mesa/drivers/dri/i965/brw_program.c | 35 ++++++++++++++++++++
>   src/mesa/drivers/dri/i965/brw_program.h | 15 +++++++++
>   src/mesa/drivers/dri/i965/brw_tcs.c     | 57 +++++++++++++++++++--------------
>   src/mesa/drivers/dri/i965/brw_tes.c     | 40 ++++++++++++++---------
>   src/mesa/drivers/dri/i965/brw_vs.c      | 26 ++++++++++-----
>   src/mesa/drivers/dri/i965/brw_vs.h      |  4 +++
>   src/mesa/drivers/dri/i965/brw_wm.c      | 48 ++++++++++++++++-----------
>   src/mesa/drivers/dri/i965/brw_wm.h      |  4 +++
>   12 files changed, 195 insertions(+), 73 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_cs.c b/src/mesa/drivers/dri/i965/brw_cs.c
> index 9b1b0832b5a..614eb64bca9 100644
> --- a/src/mesa/drivers/dri/i965/brw_cs.c
> +++ b/src/mesa/drivers/dri/i965/brw_cs.c
> @@ -184,6 +184,16 @@ brw_upload_cs_prog(struct brw_context *brw)
>      assert(success);
>   }
>   
> +void
> +brw_cs_populate_default_key(const struct gen_device_info *devinfo,
> +                            struct brw_cs_prog_key *key,
> +                            struct gl_program *prog)
> +{
> +   memset(key, 0, sizeof(*key));
> +   key->program_string_id = brw_program(prog)->id;
> +
> +   brw_setup_tex_for_precompile(devinfo, &key->tex, prog);
> +}
>   
>   bool
>   brw_cs_precompile(struct gl_context *ctx, struct gl_program *prog)
> @@ -193,10 +203,7 @@ brw_cs_precompile(struct gl_context *ctx, struct gl_program *prog)
>   
>      struct brw_program *bcp = brw_program(prog);
>   
> -   memset(&key, 0, sizeof(key));
> -   key.program_string_id = bcp->id;
> -
> -   brw_setup_tex_for_precompile(&brw->screen->devinfo, &key.tex, prog);
> +   brw_cs_populate_default_key(&brw->screen->devinfo, &key, prog);
>   
>      uint32_t old_prog_offset = brw->cs.base.prog_offset;
>      struct brw_stage_prog_data *old_prog_data = brw->cs.base.prog_data;
> diff --git a/src/mesa/drivers/dri/i965/brw_cs.h b/src/mesa/drivers/dri/i965/brw_cs.h
> index 60eb19c3594..669d4b544eb 100644
> --- a/src/mesa/drivers/dri/i965/brw_cs.h
> +++ b/src/mesa/drivers/dri/i965/brw_cs.h
> @@ -34,6 +34,10 @@ brw_upload_cs_prog(struct brw_context *brw);
>   
>   void
>   brw_cs_populate_key(struct brw_context *brw, struct brw_cs_prog_key *key);
> +void
> +brw_cs_populate_default_key(const struct gen_device_info *devinfo,
> +                            struct brw_cs_prog_key *key,
> +                            struct gl_program *prog);
>   
>   #ifdef __cplusplus
>   }
> diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c
> index f488fab009e..9d4dc942d34 100644
> --- a/src/mesa/drivers/dri/i965/brw_gs.c
> +++ b/src/mesa/drivers/dri/i965/brw_gs.c
> @@ -208,6 +208,17 @@ brw_upload_gs_prog(struct brw_context *brw)
>      assert(success);
>   }
>   
> +void
> +brw_gs_populate_default_key(const struct gen_device_info *devinfo,
> +                            struct brw_gs_prog_key *key,
> +                            struct gl_program *prog)
> +{
> +   memset(key, 0, sizeof(*key));
> +
> +   brw_setup_tex_for_precompile(devinfo, &key->tex, prog);
> +   key->program_string_id = brw_program(prog)->id;
> +}
> +
>   bool
>   brw_gs_precompile(struct gl_context *ctx, struct gl_program *prog)
>   {
> @@ -219,10 +230,7 @@ brw_gs_precompile(struct gl_context *ctx, struct gl_program *prog)
>   
>      struct brw_program *bgp = brw_program(prog);
>   
> -   memset(&key, 0, sizeof(key));
> -
> -   brw_setup_tex_for_precompile(&brw->screen->devinfo, &key.tex, prog);
> -   key.program_string_id = bgp->id;
> +   brw_gs_populate_default_key(&brw->screen->devinfo, &key, prog);
>   
>      success = brw_codegen_gs_prog(brw, bgp, &key);
>   
> diff --git a/src/mesa/drivers/dri/i965/brw_gs.h b/src/mesa/drivers/dri/i965/brw_gs.h
> index 537a41679df..cff994a9323 100644
> --- a/src/mesa/drivers/dri/i965/brw_gs.h
> +++ b/src/mesa/drivers/dri/i965/brw_gs.h
> @@ -40,6 +40,10 @@ brw_upload_gs_prog(struct brw_context *brw);
>   void
>   brw_gs_populate_key(struct brw_context *brw,
>                       struct brw_gs_prog_key *key);
> +void
> +brw_gs_populate_default_key(const struct gen_device_info *devinfo,
> +                            struct brw_gs_prog_key *key,
> +                            struct gl_program *prog);
>   
>   #ifdef __cplusplus
>   } /* extern "C" */
> diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c
> index ca934b91c9a..a54d90e92a7 100644
> --- a/src/mesa/drivers/dri/i965/brw_program.c
> +++ b/src/mesa/drivers/dri/i965/brw_program.c
> @@ -48,6 +48,11 @@
>   #include "brw_defines.h"
>   #include "intel_batchbuffer.h"
>   
> +#include "brw_cs.h"
> +#include "brw_gs.h"
> +#include "brw_vs.h"
> +#include "brw_wm.h"
> +
>   static bool
>   brw_nir_lower_uniforms(nir_shader *nir, bool is_scalar)
>   {
> @@ -844,3 +849,33 @@ brw_prog_key_set_id(union brw_any_prog_key *key, gl_shader_stage stage,
>      assert((int)stage >= 0 && stage < ARRAY_SIZE(stage_offsets));
>      *(unsigned*)((uint8_t*)key + stage_offsets[stage]) = id;
>   }
> +
> +void
> +brw_populate_default_key(const struct gen_device_info *devinfo,
> +                         union brw_any_prog_key *prog_key,
> +                         struct gl_shader_program *sh_prog,
> +                         struct gl_program *prog)
> +{
> +   switch (prog->info.stage) {
> +   case MESA_SHADER_VERTEX:
> +      brw_vs_populate_default_key(devinfo, &prog_key->vs, prog);
> +      break;
> +   case MESA_SHADER_TESS_CTRL:
> +      brw_tcs_populate_default_key(devinfo, &prog_key->tcs, sh_prog, prog);
> +      break;
> +   case MESA_SHADER_TESS_EVAL:
> +      brw_tes_populate_default_key(devinfo, &prog_key->tes, sh_prog, prog);
> +      break;
> +   case MESA_SHADER_GEOMETRY:
> +      brw_gs_populate_default_key(devinfo, &prog_key->gs, prog);
> +      break;
> +   case MESA_SHADER_FRAGMENT:
> +      brw_wm_populate_default_key(devinfo, &prog_key->wm, prog);
> +      break;
> +   case MESA_SHADER_COMPUTE:
> +      brw_cs_populate_default_key(devinfo, &prog_key->cs, prog);
> +      break;
> +   default:
> +      unreachable("Unsupported stage!");
> +   }
> +}
> diff --git a/src/mesa/drivers/dri/i965/brw_program.h b/src/mesa/drivers/dri/i965/brw_program.h
> index c8656fcff1f..32c87fa2321 100644
> --- a/src/mesa/drivers/dri/i965/brw_program.h
> +++ b/src/mesa/drivers/dri/i965/brw_program.h
> @@ -82,10 +82,17 @@ brw_assign_common_binding_table_offsets(const struct gen_device_info *devinfo,
>                                           const struct gl_program *prog,
>                                           struct brw_stage_prog_data *stage_prog_data,
>                                           uint32_t next_binding_table_offset);
> +
>   void
>   brw_prog_key_set_id(union brw_any_prog_key *key, gl_shader_stage stage,
>                       unsigned id);
>   
> +void
> +brw_populate_default_key(const struct gen_device_info *devinfo,
> +                         union brw_any_prog_key *prog_key,
> +                         struct gl_shader_program *sh_prog,
> +                         struct gl_program *prog);
> +
>   void
>   brw_stage_prog_data_free(const void *prog_data);
>   
> @@ -108,9 +115,17 @@ GLboolean brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog
>   void brw_upload_tcs_prog(struct brw_context *brw);
>   void brw_tcs_populate_key(struct brw_context *brw,
>                             struct brw_tcs_prog_key *key);
> +void brw_tcs_populate_default_key(const struct gen_device_info *devinfo,
> +                                  struct brw_tcs_prog_key *key,
> +                                  struct gl_shader_program *sh_prog,
> +                                  struct gl_program *prog);
>   void brw_upload_tes_prog(struct brw_context *brw);
>   void brw_tes_populate_key(struct brw_context *brw,
>                             struct brw_tes_prog_key *key);
> +void brw_tes_populate_default_key(const struct gen_device_info *devinfo,
> +                                  struct brw_tes_prog_key *key,
> +                                  struct gl_shader_program *sh_prog,
> +                                  struct gl_program *prog);
>   
>   void brw_write_blob_program_data(struct blob *binary, gl_shader_stage stage,
>                                    const void *program,
> diff --git a/src/mesa/drivers/dri/i965/brw_tcs.c b/src/mesa/drivers/dri/i965/brw_tcs.c
> index 70313fee8ac..eaea00e9e48 100644
> --- a/src/mesa/drivers/dri/i965/brw_tcs.c
> +++ b/src/mesa/drivers/dri/i965/brw_tcs.c
> @@ -354,6 +354,37 @@ brw_upload_tcs_prog(struct brw_context *brw)
>      assert(success);
>   }
>   
> +void
> +brw_tcs_populate_default_key(const struct gen_device_info *devinfo,
> +                             struct brw_tcs_prog_key *key,
> +                             struct gl_shader_program *sh_prog,
> +                             struct gl_program *prog)
> +{
> +   struct brw_program *btcp = brw_program(prog);
> +   const struct gl_linked_shader *tes =
> +      sh_prog->_LinkedShaders[MESA_SHADER_TESS_EVAL];
> +
> +   memset(key, 0, sizeof(*key));
> +
> +   key->program_string_id = btcp->id;
> +   brw_setup_tex_for_precompile(devinfo, &key->tex, prog);
> +
> +   /* Guess that the input and output patches have the same dimensionality. */
> +   if (devinfo->gen < 8)
> +      key->input_vertices = prog->info.tess.tcs_vertices_out;
> +
> +   if (tes) {
> +      key->tes_primitive_mode = tes->Program->info.tess.primitive_mode;
> +      key->quads_workaround = devinfo->gen < 9 &&
> +                              tes->Program->info.tess.primitive_mode == GL_QUADS &&
> +                              tes->Program->info.tess.spacing == TESS_SPACING_EQUAL;
> +   } else {
> +      key->tes_primitive_mode = GL_TRIANGLES;
> +   }
> +
> +   key->outputs_written = prog->nir->info.outputs_written;
> +   key->patch_outputs_written = prog->nir->info.patch_outputs_written;
> +}
>   
>   bool
>   brw_tcs_precompile(struct gl_context *ctx,
> @@ -369,31 +400,9 @@ brw_tcs_precompile(struct gl_context *ctx,
>      struct brw_program *btcp = brw_program(prog);
>      const struct gl_linked_shader *tes =
>         shader_prog->_LinkedShaders[MESA_SHADER_TESS_EVAL];
> -   const struct gen_device_info *devinfo = &brw->screen->devinfo;
> -
> -   memset(&key, 0, sizeof(key));
> -
> -   key.program_string_id = btcp->id;
> -   brw_setup_tex_for_precompile(&brw->screen->devinfo, &key.tex, prog);
> -
> -   /* Guess that the input and output patches have the same dimensionality. */
> -   if (devinfo->gen < 8)
> -      key.input_vertices = prog->info.tess.tcs_vertices_out;
> -
> -   struct brw_program *btep;
> -   if (tes) {
> -      btep = brw_program(tes->Program);
> -      key.tes_primitive_mode = tes->Program->info.tess.primitive_mode;
> -      key.quads_workaround = devinfo->gen < 9 &&
> -                             tes->Program->info.tess.primitive_mode == GL_QUADS &&
> -                             tes->Program->info.tess.spacing == TESS_SPACING_EQUAL;
> -   } else {
> -      btep = NULL;
> -      key.tes_primitive_mode = GL_TRIANGLES;
> -   }
> +   struct brw_program *btep = tes ? brw_program(tes->Program) : NULL;
>   
> -   key.outputs_written = prog->nir->info.outputs_written;
> -   key.patch_outputs_written = prog->nir->info.patch_outputs_written;
> +   brw_tcs_populate_default_key(&brw->screen->devinfo, &key, shader_prog, prog);
>   
>      success = brw_codegen_tcs_prog(brw, btcp, btep, &key);
>   
> diff --git a/src/mesa/drivers/dri/i965/brw_tes.c b/src/mesa/drivers/dri/i965/brw_tes.c
> index 72b218ac14f..2811dbd649a 100644
> --- a/src/mesa/drivers/dri/i965/brw_tes.c
> +++ b/src/mesa/drivers/dri/i965/brw_tes.c
> @@ -211,6 +211,30 @@ brw_upload_tes_prog(struct brw_context *brw)
>      assert(success);
>   }
>   
> +void
> +brw_tes_populate_default_key(const struct gen_device_info *devinfo,
> +                             struct brw_tes_prog_key *key,
> +                             struct gl_shader_program *sh_prog,
> +                             struct gl_program *prog)
> +{
> +   struct brw_program *btep = brw_program(prog);
> +
> +   memset(key, 0, sizeof(*key));
> +
> +   key->program_string_id = btep->id;
> +   key->inputs_read = prog->nir->info.inputs_read;
> +   key->patch_inputs_read = prog->nir->info.patch_inputs_read;
> +
> +   if (sh_prog->_LinkedShaders[MESA_SHADER_TESS_CTRL]) {
> +      struct gl_program *tcp =
> +         sh_prog->_LinkedShaders[MESA_SHADER_TESS_CTRL]->Program;
> +      key->inputs_read |= tcp->nir->info.outputs_written &
> +         ~(VARYING_BIT_TESS_LEVEL_INNER | VARYING_BIT_TESS_LEVEL_OUTER);
> +      key->patch_inputs_read |= tcp->nir->info.patch_outputs_written;
> +   }
> +
> +   brw_setup_tex_for_precompile(devinfo, &key->tex, prog);
> +}
>   
>   bool
>   brw_tes_precompile(struct gl_context *ctx,
> @@ -225,21 +249,7 @@ brw_tes_precompile(struct gl_context *ctx,
>   
>      struct brw_program *btep = brw_program(prog);
>   
> -   memset(&key, 0, sizeof(key));
> -
> -   key.program_string_id = btep->id;
> -   key.inputs_read = prog->nir->info.inputs_read;
> -   key.patch_inputs_read = prog->nir->info.patch_inputs_read;
> -
> -   if (shader_prog->_LinkedShaders[MESA_SHADER_TESS_CTRL]) {
> -      struct gl_program *tcp =
> -         shader_prog->_LinkedShaders[MESA_SHADER_TESS_CTRL]->Program;
> -      key.inputs_read |= tcp->nir->info.outputs_written &
> -         ~(VARYING_BIT_TESS_LEVEL_INNER | VARYING_BIT_TESS_LEVEL_OUTER);
> -      key.patch_inputs_read |= tcp->nir->info.patch_outputs_written;
> -   }
> -
> -   brw_setup_tex_for_precompile(&brw->screen->devinfo, &key.tex, prog);
> +   brw_tes_populate_default_key(&brw->screen->devinfo, &key, shader_prog, prog);
>   
>      success = brw_codegen_tes_prog(brw, btep, &key);
>   
> diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c
> index f024c33c02d..21e75664ae9 100644
> --- a/src/mesa/drivers/dri/i965/brw_vs.c
> +++ b/src/mesa/drivers/dri/i965/brw_vs.c
> @@ -356,6 +356,23 @@ brw_upload_vs_prog(struct brw_context *brw)
>      assert(success);
>   }
>   
> +void
> +brw_vs_populate_default_key(const struct gen_device_info *devinfo,
> +                            struct brw_vs_prog_key *key,
> +                            struct gl_program *prog)
> +{
> +   struct brw_program *bvp = brw_program(prog);
> +
> +   memset(key, 0, sizeof(*key));
> +
> +   brw_setup_tex_for_precompile(devinfo, &key->tex, prog);
> +   key->program_string_id = bvp->id;
> +   key->clamp_vertex_color =
> +      (prog->info.outputs_written &
> +       (VARYING_BIT_COL0 | VARYING_BIT_COL1 | VARYING_BIT_BFC0 |
> +        VARYING_BIT_BFC1));
> +}
> +
>   bool
>   brw_vs_precompile(struct gl_context *ctx, struct gl_program *prog)
>   {
> @@ -367,14 +384,7 @@ brw_vs_precompile(struct gl_context *ctx, struct gl_program *prog)
>   
>      struct brw_program *bvp = brw_program(prog);
>   
> -   memset(&key, 0, sizeof(key));
> -
> -   brw_setup_tex_for_precompile(&brw->screen->devinfo, &key.tex, prog);
> -   key.program_string_id = bvp->id;
> -   key.clamp_vertex_color =
> -      (prog->info.outputs_written &
> -       (VARYING_BIT_COL0 | VARYING_BIT_COL1 | VARYING_BIT_BFC0 |
> -        VARYING_BIT_BFC1));
> +   brw_vs_populate_default_key(&brw->screen->devinfo, &key, prog);
>   
>      success = brw_codegen_vs_prog(brw, bvp, &key);
>   
> diff --git a/src/mesa/drivers/dri/i965/brw_vs.h b/src/mesa/drivers/dri/i965/brw_vs.h
> index 9d01aacb6a2..94419f3af0c 100644
> --- a/src/mesa/drivers/dri/i965/brw_vs.h
> +++ b/src/mesa/drivers/dri/i965/brw_vs.h
> @@ -45,6 +45,10 @@ brw_upload_vs_prog(struct brw_context *brw);
>   void
>   brw_vs_populate_key(struct brw_context *brw,
>                       struct brw_vs_prog_key *key);
> +void
> +brw_vs_populate_default_key(const struct gen_device_info *devinfo,
> +                            struct brw_vs_prog_key *key,
> +                            struct gl_program *prog);
>   
>   #ifdef __cplusplus
>   } /* extern "C" */
> diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c
> index 3410d489073..50a961b8902 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm.c
> @@ -605,47 +605,59 @@ brw_upload_wm_prog(struct brw_context *brw)
>      assert(success);
>   }
>   
> -bool
> -brw_fs_precompile(struct gl_context *ctx, struct gl_program *prog)
> +void
> +brw_wm_populate_default_key(const struct gen_device_info *devinfo,
> +                            struct brw_wm_prog_key *key,
> +                            struct gl_program *prog)
>   {
> -   struct brw_context *brw = brw_context(ctx);
> -   const struct gen_device_info *devinfo = &brw->screen->devinfo;
> -   struct brw_wm_prog_key key;
> -
> -   struct brw_program *bfp = brw_program(prog);
> -
> -   memset(&key, 0, sizeof(key));
> +   memset(key, 0, sizeof(*key));
>   
>      uint64_t outputs_written = prog->info.outputs_written;
>   
>      if (devinfo->gen < 6) {
>         if (prog->info.fs.uses_discard)
> -         key.iz_lookup |= BRW_WM_IZ_PS_KILL_ALPHATEST_BIT;
> +         key->iz_lookup |= BRW_WM_IZ_PS_KILL_ALPHATEST_BIT;
>   
>         if (outputs_written & BITFIELD64_BIT(FRAG_RESULT_DEPTH))
> -         key.iz_lookup |= BRW_WM_IZ_PS_COMPUTES_DEPTH_BIT;
> +         key->iz_lookup |= BRW_WM_IZ_PS_COMPUTES_DEPTH_BIT;
>   
>         /* Just assume depth testing. */
> -      key.iz_lookup |= BRW_WM_IZ_DEPTH_TEST_ENABLE_BIT;
> -      key.iz_lookup |= BRW_WM_IZ_DEPTH_WRITE_ENABLE_BIT;
> +      key->iz_lookup |= BRW_WM_IZ_DEPTH_TEST_ENABLE_BIT;
> +      key->iz_lookup |= BRW_WM_IZ_DEPTH_WRITE_ENABLE_BIT;
>      }
>   
>      if (devinfo->gen < 6 || _mesa_bitcount_64(prog->info.inputs_read &
>                                                BRW_FS_VARYING_INPUT_MASK) > 16) {
> -      key.input_slots_valid = prog->info.inputs_read | VARYING_BIT_POS;
> +      key->input_slots_valid = prog->info.inputs_read | VARYING_BIT_POS;
>      }
>   
> -   brw_setup_tex_for_precompile(&brw->screen->devinfo, &key.tex, prog);
> +   brw_setup_tex_for_precompile(devinfo, &key->tex, prog);
>   
> -   key.nr_color_regions = _mesa_bitcount_64(outputs_written &
> +   key->nr_color_regions = _mesa_bitcount_64(outputs_written &
>            ~(BITFIELD64_BIT(FRAG_RESULT_DEPTH) |
>              BITFIELD64_BIT(FRAG_RESULT_STENCIL) |
>              BITFIELD64_BIT(FRAG_RESULT_SAMPLE_MASK)));
>   
> -   key.program_string_id = bfp->id;
> +   key->program_string_id = brw_program(prog)->id;
>   
>      /* Whether reads from the framebuffer should behave coherently. */
> -   key.coherent_fb_fetch = ctx->Extensions.EXT_shader_framebuffer_fetch;
> +   key->coherent_fb_fetch = devinfo->gen >= 9;
> +}
> +
> +bool
> +brw_fs_precompile(struct gl_context *ctx, struct gl_program *prog)
> +{
> +   struct brw_context *brw = brw_context(ctx);
> +   const struct gen_device_info *devinfo = &brw->screen->devinfo;
> +   struct brw_wm_prog_key key;
> +
> +   struct brw_program *bfp = brw_program(prog);
> +
> +   brw_wm_populate_default_key(&brw->screen->devinfo, &key, prog);
> +
> +   /* check brw_wm_populate_default_key coherent_fb_fetch setting */
> +   assert(key.coherent_fb_fetch ==
> +          ctx->Extensions.EXT_shader_framebuffer_fetch);
>   
>      uint32_t old_prog_offset = brw->wm.base.prog_offset;
>      struct brw_stage_prog_data *old_prog_data = brw->wm.base.prog_data;
> diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h
> index 113cdf33bbf..ea944972997 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm.h
> +++ b/src/mesa/drivers/dri/i965/brw_wm.h
> @@ -47,6 +47,10 @@ brw_upload_wm_prog(struct brw_context *brw);
>   void
>   brw_wm_populate_key(struct brw_context *brw,
>                       struct brw_wm_prog_key *key);
> +void
> +brw_wm_populate_default_key(const struct gen_device_info *devinfo,
> +                            struct brw_wm_prog_key *key,
> +                            struct gl_program *prog);
>   
>   #ifdef __cplusplus
>   } // extern "C"
> 


More information about the mesa-dev mailing list