mesa/main: bail earlier for size == 0 in _mesa_clear_buffer_sub_data

Note that the conversion of the clear data (when data != NULL) can fail due
to an out of memory condition, but it does not check any error conditions
mandated by the spec. Therefore, it is safe to skip when size == 0.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Nicolai Hähnle 2016-01-06 17:57:49 -05:00
parent fd7229b437
commit 46b7a526f5

View file

@ -1868,12 +1868,14 @@ _mesa_clear_buffer_sub_data(struct gl_context *ctx,
return;
}
/* Bail early. Negative size has already been checked. */
if (size == 0)
return;
if (data == NULL) {
/* clear to zeros, per the spec */
if (size > 0) {
ctx->Driver.ClearBufferSubData(ctx, offset, size,
NULL, clearValueSize, bufObj);
}
ctx->Driver.ClearBufferSubData(ctx, offset, size,
NULL, clearValueSize, bufObj);
return;
}
@ -1882,10 +1884,8 @@ _mesa_clear_buffer_sub_data(struct gl_context *ctx,
return;
}
if (size > 0) {
ctx->Driver.ClearBufferSubData(ctx, offset, size,
clearValue, clearValueSize, bufObj);
}
ctx->Driver.ClearBufferSubData(ctx, offset, size,
clearValue, clearValueSize, bufObj);
}
void GLAPIENTRY