Reviewed-by: Tim Rowley <timothy.o.row...@intel.com<mailto:timothy.o.row...@intel.com>>
On Nov 29, 2016, at 8:23 PM, Ilia Mirkin <imir...@alum.mit.edu<mailto:imir...@alum.mit.edu>> wrote: The buffer_size does not take the offset into account. Just add the offset into the pointer which lines up the structures much better. Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu<mailto:imir...@alum.mit.edu>> --- This doesn't really fix anything right now, but logically the streamOffset is incremented on each draw, and is optionally written back out as a watermark indicator (for pausing/resuming streams). So it should be relative to the logical start of the buffer. src/gallium/drivers/swr/swr_state.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/swr/swr_state.cpp b/src/gallium/drivers/swr/swr_state.cpp index fc835dc..4475252 100644 --- a/src/gallium/drivers/swr/swr_state.cpp +++ b/src/gallium/drivers/swr/swr_state.cpp @@ -1488,10 +1488,11 @@ swr_update_derived(struct pipe_context *pipe, continue; buffer.enable = true; buffer.pBuffer = - (uint32_t *)swr_resource_data(ctx->so_targets[i]->buffer); + (uint32_t *)(swr_resource_data(ctx->so_targets[i]->buffer) + + ctx->so_targets[i]->buffer_offset); buffer.bufferSize = ctx->so_targets[i]->buffer_size >> 2; buffer.pitch = stream_output->stride[i]; - buffer.streamOffset = ctx->so_targets[i]->buffer_offset >> 2; + buffer.streamOffset = 0; SwrSetSoBuffers(ctx->swrContext, &buffer, i); } -- 2.7.3
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev