radv: properly align the fence and EOP bug VA on GFX9
If alignement is 0, offets returned by radv_cmd_buffer_upload_alloc() are always 0. These two virtual addresses were pointing at the same location. Cc: 18.3 19.0 <mesa-stable@lists.freedesktop.org> Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
parent
2eb0905ffa
commit
c2a148692b
|
@ -338,14 +338,15 @@ radv_reset_cmd_buffer(struct radv_cmd_buffer *cmd_buffer)
|
|||
unsigned fence_offset, eop_bug_offset;
|
||||
void *fence_ptr;
|
||||
|
||||
radv_cmd_buffer_upload_alloc(cmd_buffer, 8, 0, &fence_offset,
|
||||
radv_cmd_buffer_upload_alloc(cmd_buffer, 8, 8, &fence_offset,
|
||||
&fence_ptr);
|
||||
|
||||
cmd_buffer->gfx9_fence_va =
|
||||
radv_buffer_get_va(cmd_buffer->upload.upload_bo);
|
||||
cmd_buffer->gfx9_fence_va += fence_offset;
|
||||
|
||||
/* Allocate a buffer for the EOP bug on GFX9. */
|
||||
radv_cmd_buffer_upload_alloc(cmd_buffer, 16 * num_db, 0,
|
||||
radv_cmd_buffer_upload_alloc(cmd_buffer, 16 * num_db, 8,
|
||||
&eop_bug_offset, &fence_ptr);
|
||||
cmd_buffer->gfx9_eop_bug_va =
|
||||
radv_buffer_get_va(cmd_buffer->upload.upload_bo);
|
||||
|
@ -416,6 +417,8 @@ radv_cmd_buffer_upload_alloc(struct radv_cmd_buffer *cmd_buffer,
|
|||
unsigned *out_offset,
|
||||
void **ptr)
|
||||
{
|
||||
assert(util_is_power_of_two_nonzero(alignment));
|
||||
|
||||
uint64_t offset = align(cmd_buffer->upload.offset, alignment);
|
||||
if (offset + size > cmd_buffer->upload.size) {
|
||||
if (!radv_cmd_buffer_resize_upload_buf(cmd_buffer, size))
|
||||
|
|
Loading…
Reference in New Issue