aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorZack Rusin <[email protected]>2010-06-07 14:27:47 -0400
committerZack Rusin <[email protected]>2010-06-08 06:28:11 -0400
commitb5d2fc2b48ffb09b21eb3148218a73806af22f09 (patch)
tree393083f9569eba1e6dafb33d34eeb9384c29accd /src/gallium
parentbe7d8ddf0c0a293ee94db360a44561beb10e62f9 (diff)
gallium: scream when one of two unimplemented features in draw is used
plus used the correctly specified stride
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_so_emit.c18
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 8a065a378be..9c2bbfe656b 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);