diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_draw_upload.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index 0a7725dcb96..725a65e10ab 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -468,17 +468,18 @@ brw_prepare_vertices(struct brw_context *brw) const uint32_t offset = (uintptr_t)glarray->Ptr; - uint32_t start, range; + /* Start with the worst case */ + uint32_t start = 0; + uint32_t range = intel_buffer->Base.Size; if (glarray->InstanceDivisor) { - start = offset; - range = (glarray->StrideB * ((brw->num_instances / - glarray->InstanceDivisor) - 1) + - glarray->_ElementSize); + if (brw->num_instances) { + start = offset; + range = (glarray->StrideB * ((brw->num_instances / + glarray->InstanceDivisor) - 1) + + glarray->_ElementSize); + } } else { - if (!brw->vb.index_bounds_valid) { - start = 0; - range = intel_buffer->Base.Size; - } else { + if (brw->vb.index_bounds_valid) { start = offset + min_index * glarray->StrideB; range = (glarray->StrideB * (max_index - min_index) + glarray->_ElementSize); |