From 9e1ba1d6895ff1a80fe676e153799695653cfb2a Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Sat, 19 Jul 2014 10:09:28 -0400 Subject: [PATCH] gallium: add tessellation shader properties MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit v2: Marek: rename tess spacing definitions Signed-off-by: Ilia Mirkin Reviewed-by: Roland Scheidegger Signed-off-by: Marek Olšák --- src/gallium/auxiliary/tgsi/tgsi_strings.c | 7 ++++- src/gallium/docs/source/tgsi.rst | 33 ++++++++++++++++++++++ src/gallium/include/pipe/p_defines.h | 7 +++++ src/gallium/include/pipe/p_shader_tokens.h | 7 ++++- 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c b/src/gallium/auxiliary/tgsi/tgsi_strings.c index fc16d471afb..6b6a14f55f5 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_strings.c +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c @@ -131,7 +131,12 @@ const char *tgsi_property_names[TGSI_PROPERTY_COUNT] = "FS_DEPTH_LAYOUT", "VS_PROHIBIT_UCPS", "GS_INVOCATIONS", - "VS_WINDOW_SPACE_POSITION" + "VS_WINDOW_SPACE_POSITION", + "TCS_VERTICES_OUT", + "TES_PRIM_MODE", + "TES_SPACING", + "TES_VERTEX_ORDER_CW", + "TES_POINT_MODE", }; const char *tgsi_return_type_names[TGSI_RETURN_TYPE_COUNT] = diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst index 0116842bfda..f77702aa6a9 100644 --- a/src/gallium/docs/source/tgsi.rst +++ b/src/gallium/docs/source/tgsi.rst @@ -3071,6 +3071,39 @@ Naturally, clipping is not performed on window coordinates either. The effect of this property is undefined if a geometry or tessellation shader are in use. +TCS_VERTICES_OUT +"""""""""""""""" + +The number of vertices written by the tessellation control shader. This +effectively defines the patch input size of the tessellation evaluation shader +as well. + +TES_PRIM_MODE +""""""""""""" + +This sets the tessellation primitive mode, one of ``PIPE_PRIM_TRIANGLES``, +``PIPE_PRIM_QUADS``, or ``PIPE_PRIM_LINES``. (Unlike in GL, there is no +separate isolines settings, the regular lines is assumed to mean isolines.) + +TES_SPACING +""""""""""" + +This sets the spacing mode of the tessellation generator, one of +``PIPE_TESS_SPACING_*``. + +TES_VERTEX_ORDER_CW +""""""""""""""""""" + +This sets the vertex order to be clockwise if the value is 1, or +counter-clockwise if set to 0. + +TES_POINT_MODE +"""""""""""""" + +If set to a non-zero value, this turns on point mode for the tessellator, +which means that points will be generated instead of primitives. + + Texture Sampling and Texture Formats ------------------------------------ diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index d116aa5b8f8..8fabf5e0ff7 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -431,6 +431,13 @@ enum pipe_flush_flags #define PIPE_PRIM_MAX 15 +/** + * Tessellator spacing types + */ +#define PIPE_TESS_SPACING_FRACTIONAL_ODD 0 +#define PIPE_TESS_SPACING_FRACTIONAL_EVEN 1 +#define PIPE_TESS_SPACING_EQUAL 2 + /** * Query object types */ diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h index c6ab89924a9..ff1f7d6d21a 100644 --- a/src/gallium/include/pipe/p_shader_tokens.h +++ b/src/gallium/include/pipe/p_shader_tokens.h @@ -262,7 +262,12 @@ union tgsi_immediate_data #define TGSI_PROPERTY_VS_PROHIBIT_UCPS 7 #define TGSI_PROPERTY_GS_INVOCATIONS 8 #define TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION 9 -#define TGSI_PROPERTY_COUNT 10 +#define TGSI_PROPERTY_TCS_VERTICES_OUT 10 +#define TGSI_PROPERTY_TES_PRIM_MODE 11 +#define TGSI_PROPERTY_TES_SPACING 12 +#define TGSI_PROPERTY_TES_VERTEX_ORDER_CW 13 +#define TGSI_PROPERTY_TES_POINT_MODE 14 +#define TGSI_PROPERTY_COUNT 15 struct tgsi_property { unsigned Type : 4; /**< TGSI_TOKEN_TYPE_PROPERTY */ -- 2.30.2