mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
radv: add new upload alloc aligned api
The video buffers need to have objects aligned at certain ranges, this enhances the uploader to allow an alignment to be specified. Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388>
This commit is contained in:
parent
855ad612e1
commit
ee7837aae2
2 changed files with 15 additions and 2 deletions
|
|
@ -492,8 +492,9 @@ radv_cmd_buffer_resize_upload_buf(struct radv_cmd_buffer *cmd_buffer, uint64_t m
|
|||
}
|
||||
|
||||
bool
|
||||
radv_cmd_buffer_upload_alloc(struct radv_cmd_buffer *cmd_buffer, unsigned size,
|
||||
unsigned *out_offset, void **ptr)
|
||||
radv_cmd_buffer_upload_alloc_aligned(struct radv_cmd_buffer *cmd_buffer, unsigned size,
|
||||
unsigned alignment,
|
||||
unsigned *out_offset, void **ptr)
|
||||
{
|
||||
assert(size % 4 == 0);
|
||||
|
||||
|
|
@ -508,6 +509,8 @@ radv_cmd_buffer_upload_alloc(struct radv_cmd_buffer *cmd_buffer, unsigned size,
|
|||
if ((size & (line_size - 1)) > gap)
|
||||
offset = align(offset, line_size);
|
||||
|
||||
if (alignment)
|
||||
offset = align(offset, alignment);
|
||||
if (offset + size > cmd_buffer->upload.size) {
|
||||
if (!radv_cmd_buffer_resize_upload_buf(cmd_buffer, size))
|
||||
return false;
|
||||
|
|
@ -521,6 +524,13 @@ radv_cmd_buffer_upload_alloc(struct radv_cmd_buffer *cmd_buffer, unsigned size,
|
|||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
radv_cmd_buffer_upload_alloc(struct radv_cmd_buffer *cmd_buffer, unsigned size,
|
||||
unsigned *out_offset, void **ptr)
|
||||
{
|
||||
return radv_cmd_buffer_upload_alloc_aligned(cmd_buffer, size, 0, out_offset, ptr);
|
||||
}
|
||||
|
||||
bool
|
||||
radv_cmd_buffer_upload_data(struct radv_cmd_buffer *cmd_buffer, unsigned size, const void *data,
|
||||
unsigned *out_offset)
|
||||
|
|
|
|||
|
|
@ -1804,6 +1804,9 @@ struct radv_ps_epilog_key radv_generate_ps_epilog_key(const struct radv_graphics
|
|||
bool disable_mrt_compaction);
|
||||
|
||||
void radv_cmd_buffer_reset_rendering(struct radv_cmd_buffer *cmd_buffer);
|
||||
bool radv_cmd_buffer_upload_alloc_aligned(struct radv_cmd_buffer *cmd_buffer, unsigned size,
|
||||
unsigned alignment,
|
||||
unsigned *out_offset, void **ptr);
|
||||
bool radv_cmd_buffer_upload_alloc(struct radv_cmd_buffer *cmd_buffer, unsigned size,
|
||||
unsigned *out_offset, void **ptr);
|
||||
bool radv_cmd_buffer_upload_data(struct radv_cmd_buffer *cmd_buffer, unsigned size,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue