Mesa (master): tgsi: Add ureg_property_gs_output_prim/max_vertices().

Michał Król michal at kemper.freedesktop.org
Thu Jan 28 13:12:28 UTC 2010


Module: Mesa
Branch: master
Commit: 3ba2ab3a23099f00366bdbec09f18612bfa71225
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3ba2ab3a23099f00366bdbec09f18612bfa71225

Author: Michal Krol <michal at vmware.com>
Date:   Wed Jan 27 15:24:50 2010 +0100

tgsi: Add ureg_property_gs_output_prim/max_vertices().

---

 src/gallium/auxiliary/tgsi/tgsi_ureg.c |   38 ++++++++++++++++++++++++++++++-
 src/gallium/auxiliary/tgsi/tgsi_ureg.h |   10 +++++++-
 2 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.c b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
index df01739..d207097 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_ureg.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
@@ -139,6 +139,8 @@ struct ureg_program
    struct const_decl const_decls[PIPE_MAX_CONSTANT_BUFFERS];
 
    unsigned property_gs_input_prim;
+   unsigned property_gs_output_prim;
+   unsigned property_gs_max_vertices;
 
    unsigned nr_addrs;
    unsigned nr_preds;
@@ -243,9 +245,23 @@ ureg_dst_register( unsigned file,
 
 void
 ureg_property_gs_input_prim(struct ureg_program *ureg,
-                            unsigned gs_input_prim)
+                            unsigned input_prim)
 {
-   ureg->property_gs_input_prim = gs_input_prim;
+   ureg->property_gs_input_prim = input_prim;
+}
+
+void
+ureg_property_gs_output_prim(struct ureg_program *ureg,
+                             unsigned output_prim)
+{
+   ureg->property_gs_output_prim = output_prim;
+}
+
+void
+ureg_property_gs_max_vertices(struct ureg_program *ureg,
+                              unsigned max_vertices)
+{
+   ureg->property_gs_max_vertices = max_vertices;
 }
 
 
@@ -1161,6 +1177,22 @@ static void emit_decls( struct ureg_program *ureg )
                     ureg->property_gs_input_prim);
    }
 
+   if (ureg->property_gs_output_prim != ~0) {
+      assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY);
+
+      emit_property(ureg,
+                    TGSI_PROPERTY_GS_OUTPUT_PRIM,
+                    ureg->property_gs_output_prim);
+   }
+
+   if (ureg->property_gs_max_vertices != ~0) {
+      assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY);
+
+      emit_property(ureg,
+                    TGSI_PROPERTY_GS_MAX_VERTICES,
+                    ureg->property_gs_max_vertices);
+   }
+
    if (ureg->processor == TGSI_PROCESSOR_VERTEX) {
       for (i = 0; i < UREG_MAX_INPUT; i++) {
          if (ureg->vs_inputs[i/32] & (1 << (i%32))) {
@@ -1378,6 +1410,8 @@ struct ureg_program *ureg_create( unsigned processor )
 
    ureg->processor = processor;
    ureg->property_gs_input_prim = ~0;
+   ureg->property_gs_output_prim = ~0;
+   ureg->property_gs_max_vertices = ~0;
    return ureg;
 }
 
diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.h b/src/gallium/auxiliary/tgsi/tgsi_ureg.h
index c0dc722..2ac00de 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_ureg.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.h
@@ -126,7 +126,15 @@ ureg_create_shader_and_destroy( struct ureg_program *p,
 
 void
 ureg_property_gs_input_prim(struct ureg_program *ureg,
-                            unsigned gs_input_prim);
+                            unsigned input_prim);
+
+void
+ureg_property_gs_output_prim(struct ureg_program *ureg,
+                             unsigned output_prim);
+
+void
+ureg_property_gs_max_vertices(struct ureg_program *ureg,
+                              unsigned max_vertices);
 
 
 /***********************************************************************




More information about the mesa-commit mailing list