radeonsi/gfx10: enable GS fast launch for triangles and strips with NGG culling
[mesa.git] / src / gallium / drivers / radeonsi / si_shader.h
index ee1ca9cda1d41e429620c76ac54575d64e6864b0..3a1d0e44290130aabf8dd5b6f7f29d02c6d718c4 100644 (file)
@@ -273,9 +273,12 @@ enum {
        SI_VS_BLIT_SGPRS_POS_TEXCOORD = 9,
 };
 
-#define SI_NGG_CULL_VIEW_SMALLPRIMS    (1 << 0) /* view.xy + small prims */
-#define SI_NGG_CULL_BACK_FACE          (1 << 1) /* back faces */
-#define SI_NGG_CULL_FRONT_FACE         (1 << 2) /* front faces */
+#define SI_NGG_CULL_VIEW_SMALLPRIMS            (1 << 0) /* view.xy + small prims */
+#define SI_NGG_CULL_BACK_FACE                  (1 << 1) /* back faces */
+#define SI_NGG_CULL_FRONT_FACE                 (1 << 2) /* front faces */
+#define SI_NGG_CULL_GS_FAST_LAUNCH_TRI_LIST    (1 << 3) /* GS fast launch: triangles */
+#define SI_NGG_CULL_GS_FAST_LAUNCH_TRI_STRIP   (1 << 4) /* GS fast launch: triangle strip */
+#define SI_NGG_CULL_GS_FAST_LAUNCH_ALL         (0x3 << 3) /* GS fast launch (both prim types) */
 
 /**
  * For VS shader keys, describe any fixups required for vertex fetch.
@@ -564,6 +567,8 @@ union si_shader_part_key {
                unsigned        as_es:1;
                unsigned        as_ngg:1;
                unsigned        has_ngg_cull_inputs:1; /* from the NGG cull shader */
+               unsigned        gs_fast_launch_tri_list:1; /* for NGG culling */
+               unsigned        gs_fast_launch_tri_strip:1; /* for NGG culling */
                /* Prologs for monolithic shaders shouldn't set EXEC. */
                unsigned        is_monolithic:1;
        } vs_prolog;
@@ -655,7 +660,7 @@ struct si_shader_key {
                unsigned        clip_disable:1;
 
                /* For NGG VS and TES. */
-               unsigned        ngg_culling:3; /* SI_NGG_CULL_* */
+               unsigned        ngg_culling:5; /* SI_NGG_CULL_* */
 
                /* For shaders where monolithic variants have better code.
                 *