[Mesa-dev] [PATCH 07/18] i965/cs: Support CS_OPCODE_CS_TERMINATE
Kristian Høgsberg
krh at bitplanet.net
Mon Apr 13 17:36:46 PDT 2015
On Sat, Mar 14, 2015 at 9:54 PM, Jordan Justen
<jordan.l.justen at intel.com> wrote:
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>
> ---
> src/mesa/drivers/dri/i965/brw_defines.h | 5 +++++
> src/mesa/drivers/dri/i965/brw_fs.h | 1 +
> src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 11 +++++++++++
> src/mesa/drivers/dri/i965/brw_shader.cpp | 2 ++
> 4 files changed, 19 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h
> index da6ed5b..9c7aafa 100644
> --- a/src/mesa/drivers/dri/i965/brw_defines.h
> +++ b/src/mesa/drivers/dri/i965/brw_defines.h
> @@ -1102,6 +1102,11 @@ enum opcode {
> * and number of SO primitives needed.
> */
> GS_OPCODE_FF_SYNC_SET_PRIMITIVES,
> +
> + /**
> + * Terminate the compute shader.
> + */
> + CS_OPCODE_CS_TERMINATE,
> };
>
> enum brw_urb_write_flags {
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
> index 7716529..faf7893 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.h
> +++ b/src/mesa/drivers/dri/i965/brw_fs.h
> @@ -378,6 +378,7 @@ public:
> bool use_2nd_half = false);
> void emit_fb_writes();
> void emit_urb_writes();
> + void emit_cs_terminate();
>
> void emit_shader_time_begin();
> void emit_shader_time_end();
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> index 5d4b166..88df0a2 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> @@ -3962,6 +3962,17 @@ fs_visitor::resolve_ud_negate(fs_reg *reg)
> * If we need a proper boolean value, we have to fix it up to be 0 or ~0.
> */
> void
> +fs_visitor::emit_cs_terminate()
> +{
> + int base_mrf = 1;
> + fs_inst *inst = emit(CS_OPCODE_CS_TERMINATE);
> + inst->base_mrf = base_mrf;
> + inst->mlen = 0;
> + inst->eot = true;
> + inst->header_present = false;
> +}
> +
> +void
> fs_visitor::resolve_bool_comparison(ir_rvalue *rvalue, fs_reg *reg)
> {
> assert(brw->gen <= 5);
> diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp
> index ff0ef4b..499bd94 100644
> --- a/src/mesa/drivers/dri/i965/brw_shader.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_shader.cpp
> @@ -572,6 +572,8 @@ brw_instruction_name(enum opcode op)
> return "gs_svb_set_dst_index";
> case GS_OPCODE_FF_SYNC_SET_PRIMITIVES:
> return "gs_ff_sync_set_primitives";
> + case CS_OPCODE_CS_TERMINATE:
> + return "cs_terminate";
> }
>
> unreachable("not reached");
> --
> 2.1.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list