mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 22:20:14 +01:00
llvmpipe: add support for user memory pointers
This is useful for clover, but throw it at CI at least Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12316>
This commit is contained in:
parent
ee2bb57f1e
commit
9a57dceeb7
3 changed files with 24 additions and 6 deletions
|
|
@ -380,12 +380,6 @@ spec/amd_framebuffer_multisample_advanced/api-gles3: skip
|
||||||
spec/amd_performance_monitor/api: skip
|
spec/amd_performance_monitor/api: skip
|
||||||
spec/amd_performance_monitor/measure: skip
|
spec/amd_performance_monitor/measure: skip
|
||||||
spec/amd_performance_monitor/vc4: skip
|
spec/amd_performance_monitor/vc4: skip
|
||||||
spec/amd_pinned_memory/decrement-offset: skip
|
|
||||||
spec/amd_pinned_memory/increment-offset: skip
|
|
||||||
spec/amd_pinned_memory/map-buffer decrement-offset: skip
|
|
||||||
spec/amd_pinned_memory/map-buffer increment-offset: skip
|
|
||||||
spec/amd_pinned_memory/map-buffer offset=0: skip
|
|
||||||
spec/amd_pinned_memory/offset=0: skip
|
|
||||||
spec/apple_object_purgeable/object_purgeable-api-pbo: skip
|
spec/apple_object_purgeable/object_purgeable-api-pbo: skip
|
||||||
spec/apple_object_purgeable/object_purgeable-api-texture: skip
|
spec/apple_object_purgeable/object_purgeable-api-texture: skip
|
||||||
spec/apple_object_purgeable/object_purgeable-api-vbo: skip
|
spec/apple_object_purgeable/object_purgeable-api-vbo: skip
|
||||||
|
|
|
||||||
|
|
@ -348,6 +348,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||||
case PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENT:
|
case PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENT:
|
||||||
case PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE:
|
case PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE:
|
||||||
case PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL:
|
case PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL:
|
||||||
|
case PIPE_CAP_RESOURCE_FROM_USER_MEMORY:
|
||||||
return 1;
|
return 1;
|
||||||
case PIPE_CAP_SAMPLER_REDUCTION_MINMAX:
|
case PIPE_CAP_SAMPLER_REDUCTION_MINMAX:
|
||||||
case PIPE_CAP_TGSI_TXQS:
|
case PIPE_CAP_TGSI_TXQS:
|
||||||
|
|
|
||||||
|
|
@ -531,6 +531,28 @@ llvmpipe_resource_get_handle(struct pipe_screen *screen,
|
||||||
return winsys->displaytarget_get_handle(winsys, lpr->dt, whandle);
|
return winsys->displaytarget_get_handle(winsys, lpr->dt, whandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct pipe_resource *
|
||||||
|
llvmpipe_resource_from_user_memory(struct pipe_screen *_screen,
|
||||||
|
const struct pipe_resource *resource,
|
||||||
|
void *user_memory)
|
||||||
|
{
|
||||||
|
struct llvmpipe_screen *screen = llvmpipe_screen(_screen);
|
||||||
|
struct llvmpipe_resource *lpr;
|
||||||
|
|
||||||
|
lpr = CALLOC_STRUCT(llvmpipe_resource);
|
||||||
|
if (!lpr) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
lpr->base = *resource;
|
||||||
|
lpr->screen = screen;
|
||||||
|
pipe_reference_init(&lpr->base.reference, 1);
|
||||||
|
lpr->base.screen = _screen;
|
||||||
|
|
||||||
|
lpr->data = user_memory;
|
||||||
|
lpr->userBuffer = TRUE;
|
||||||
|
return &lpr->base;
|
||||||
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
llvmpipe_transfer_map_ms( struct pipe_context *pipe,
|
llvmpipe_transfer_map_ms( struct pipe_context *pipe,
|
||||||
|
|
@ -980,6 +1002,7 @@ llvmpipe_init_screen_resource_funcs(struct pipe_screen *screen)
|
||||||
|
|
||||||
screen->resource_get_info = llvmpipe_get_resource_info;
|
screen->resource_get_info = llvmpipe_get_resource_info;
|
||||||
screen->resource_get_param = llvmpipe_resource_get_param;
|
screen->resource_get_param = llvmpipe_resource_get_param;
|
||||||
|
screen->resource_from_user_memory = llvmpipe_resource_from_user_memory;
|
||||||
screen->allocate_memory = llvmpipe_allocate_memory;
|
screen->allocate_memory = llvmpipe_allocate_memory;
|
||||||
screen->free_memory = llvmpipe_free_memory;
|
screen->free_memory = llvmpipe_free_memory;
|
||||||
screen->map_memory = llvmpipe_map_memory;
|
screen->map_memory = llvmpipe_map_memory;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue