mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 01:28:07 +02:00
ilo: fix for half-float vertex arrays
Commit 6fe0453c33 broke half-float vertex
arrays. This reverts a part of that commit, and explains why.
This commit is contained in:
parent
36ffd08706
commit
bfa8d21759
1 changed files with 14 additions and 1 deletions
|
|
@ -767,7 +767,20 @@ gen6_emit_3DSTATE_VERTEX_BUFFERS(const struct ilo_dev_info *dev,
|
|||
if (vb->buffer && vb->stride <= 2048) {
|
||||
const struct ilo_buffer *buf = ilo_buffer(vb->buffer);
|
||||
const uint32_t start_offset = vb->buffer_offset;
|
||||
const uint32_t end_offset = buf->bo_size - 1;
|
||||
/*
|
||||
* As noted in ilo_translate_format(), we treat some 3-component
|
||||
* formats as 4-component formats to work around hardware
|
||||
* limitations. Imagine the case where the vertex buffer holds a
|
||||
* single PIPE_FORMAT_R16G16B16_FLOAT vertex, and buf->bo_size is 6.
|
||||
* The hardware would not be able to fetch it because the vertex
|
||||
* buffer is expected to hold a PIPE_FORMAT_R16G16B16A16_FLOAT vertex
|
||||
* and that takes at least 8 bytes.
|
||||
*
|
||||
* For the workaround to work, we query the physical size, which is
|
||||
* page aligned, to calculate end_offset so that the last vertex has
|
||||
* a better chance to be fetched.
|
||||
*/
|
||||
const uint32_t end_offset = intel_bo_get_size(buf->bo) - 1;
|
||||
|
||||
dw |= vb->stride << BRW_VB0_PITCH_SHIFT;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue