gallium: allow to report errors from p_screen::resource_bind_backing
Reviewed-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10689>
This commit is contained in:

committed by
Marge Bot

parent
9618d5700c
commit
6012dec550
@@ -456,7 +456,7 @@ trace_screen_free_memory(struct pipe_screen *_screen,
|
|||||||
trace_dump_call_end();
|
trace_dump_call_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static bool
|
||||||
trace_screen_resource_bind_backing(struct pipe_screen *_screen,
|
trace_screen_resource_bind_backing(struct pipe_screen *_screen,
|
||||||
struct pipe_resource *resource,
|
struct pipe_resource *resource,
|
||||||
struct pipe_memory_allocation *pmem,
|
struct pipe_memory_allocation *pmem,
|
||||||
@@ -464,6 +464,7 @@ trace_screen_resource_bind_backing(struct pipe_screen *_screen,
|
|||||||
{
|
{
|
||||||
struct trace_screen *tr_scr = trace_screen(_screen);
|
struct trace_screen *tr_scr = trace_screen(_screen);
|
||||||
struct pipe_screen *screen = tr_scr->screen;
|
struct pipe_screen *screen = tr_scr->screen;
|
||||||
|
bool result;
|
||||||
|
|
||||||
trace_dump_call_begin("pipe_screen", "resource_bind_backing");
|
trace_dump_call_begin("pipe_screen", "resource_bind_backing");
|
||||||
|
|
||||||
@@ -472,9 +473,11 @@ trace_screen_resource_bind_backing(struct pipe_screen *_screen,
|
|||||||
trace_dump_arg(ptr, pmem);
|
trace_dump_arg(ptr, pmem);
|
||||||
trace_dump_arg(uint, offset);
|
trace_dump_arg(uint, offset);
|
||||||
|
|
||||||
screen->resource_bind_backing(screen, resource, pmem, offset);
|
result = screen->resource_bind_backing(screen, resource, pmem, offset);
|
||||||
|
|
||||||
trace_dump_call_end();
|
trace_dump_call_end();
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct pipe_resource *
|
static struct pipe_resource *
|
||||||
|
@@ -842,7 +842,7 @@ static void llvmpipe_free_memory(struct pipe_screen *screen,
|
|||||||
os_free_aligned(pmem);
|
os_free_aligned(pmem);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void llvmpipe_resource_bind_backing(struct pipe_screen *screen,
|
static bool llvmpipe_resource_bind_backing(struct pipe_screen *screen,
|
||||||
struct pipe_resource *pt,
|
struct pipe_resource *pt,
|
||||||
struct pipe_memory_allocation *pmem,
|
struct pipe_memory_allocation *pmem,
|
||||||
uint64_t offset)
|
uint64_t offset)
|
||||||
@@ -850,13 +850,16 @@ static void llvmpipe_resource_bind_backing(struct pipe_screen *screen,
|
|||||||
struct llvmpipe_resource *lpr = llvmpipe_resource(pt);
|
struct llvmpipe_resource *lpr = llvmpipe_resource(pt);
|
||||||
|
|
||||||
if (!lpr->backable)
|
if (!lpr->backable)
|
||||||
return;
|
return FALSE;
|
||||||
|
|
||||||
|
|
||||||
if (llvmpipe_resource_is_texture(&lpr->base))
|
if (llvmpipe_resource_is_texture(&lpr->base))
|
||||||
lpr->tex_data = (char *)pmem + offset;
|
lpr->tex_data = (char *)pmem + offset;
|
||||||
else
|
else
|
||||||
lpr->data = (char *)pmem + offset;
|
lpr->data = (char *)pmem + offset;
|
||||||
lpr->backing_offset = offset;
|
lpr->backing_offset = offset;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *llvmpipe_map_memory(struct pipe_screen *screen,
|
static void *llvmpipe_map_memory(struct pipe_screen *screen,
|
||||||
|
@@ -550,7 +550,7 @@ struct pipe_screen {
|
|||||||
/**
|
/**
|
||||||
* Bind memory to a resource.
|
* Bind memory to a resource.
|
||||||
*/
|
*/
|
||||||
void (*resource_bind_backing)(struct pipe_screen *screen,
|
bool (*resource_bind_backing)(struct pipe_screen *screen,
|
||||||
struct pipe_resource *pt,
|
struct pipe_resource *pt,
|
||||||
struct pipe_memory_allocation *pmem,
|
struct pipe_memory_allocation *pmem,
|
||||||
uint64_t offset);
|
uint64_t offset);
|
||||||
|
Reference in New Issue
Block a user