st/mesa: don't draw instead of asserting in transform feedback
if we get a request to take the count from feedback, but there is no buffer to take it from, just draw as if we got 0 vertices so nothing. This fixes this assert killing the ogl conform, and a piglit test I've sent. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
fdb8487613
commit
518abd0bbe
|
@ -191,7 +191,6 @@ st_transform_feedback_get_draw_target(struct gl_transform_feedback_object *obj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(0);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,14 +210,17 @@ st_end_transform_feedback(struct gl_context *ctx,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
bool
|
||||||
st_transform_feedback_draw_init(struct gl_transform_feedback_object *obj,
|
st_transform_feedback_draw_init(struct gl_transform_feedback_object *obj,
|
||||||
struct pipe_draw_info *out)
|
struct pipe_draw_info *out)
|
||||||
{
|
{
|
||||||
struct st_transform_feedback_object *sobj =
|
struct st_transform_feedback_object *sobj =
|
||||||
st_transform_feedback_object(obj);
|
st_transform_feedback_object(obj);
|
||||||
|
|
||||||
|
if (sobj->draw_count == NULL)
|
||||||
|
return false;
|
||||||
out->count_from_stream_output = sobj->draw_count;
|
out->count_from_stream_output = sobj->draw_count;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ struct pipe_draw_info;
|
||||||
extern void
|
extern void
|
||||||
st_init_xformfb_functions(struct dd_function_table *functions);
|
st_init_xformfb_functions(struct dd_function_table *functions);
|
||||||
|
|
||||||
extern void
|
extern bool
|
||||||
st_transform_feedback_draw_init(struct gl_transform_feedback_object *obj,
|
st_transform_feedback_draw_init(struct gl_transform_feedback_object *obj,
|
||||||
struct pipe_draw_info *out);
|
struct pipe_draw_info *out);
|
||||||
|
|
||||||
|
|
|
@ -242,7 +242,8 @@ st_draw_vbo(struct gl_context *ctx,
|
||||||
/* Transform feedback drawing is always non-indexed. */
|
/* Transform feedback drawing is always non-indexed. */
|
||||||
/* Set info.count_from_stream_output. */
|
/* Set info.count_from_stream_output. */
|
||||||
if (tfb_vertcount) {
|
if (tfb_vertcount) {
|
||||||
st_transform_feedback_draw_init(tfb_vertcount, &info);
|
if (st_transform_feedback_draw_init(tfb_vertcount, &info) == false)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue