瀏覽代碼

mesa/vbo: always recalculate min_index and max_index when splitting vertices

undefined
Maciej Cencora 16 年之前
父節點
當前提交
afd687b0dc
共有 1 個檔案被更改,包括 10 行新增26 行删除
  1. 10
    26
      src/mesa/vbo/vbo_split_inplace.c

+ 10
- 26
src/mesa/vbo/vbo_split_inplace.c 查看文件

@@ -63,35 +63,19 @@ static void flush_vertex( struct split_context *split )
if (!split->dstprim_nr)
return;

if (split->ib) {
/* This should basically be multipass rendering over the same
* unchanging set of VBO's. Would like the driver not to
* re-upload the data, or swtnl not to re-transform the
* vertices.
*/
assert(split->max_index - split->min_index < split->limits->max_verts);
min_index = split->min_index;
max_index = split->max_index;
}
else {
/* Non-indexed rendering. Cannot assume that the primitives are
* ordered by increasing vertex, because of entrypoints like
* MultiDrawArrays.
*/
GLuint i;
min_index = split->dstprim[0].start;
max_index = min_index + split->dstprim[0].count - 1;
GLuint i;
min_index = split->dstprim[0].start;
max_index = min_index + split->dstprim[0].count - 1;

for (i = 1; i < split->dstprim_nr; i++) {
GLuint tmp_min = split->dstprim[i].start;
GLuint tmp_max = tmp_min + split->dstprim[i].count - 1;
for (i = 1; i < split->dstprim_nr; i++) {
GLuint tmp_min = split->dstprim[i].start;
GLuint tmp_max = tmp_min + split->dstprim[i].count - 1;

if (tmp_min < min_index)
min_index = tmp_min;
if (tmp_min < min_index)
min_index = tmp_min;

if (tmp_max > max_index)
max_index = tmp_max;
}
if (tmp_max > max_index)
max_index = tmp_max;
}

assert(max_index >= min_index);

Loading…
取消
儲存