[Mesa-dev] [PATCH] i965: Setup pull constant state for compute programs
Iago Toral
itoral at igalia.com
Thu Oct 29 02:06:08 PDT 2015
On Thu, 2015-10-29 at 00:49 -0700, Jordan Justen wrote:
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
> src/mesa/drivers/dri/i965/brw_context.h | 2 +-
> src/mesa/drivers/dri/i965/brw_state.h | 1 +
> src/mesa/drivers/dri/i965/brw_state_upload.c | 2 ++
> src/mesa/drivers/dri/i965/gen7_cs_state.c | 32 ++++++++++++++++++++++++++++
> 4 files changed, 36 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
> index 18c361e..887b57b 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.h
> +++ b/src/mesa/drivers/dri/i965/brw_context.h
> @@ -1177,7 +1177,7 @@ struct brw_context
>
> int num_atoms[BRW_NUM_PIPELINES];
> const struct brw_tracked_state render_atoms[60];
> - const struct brw_tracked_state compute_atoms[8];
> + const struct brw_tracked_state compute_atoms[9];
>
> /* If (INTEL_DEBUG & DEBUG_BATCH) */
> struct {
> diff --git a/src/mesa/drivers/dri/i965/brw_state.h b/src/mesa/drivers/dri/i965/brw_state.h
> index dc2b941..2c7c2f3 100644
> --- a/src/mesa/drivers/dri/i965/brw_state.h
> +++ b/src/mesa/drivers/dri/i965/brw_state.h
> @@ -49,6 +49,7 @@ extern const struct brw_tracked_state brw_clip_unit;
> extern const struct brw_tracked_state brw_vs_pull_constants;
> extern const struct brw_tracked_state brw_gs_pull_constants;
> extern const struct brw_tracked_state brw_wm_pull_constants;
> +extern const struct brw_tracked_state brw_cs_pull_constants;
> extern const struct brw_tracked_state brw_constant_buffer;
> extern const struct brw_tracked_state brw_curbe_offsets;
> extern const struct brw_tracked_state brw_invariant_state;
> diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c
> index 79b8301..0344b8a 100644
> --- a/src/mesa/drivers/dri/i965/brw_state_upload.c
> +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c
> @@ -259,6 +259,7 @@ static const struct brw_tracked_state *gen7_compute_atoms[] =
> &brw_state_base_address,
> &brw_cs_image_surfaces,
> &gen7_cs_push_constants,
> + &brw_cs_pull_constants,
> &brw_cs_ubo_surfaces,
> &brw_cs_abo_surfaces,
> &brw_texture_surfaces,
> @@ -353,6 +354,7 @@ static const struct brw_tracked_state *gen8_compute_atoms[] =
> &gen8_state_base_address,
> &brw_cs_image_surfaces,
> &gen7_cs_push_constants,
> + &brw_cs_pull_constants,
> &brw_cs_ubo_surfaces,
> &brw_cs_abo_surfaces,
> &brw_texture_surfaces,
> diff --git a/src/mesa/drivers/dri/i965/gen7_cs_state.c b/src/mesa/drivers/dri/i965/gen7_cs_state.c
> index 6aeb0cb..da1d05f 100644
> --- a/src/mesa/drivers/dri/i965/gen7_cs_state.c
> +++ b/src/mesa/drivers/dri/i965/gen7_cs_state.c
> @@ -29,6 +29,7 @@
> #include "brw_shader.h"
> #include "intel_mipmap_tree.h"
> #include "intel_batchbuffer.h"
> +#include "intel_buffer_objects.h"
I think you don't need this include. Other than that:
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
> #include "brw_state.h"
>
> static unsigned
> @@ -285,3 +286,34 @@ const struct brw_tracked_state gen7_cs_push_constants = {
> },
> .emit = gen7_upload_cs_push_constants,
> };
> +
> +/**
> + * Creates a new CS constant buffer reflecting the current CS program's
> + * constants, if needed by the CS program.
> + */
> +static void
> +brw_upload_cs_pull_constants(struct brw_context *brw)
> +{
> + struct brw_stage_state *stage_state = &brw->cs.base;
> +
> + /* BRW_NEW_COMPUTE_PROGRAM */
> + struct brw_compute_program *cp =
> + (struct brw_compute_program *) brw->compute_program;
> +
> + /* BRW_NEW_CS_PROG_DATA */
> + const struct brw_stage_prog_data *prog_data = &brw->cs.prog_data->base;
> +
> + /* _NEW_PROGRAM_CONSTANTS */
> + brw_upload_pull_constants(brw, BRW_NEW_SURFACES, &cp->program.Base,
> + stage_state, prog_data, true);
> +}
> +
> +const struct brw_tracked_state brw_cs_pull_constants = {
> + .dirty = {
> + .mesa = _NEW_PROGRAM_CONSTANTS,
> + .brw = BRW_NEW_BATCH |
> + BRW_NEW_COMPUTE_PROGRAM |
> + BRW_NEW_CS_PROG_DATA,
> + },
> + .emit = brw_upload_cs_pull_constants,
> +};
More information about the mesa-dev
mailing list