mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 00:00:12 +01:00
svga: move svga_update_state() call in draw code
This fixes a few Piglit transform feedback regressions caused by commit7a1401938b. In that change I moved the moved svga_update_state() into the loops, after the calls to svga_hwtnl_set_flatshade(). But svga_hwtnl_set_flatshade() actually depends on some derived shader state. This patch moves the svga_update_state() call into svga_draw_vbo() so it's not duplicated in two places. Fixes:7a1401938b("svga: clean up retry_draw_range_elements(), retry_draw_arrays()") Reviewed-by: Charmaine Lee <charmainel@vmware.com>
This commit is contained in:
parent
6f0aec5671
commit
072df89a79
1 changed files with 19 additions and 18 deletions
|
|
@ -75,17 +75,14 @@ retry_draw_range_elements(struct svga_context *svga,
|
|||
svga->curr.rast->templ.flatshade_first);
|
||||
|
||||
for (unsigned try = 0; try < 2; try++) {
|
||||
ret = svga_update_state(svga, SVGA_STATE_HW_DRAW);
|
||||
if (ret == PIPE_OK) {
|
||||
ret = svga_hwtnl_draw_range_elements(svga->hwtnl,
|
||||
index_buffer, index_size,
|
||||
index_bias,
|
||||
min_index, max_index,
|
||||
prim, start, count,
|
||||
start_instance, instance_count);
|
||||
if (ret == PIPE_OK)
|
||||
break;
|
||||
}
|
||||
ret = svga_hwtnl_draw_range_elements(svga->hwtnl,
|
||||
index_buffer, index_size,
|
||||
index_bias,
|
||||
min_index, max_index,
|
||||
prim, start, count,
|
||||
start_instance, instance_count);
|
||||
if (ret == PIPE_OK)
|
||||
break;
|
||||
svga_context_flush(svga, NULL);
|
||||
}
|
||||
|
||||
|
|
@ -114,13 +111,10 @@ retry_draw_arrays(struct svga_context *svga,
|
|||
svga->curr.rast->templ.flatshade_first);
|
||||
|
||||
for (unsigned try = 0; try < 2; try++) {
|
||||
ret = svga_update_state(svga, SVGA_STATE_HW_DRAW);
|
||||
if (ret == PIPE_OK) {
|
||||
ret = svga_hwtnl_draw_arrays(svga->hwtnl, prim, start, count,
|
||||
start_instance, instance_count);
|
||||
if (ret == PIPE_OK)
|
||||
break;
|
||||
}
|
||||
ret = svga_hwtnl_draw_arrays(svga->hwtnl, prim, start, count,
|
||||
start_instance, instance_count);
|
||||
if (ret == PIPE_OK)
|
||||
break;
|
||||
svga_context_flush(svga, NULL);
|
||||
}
|
||||
|
||||
|
|
@ -229,6 +223,13 @@ svga_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
|
|||
ret = svga_swtnl_draw_vbo(svga, info, indexbuf, index_offset);
|
||||
}
|
||||
else {
|
||||
ret = svga_update_state(svga, SVGA_STATE_HW_DRAW);
|
||||
if (ret != PIPE_OK) {
|
||||
svga_context_flush(svga, NULL);
|
||||
ret = svga_update_state(svga, SVGA_STATE_HW_DRAW);
|
||||
assert(ret == PIPE_OK);
|
||||
}
|
||||
|
||||
if (info->index_size && indexbuf) {
|
||||
unsigned offset;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue