On Thursday, May 19, 2016 4:48:08 PM PDT Iago Toral wrote: > On Thu, 2016-05-19 at 00:21 -0700, Jason Ekstrand wrote: > > The previous code got the BO the first time we encountered it. However, > > this can potentially lead to problems if the BO is used for multiple arrays > > with the same buffer object because the range we declare as busy may not be > > quite right. By delaying the call to intel_bufferobj_buffer, we can ensure > > that we have the full range for the given buffer. > > > > Cc: "10.2" <[email protected]> > > --- > > src/mesa/drivers/dri/i965/brw_draw_upload.c | 71 +++++++++++++++++++ +--------- > > 1 file changed, 49 insertions(+), 22 deletions(-) > > > > diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/ drivers/dri/i965/brw_draw_upload.c > > index 3ec37f8..0a7725d 100644 > > --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c > > +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c > > @@ -453,6 +453,11 @@ brw_prepare_vertices(struct brw_context *brw) > > if (brw->vb.nr_buffers) > > return; > > > > + /* The range of data in a given buffer represented as [min, max) */ > > + struct intel_buffer_object *enabled_buffer[VERT_ATTRIB_MAX]; > > + uint32_t buffer_range_start[VERT_ATTRIB_MAX]; > > + uint32_t buffer_range_end[VERT_ATTRIB_MAX]; > > + > > for (i = j = 0; i < brw->vb.nr_enabled; i++) { > > struct brw_vertex_element *input = brw->vb.enabled[i]; > > const struct gl_client_array *glarray = input->glarray; > > @@ -460,12 +465,31 @@ brw_prepare_vertices(struct brw_context *brw) > > if (_mesa_is_bufferobj(glarray->BufferObj)) { > > struct intel_buffer_object *intel_buffer = > > intel_buffer_object(glarray->BufferObj); > > - unsigned k; > > + > > + const uint32_t offset = (uintptr_t)glarray->Ptr; > > Should we use uint64_t instead or do we know that these offsets need to > be within a 32-bit address?
The driver is full of these kinds of assumptions today. Because it's an offset into a buffer object, the only way it could exceed a uint32_t is if the buffer was > 4GB in size. Given that the aperture is only 4GB (or 2GB on earlier parts), I don't think you can even use such a buffer with the GPU. We might have to fix it someday, but I think it's fine for now. --Ken
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
