swr: Account for index_bias in offsets
When calculating buffer offsets for client buffers account for info.index_bias. Fixes the follow piglit tests: arb_draw_elements_base_vertex-drawelements-user_varrays arb_draw_elements_base_vertex-negative-index-user_varrays Reviewed-By: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
@@ -1012,8 +1012,8 @@ swr_user_vbuf_range(const struct pipe_draw_info *info,
|
||||
*size = elems * vb->stride;
|
||||
} else if (vb->stride) {
|
||||
elems = info->max_index - info->min_index + 1;
|
||||
*totelems = info->max_index + 1;
|
||||
*base = info->min_index * vb->stride;
|
||||
*totelems = (info->max_index + info->index_bias) + 1;
|
||||
*base = (info->min_index + info->index_bias) * vb->stride;
|
||||
*size = elems * vb->stride;
|
||||
} else {
|
||||
*totelems = 1;
|
||||
@@ -1304,7 +1304,7 @@ swr_update_derived(struct pipe_context *pipe,
|
||||
uint32_t base;
|
||||
swr_user_vbuf_range(&info, ctx->velems, vb, i, &elems, &base, &size);
|
||||
partial_inbounds = 0;
|
||||
min_vertex_index = info.min_index;
|
||||
min_vertex_index = info.min_index + info.index_bias;
|
||||
|
||||
size = AlignUp(size, 4);
|
||||
/* If size of client memory copy is too large, don't copy. The
|
||||
|
||||
Reference in New Issue
Block a user