mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
iris: Fix SO stride units for DrawTransformFeedback
Mesa measures in DWords. The hardware also claims to measure in DWords. Except the SO_WRITE_OFFSET field is actually bits 31:2, with 1:0 MBZ. Which means that it really measures in bytes. So, convert to bytes. Without this, our offset / stride denominator was 1/4th the size it should be, leading to 4x the vertex count that we should have had. Fixes GTF-GL46.gtf40.GL3Tests.transform_feedback2.transform_feedback2_two_buffers
This commit is contained in:
parent
fea36a8f43
commit
34d3103dee
2 changed files with 2 additions and 2 deletions
|
|
@ -396,7 +396,7 @@ struct iris_stream_output_target {
|
|||
/** Storage holding the offset where we're writing in the buffer */
|
||||
struct iris_state_ref offset;
|
||||
|
||||
/** Stride (dwords-per-vertex) during this transform feedback operation */
|
||||
/** Stride (bytes-per-vertex) during this transform feedback operation */
|
||||
uint16_t stride;
|
||||
|
||||
/** Has 3DSTATE_SO_BUFFER actually been emitted, zeroing the offsets? */
|
||||
|
|
|
|||
|
|
@ -1666,7 +1666,7 @@ iris_update_compiled_shaders(struct iris_context *ice)
|
|||
struct iris_stream_output_target *so =
|
||||
(void *) ice->state.so_target[i];
|
||||
if (so)
|
||||
so->stride = ish->stream_output.stride[i];
|
||||
so->stride = ish->stream_output.stride[i] * sizeof(uint32_t);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue