[Mesa-dev] [PATCH V2 14/15] vbo: map indirect buffer and extract params if doing sw primitive restart
Brian Paul
brianp at vmware.com
Thu Nov 7 09:34:52 PST 2013
On 11/07/2013 10:23 AM, Eric Anholt wrote:
> Chris Forbes <chrisf at ijw.co.nz> writes:
>
>> V2: Check for mapping failure (thanks Brian)
>>
>> Signed-off-by: Chris Forbes <chrisf at 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.
To avoid the cast we'd need a const-qualified
ctx->Driver.MapBufferRange() function, but the implementation of that
would then probably often have to cast-away const too.
I think the above is OK.
-Brian
More information about the mesa-dev
mailing list