Mesa (master): gallium: scream when one of two unimplemented features in draw is used

Zack Rusin zack at kemper.freedesktop.org
Tue Jun 8 10:32:00 UTC 2010


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

Author: Zack Rusin <zackr at vmware.com>
Date:   Mon Jun  7 14:27:47 2010 -0400

gallium: scream when one of two unimplemented features in draw is used

plus used the correctly specified stride

---

 src/gallium/auxiliary/draw/draw_pt_so_emit.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_pt_so_emit.c b/src/gallium/auxiliary/draw/draw_pt_so_emit.c
index 8a065a3..9c2bbfe 100644
--- a/src/gallium/auxiliary/draw/draw_pt_so_emit.c
+++ b/src/gallium/auxiliary/draw/draw_pt_so_emit.c
@@ -55,7 +55,6 @@ prepare_so_emit( struct pt_so_emit *emit,
    unsigned i;
    struct translate_key hw_key;
    unsigned dst_offset = 0;
-   unsigned output_stride = 0;
 
    if (emit->has_so) {
       for (i = 0; i < draw->so.state.num_outputs; ++i) {
@@ -72,6 +71,12 @@ prepare_so_emit( struct pt_so_emit *emit,
          /* doesn't handle EMIT_OMIT */
          assert(emit_sz != 0);
 
+         if (draw->so.state.register_mask[i] != TGSI_WRITEMASK_XYZW) {
+            /* we only support rendering with XYZW writemask*/
+            debug_printf("NOT_IMPLEMENTED(writemask with stream output) at %s: %s:%d\n",
+                         __FUNCTION__, __FILE__, __LINE__);
+         }
+
          hw_key.element[i].type = TRANSLATE_ELEMENT_NORMAL;
          hw_key.element[i].input_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
          hw_key.element[i].input_buffer = 0;
@@ -81,10 +86,9 @@ prepare_so_emit( struct pt_so_emit *emit,
          hw_key.element[i].output_offset = dst_offset;
 
          dst_offset += emit_sz;
-         output_stride += emit_sz;
       }
       hw_key.nr_elements = draw->so.state.num_outputs;
-      hw_key.output_stride = output_stride;
+      hw_key.output_stride = draw->so.state.stride;
 
       if (!emit->translate ||
           translate_key_compare(&emit->translate->key, &hw_key) != 0)
@@ -155,9 +159,11 @@ void draw_pt_so_emit( struct pt_so_emit *emit,
       return;
    }
 
-
-   /* XXX we only support single output buffer right now */
-   debug_assert(draw->so.num_buffers >= 0);
+   /* XXX we only support single output buffer */
+   if (draw->so.num_buffers != 1) {
+      debug_printf("NOT_IMPLEMENTED(multiple stream output buffers) at %s: %s:%d\n",
+                   __FUNCTION__, __FILE__, __LINE__);
+   }
 
    translate->set_buffer(translate, 0, vertex_data,
                          stride, ~0);




More information about the mesa-commit mailing list