On Fri, Dec 5, 2014 at 9:18 AM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > On Fri, Dec 5, 2014 at 9:16 AM, Jose Fonseca <jfons...@vmware.com> wrote: >> From: José Fonseca <jfons...@vmware.com> >> >> Matches what u_vbuf_get_minmax_index() does. > > Hm, nouveau nv50 (and probably nvc0) does: > > if (ib->buffer) { > nv50->idxbuf.offset = ib->offset; > BCTX_REFN(nv50->bufctx_3d, INDEX, nv04_resource(ib->buffer), RD); > } else { > nv50->idxbuf.user_buffer = ib->user_buffer; > } > > Is the offset really supposed to be applied to the user buffer? I > figured the point of the offset was that you couldn't provide an > offset into a pipe_resource otherwise, while with a user ptr, you can > just add it in yourself...
But you're right, u_vbuf seems to add it in. Do a lot of drivers use u_vbuf? The logic for whether it gets used or not does not lend itself to easy checking. > >> --- >> src/gallium/auxiliary/indices/u_primconvert.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/src/gallium/auxiliary/indices/u_primconvert.c >> b/src/gallium/auxiliary/indices/u_primconvert.c >> index 4632781..eba1f9e 100644 >> --- a/src/gallium/auxiliary/indices/u_primconvert.c >> +++ b/src/gallium/auxiliary/indices/u_primconvert.c >> @@ -137,8 +137,9 @@ util_primconvert_draw_vbo(struct primconvert_context *pc, >> src = ib->user_buffer; >> if (!src) { >> src = pipe_buffer_map(pc->pipe, ib->buffer, >> - PIPE_TRANSFER_READ, &src_transfer) + >> ib->offset; >> + PIPE_TRANSFER_READ, &src_transfer); >> } >> + src = (const uint8_t *)src + ib->offset; >> } >> else { >> u_index_generator(pc->primtypes_mask, >> -- >> 2.1.0 >> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev