[Mesa-dev] [PATCH V4 3/6] i965: add low-level support for send to pixel interpolator
Kenneth Graunke
kenneth at whitecape.org
Fri Jul 11 23:56:50 PDT 2014
On Saturday, July 12, 2014 03:20:12 PM Chris Forbes wrote:
> Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
> ---
> src/mesa/drivers/dri/i965/brw_eu.h | 10 ++++++++
> src/mesa/drivers/dri/i965/brw_eu_emit.c | 43
+++++++++++++++++++++++++++++++++
> 2 files changed, 53 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_eu.h
b/src/mesa/drivers/dri/i965/brw_eu.h
> index 3164c80..9ae09d7 100644
> --- a/src/mesa/drivers/dri/i965/brw_eu.h
> +++ b/src/mesa/drivers/dri/i965/brw_eu.h
> @@ -372,6 +372,16 @@ brw_untyped_surface_read(struct brw_compile *p,
> unsigned msg_length,
> unsigned response_length);
>
> +void
> +brw_pixel_interpolator_query(struct brw_compile *p,
> + struct brw_reg dest,
> + struct brw_reg mrf,
> + bool noperspective,
> + GLuint mode,
> + GLuint data,
> + GLuint msg_length,
> + GLuint response_length);
> +
> /***********************************************************************
> * brw_eu_util.c:
> */
> diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c
b/src/mesa/drivers/dri/i965/brw_eu_emit.c
> index 3f00e4d..0a1a223 100644
> --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
> +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
> @@ -2633,6 +2633,49 @@ brw_untyped_surface_read(struct brw_compile *p,
> brw_inst_access_mode(brw, insn) == BRW_ALIGN_1);
> }
>
> +static void
> +brw_set_pixel_interpolator_query_message(struct brw_compile *p,
> + struct brw_inst *insn,
> + bool noperspective,
> + GLuint mode,
> + GLuint data,
> + GLuint msg_length,
> + GLuint response_length)
> +{
> + const struct brw_context *brw = p->brw;
> + const unsigned dispatch_width =
> + (brw_inst_exec_size(brw, insn) == BRW_EXECUTE_16 ? 16 : 8);
> +
> + brw_set_message_descriptor(p, insn, GEN7_SFID_PIXEL_INTERPOLATOR,
> + msg_length, response_length,
> + false /* header is never present for PI */,
> + false);
> +
> + brw_inst_set_pi_simd_mode(brw, insn, dispatch_width == 16);
> + brw_inst_set_pi_slot_group(brw, insn, 0); /* zero unless 32/64px
dispatch */
> + brw_inst_set_pi_nopersp(brw, insn, noperspective);
> + brw_inst_set_pi_message_type(brw, insn, mode);
> + brw_inst_set_pi_message_data(brw, insn, data);
> +}
> +
> +void
> +brw_pixel_interpolator_query(struct brw_compile *p,
> + struct brw_reg dest,
> + struct brw_reg mrf,
> + bool noperspective,
> + GLuint mode,
> + GLuint data,
> + GLuint msg_length,
> + GLuint response_length)
> +{
> + struct brw_inst *insn = next_insn(p, BRW_OPCODE_SEND);
> +
> + brw_set_dest(p, insn, dest);
> + brw_set_src0(p, insn, mrf);
> + brw_set_pixel_interpolator_query_message(
> + p, insn, noperspective, mode, data, msg_length, response_length);
> +}
> +
> /**
> * This instruction is generated as a single-channel align1 instruction by
> * both the VS and FS stages when using INTEL_DEBUG=shader_time.
>
What do you think about combining these two functions? I know we've always
defined separate brw_set_*_message functions, but I'm not really convinced
that it's useful to do so. I can't imagine
brw_set_pixel_interpolator_query_message would be called by anything other
than brw_pixel_interpolator_query.
Either way's fine - it's just an idea.
Patches 1-3 are:
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140711/c0e9dfae/attachment.sig>
More information about the mesa-dev
mailing list