diff options
author | Kenneth Graunke <[email protected]> | 2017-06-22 11:16:06 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2017-06-28 16:21:44 -0700 |
commit | d2c4f714d1a7752ad773a2662bf9800e0ea0b0c1 (patch) | |
tree | b5d7c9578230b677c09c6da345974fec21eb2f7f | |
parent | c1b1cad586115ee37bd808b4241ad881c6ade63e (diff) |
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 <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_draw_upload.c | 38 |
1 files 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 05b6b1a50f1..baa1de353b4 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); } } |