Mesa (master): i965: Drop index buffer re-alignment code.
Kenneth Graunke
kwg at kemper.freedesktop.org
Wed Jun 28 23:21:55 UTC 2017
Module: Mesa
Branch: master
Commit: d2c4f714d1a7752ad773a2662bf9800e0ea0b0c1
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d2c4f714d1a7752ad773a2662bf9800e0ea0b0c1
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Thu Jun 22 11:16:06 2017 -0700
i965: Drop index buffer re-alignment code.
This shouldn't ever happen - GL requires it to be aligned:
"Clients must align data elements consistent with the requirements
of the client platform, with an additional base-level requirement
that an offset within a buffer to a datum comprising N basic
machine units be a multiple of N."
Mesa should reject unaligned index buffers for us - we shouldn't have
to handle them in the driver.
Note that Gallium already makes this assumption.
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
---
src/mesa/drivers/dri/i965/brw_draw_upload.c | 38 ++++++-----------------------
1 file changed, 8 insertions(+), 30 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c
index 05b6b1a50f..baa1de353b 100644
--- a/src/mesa/drivers/dri/i965/brw_draw_upload.c
+++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c
@@ -711,7 +711,6 @@ brw_prepare_shader_draw_parameters(struct brw_context *brw)
static void
brw_upload_indices(struct brw_context *brw)
{
- struct gl_context *ctx = &brw->ctx;
const struct _mesa_index_buffer *index_buffer = brw->ib.ib;
GLuint ib_size;
struct brw_bo *old_bo = brw->ib.bo;
@@ -738,35 +737,14 @@ brw_upload_indices(struct brw_context *brw)
} else {
offset = (GLuint) (unsigned long) index_buffer->ptr;
- /* If the index buffer isn't aligned to its element size, we have to
- * rebase it into a temporary.
- */
- if ((ib_type_size - 1) & offset) {
- perf_debug("copying index buffer to a temporary to work around "
- "misaligned offset %d\n", offset);
-
- GLubyte *map = ctx->Driver.MapBufferRange(ctx,
- offset,
- ib_size,
- GL_MAP_READ_BIT,
- bufferobj,
- MAP_INTERNAL);
-
- intel_upload_data(brw, map, ib_size, ib_type_size,
- &brw->ib.bo, &offset);
- brw->ib.size = brw->ib.bo->size;
-
- ctx->Driver.UnmapBuffer(ctx, bufferobj, MAP_INTERNAL);
- } else {
- struct brw_bo *bo =
- intel_bufferobj_buffer(brw, intel_buffer_object(bufferobj),
- offset, ib_size);
- if (bo != brw->ib.bo) {
- brw_bo_unreference(brw->ib.bo);
- brw->ib.bo = bo;
- brw->ib.size = bufferobj->Size;
- brw_bo_reference(bo);
- }
+ struct brw_bo *bo =
+ intel_bufferobj_buffer(brw, intel_buffer_object(bufferobj),
+ offset, ib_size);
+ if (bo != brw->ib.bo) {
+ brw_bo_unreference(brw->ib.bo);
+ brw->ib.bo = bo;
+ brw->ib.size = bufferobj->Size;
+ brw_bo_reference(bo);
}
}
More information about the mesa-commit
mailing list