summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/swr/swr_draw.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/swr/swr_draw.cpp')
-rw-r--r--src/gallium/drivers/swr/swr_draw.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gallium/drivers/swr/swr_draw.cpp b/src/gallium/drivers/swr/swr_draw.cpp
index a94cdd6da0b..0377861b7a4 100644
--- a/src/gallium/drivers/swr/swr_draw.cpp
+++ b/src/gallium/drivers/swr/swr_draw.cpp
@@ -62,6 +62,16 @@ swr_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
swr_update_draw_context(ctx);
+ struct pipe_draw_info resolved_info;
+ /* DrawTransformFeedback */
+ if (info->count_from_stream_output) {
+ // trick copied from softpipe to modify const struct *info
+ memcpy(&resolved_info, (void*)info, sizeof(struct pipe_draw_info));
+ resolved_info.count = ctx->so_primCounter * resolved_info.vertices_per_patch;
+ resolved_info.max_index = resolved_info.count - 1;
+ info = &resolved_info;
+ }
+
if (ctx->vs->pipe.stream_output.num_outputs) {
if (!ctx->vs->soFunc[info->mode]) {
STREAMOUT_COMPILE_STATE state = {0};