mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 18:50:10 +01:00
gallium: Add a memory range parameter to resource_bind_backing
Needed to bind regions of the resource. Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29408>
This commit is contained in:
parent
56028a888e
commit
fcc0fd2fc1
6 changed files with 16 additions and 5 deletions
|
|
@ -678,7 +678,7 @@ trace_screen_free_memory(struct pipe_screen *_screen,
|
|||
|
||||
static void
|
||||
trace_screen_free_memory_fd(struct pipe_screen *_screen,
|
||||
struct pipe_memory_allocation *pmem)
|
||||
struct pipe_memory_allocation *pmem)
|
||||
{
|
||||
struct trace_screen *tr_scr = trace_screen(_screen);
|
||||
struct pipe_screen *screen = tr_scr->screen;
|
||||
|
|
@ -698,6 +698,8 @@ static bool
|
|||
trace_screen_resource_bind_backing(struct pipe_screen *_screen,
|
||||
struct pipe_resource *resource,
|
||||
struct pipe_memory_allocation *pmem,
|
||||
uint64_t fd_offset,
|
||||
uint64_t size,
|
||||
uint64_t offset)
|
||||
{
|
||||
struct trace_screen *tr_scr = trace_screen(_screen);
|
||||
|
|
@ -709,9 +711,11 @@ trace_screen_resource_bind_backing(struct pipe_screen *_screen,
|
|||
trace_dump_arg(ptr, screen);
|
||||
trace_dump_arg(ptr, resource);
|
||||
trace_dump_arg(ptr, pmem);
|
||||
trace_dump_arg(uint, fd_offset);
|
||||
trace_dump_arg(uint, size);
|
||||
trace_dump_arg(uint, offset);
|
||||
|
||||
result = screen->resource_bind_backing(screen, resource, pmem, offset);
|
||||
result = screen->resource_bind_backing(screen, resource, pmem, fd_offset, size, offset);
|
||||
|
||||
trace_dump_ret(bool, result);
|
||||
|
||||
|
|
|
|||
|
|
@ -1313,6 +1313,8 @@ static bool
|
|||
llvmpipe_resource_bind_backing(struct pipe_screen *pscreen,
|
||||
struct pipe_resource *pt,
|
||||
struct pipe_memory_allocation *pmem,
|
||||
uint64_t fd_offset,
|
||||
uint64_t size,
|
||||
uint64_t offset)
|
||||
{
|
||||
struct llvmpipe_screen *screen = llvmpipe_screen(pscreen);
|
||||
|
|
|
|||
|
|
@ -256,7 +256,7 @@ get_buffer_resource(struct pipe_context *ctx, const VkDescriptorAddressInfoEXT *
|
|||
.cpu_addr = (void *)(uintptr_t)bda->address,
|
||||
};
|
||||
|
||||
pscreen->resource_bind_backing(pscreen, pres, (void *)&alloc, 0);
|
||||
pscreen->resource_bind_backing(pscreen, pres, (void *)&alloc, 0, 0, 0);
|
||||
return pres;
|
||||
}
|
||||
|
||||
|
|
@ -356,7 +356,7 @@ lvp_descriptor_set_create(struct lvp_device *device,
|
|||
set->map = device->pscreen->map_memory(device->pscreen, set->pmem);
|
||||
memset(set->map, 0, bo_size);
|
||||
|
||||
device->pscreen->resource_bind_backing(device->pscreen, set->bo, set->pmem, 0);
|
||||
device->pscreen->resource_bind_backing(device->pscreen, set->bo, set->pmem, 0, 0, 0);
|
||||
|
||||
for (uint32_t binding_index = 0; binding_index < layout->binding_count; binding_index++) {
|
||||
const struct lvp_descriptor_set_binding_layout *bind_layout = &set->layout->binding[binding_index];
|
||||
|
|
|
|||
|
|
@ -2151,6 +2151,7 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_BindBufferMemory2(VkDevice _device,
|
|||
device->pscreen->resource_bind_backing(device->pscreen,
|
||||
buffer->bo,
|
||||
mem->pmem,
|
||||
0, 0,
|
||||
pBindInfos[i].memoryOffset);
|
||||
if (status)
|
||||
*status->pResult = VK_SUCCESS;
|
||||
|
|
@ -2168,6 +2169,7 @@ lvp_image_plane_bind(struct lvp_device *device,
|
|||
if (!device->pscreen->resource_bind_backing(device->pscreen,
|
||||
plane->bo,
|
||||
mem->pmem,
|
||||
0, 0,
|
||||
memory_offset + *plane_offset)) {
|
||||
/* This is probably caused by the texture being too large, so let's
|
||||
* report this as the *closest* allowed error-code. It's not ideal,
|
||||
|
|
@ -2210,6 +2212,7 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_BindImageMemory2(VkDevice _device,
|
|||
device->pscreen->resource_bind_backing(device->pscreen,
|
||||
image->planes[0].bo,
|
||||
image->planes[0].pmem,
|
||||
0, 0,
|
||||
image->planes[0].memory_offset);
|
||||
did_bind = true;
|
||||
if (status)
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ get_buffer_resource(struct pipe_context *ctx, void *mem)
|
|||
.cpu_addr = mem,
|
||||
};
|
||||
|
||||
pscreen->resource_bind_backing(pscreen, pres, (void *)&alloc, 0);
|
||||
pscreen->resource_bind_backing(pscreen, pres, (void *)&alloc, 0, 0, 0);
|
||||
return pres;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -691,6 +691,8 @@ struct pipe_screen {
|
|||
bool (*resource_bind_backing)(struct pipe_screen *screen,
|
||||
struct pipe_resource *pt,
|
||||
struct pipe_memory_allocation *pmem,
|
||||
uint64_t fd_offset,
|
||||
uint64_t size,
|
||||
uint64_t offset);
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue