From 404b29d765e2fe4d2bf80d17063e5672d2d59ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Thu, 21 Nov 2013 16:45:28 +0900 Subject: radeonsi: Initial geometry shader support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Partly based on the corresponding r600g work by Vadim Girlin and Dave Airlie. Reviewed-by: Marek Olšák --- src/gallium/drivers/radeonsi/si_pipe.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/gallium/drivers/radeonsi/si_pipe.h') diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h index 3c27e67..45a8f67 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.h +++ b/src/gallium/drivers/radeonsi/si_pipe.h @@ -75,7 +75,9 @@ struct si_surface { }; #define SI_NUM_ATOMS(sctx) (sizeof((sctx)->atoms)/sizeof((sctx)->atoms.array[0])) -#define SI_NUM_SHADERS (PIPE_SHADER_FRAGMENT+1) + +#define SI_SHADER_EXPORT (PIPE_SHADER_GEOMETRY+1) +#define SI_NUM_SHADERS (SI_SHADER_EXPORT+1) struct si_context { struct r600_common_context b; @@ -112,6 +114,7 @@ struct si_context { /* for saving when using blitter */ struct pipe_stencil_ref stencil_ref; struct si_pipe_shader_selector *ps_shader; + struct si_pipe_shader_selector *gs_shader; struct si_pipe_shader_selector *vs_shader; struct si_cs_shader_state cs_shader_state; /* shader information */ @@ -138,8 +141,13 @@ struct si_context { /* With rasterizer discard, there doesn't have to be a pixel shader. * In that case, we bind this one: */ void *dummy_pixel_shader; + struct si_pm4_state *gs_on; + struct si_pm4_state *gs_off; + struct si_pm4_state *gs_rings; struct r600_atom cache_flush; struct pipe_constant_buffer null_const_buf; /* used for set_constant_buffer(NULL) on CIK */ + struct pipe_constant_buffer esgs_ring; + struct pipe_constant_buffer gsvs_ring; /* SI state handling */ union si_state queued; -- cgit v1.1