vc4: Fix handling of UBO range offsets.

The ranges are in units of bytes, not dwords.  This wasn't caught by
piglit tests because ttn tends to make one big uniform file, so we only
had one UBO range with a src and dst offset of 0.
This commit is contained in:
Eric Anholt 2016-07-27 14:58:43 -07:00
parent 9128acfb57
commit 02f8c444e8
1 changed files with 3 additions and 2 deletions

View File

@ -182,10 +182,11 @@ vc4_upload_ubo(struct vc4_context *vc4,
return NULL;
struct vc4_bo *ubo = vc4_bo_alloc(vc4->screen, shader->ubo_size, "ubo");
uint32_t *data = vc4_bo_map(ubo);
void *data = vc4_bo_map(ubo);
for (uint32_t i = 0; i < shader->num_ubo_ranges; i++) {
memcpy(data + shader->ubo_ranges[i].dst_offset,
gallium_uniforms + shader->ubo_ranges[i].src_offset,
((const void *)gallium_uniforms +
shader->ubo_ranges[i].src_offset),
shader->ubo_ranges[i].size);
}