Brian Paul <bri...@vmware.com> writes:

> On 11/07/2013 10:23 AM, Eric Anholt wrote:
>> Chris Forbes <chr...@ijw.co.nz> writes:
>>
>>> V2: Check for mapping failure (thanks Brian)
>>>
>>> Signed-off-by: Chris Forbes <chr...@ijw.co.nz>
>>> ---
>>>   src/mesa/vbo/vbo_primitive_restart.c | 33 
>>> +++++++++++++++++++++++++++++++++
>>>   1 file changed, 33 insertions(+)
>>>
>>> diff --git a/src/mesa/vbo/vbo_primitive_restart.c 
>>> b/src/mesa/vbo/vbo_primitive_restart.c
>>> index 48d04e1..ee84f10 100644
>>> --- a/src/mesa/vbo/vbo_primitive_restart.c
>>> +++ b/src/mesa/vbo/vbo_primitive_restart.c
>>> @@ -180,6 +180,39 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
>>>      GLboolean map_ib = ib->obj->Name && !ib->obj->Pointer;
>>>      void *ptr;
>>>
>>> +   /* If there is an indirect buffer, map it and extract the draw params */
>>> +   if (indirect && prims[0].is_indirect) {
>>> +      struct _mesa_prim new_prim = *prims;
>>> +      struct _mesa_index_buffer new_ib = *ib;
>>> +      const uint32_t *indirect_params;
>>> +      if (!ctx->Driver.MapBufferRange(ctx, 0, indirect->Size, 
>>> GL_MAP_READ_BIT,
>>> +            (struct gl_buffer_object *)indirect)) {
>>
>> Are you just casting away the const here?  indirect should definitely
>> not be const, because you're modifying it in calls like this.
>
> Yeah, he's casting away const, but the buffer's being mapped for 
> read-only.  An indirect drawing call should never modify the indirect 
> buffer's contents.

But it sure does modify the indirect buffer object's struct, since it's
getting used to do the call.  In the i965 case, the struct's "what bits
have been referenced by the GPU since our last stall?" get modified both
in the normal draw path and in the fallback path.

Even state_tracker modifies the struct:

   obj->Pointer = pipe_buffer_map_range(pipe,
                                        st_obj->buffer,
                                        offset, length,
                                        flags,
                                        &st_obj->transfer);

Attachment: pgpUdJvQBsJpS.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to