X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Finclude%2Fpipe%2Fp_screen.h;h=3002689aeed6e7a263d299bab382a871e9014109;hb=e6c7ca218d77e5369d40d76941e7267d81633dc6;hp=a4b07c8ee251bc7985957f541a4ec238af00a1c7;hpb=50b039590e19d07607ae0714ebffeed6d4f182d5;p=mesa.git diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h index a4b07c8ee25..3002689aeed 100644 --- a/src/gallium/include/pipe/p_screen.h +++ b/src/gallium/include/pipe/p_screen.h @@ -511,6 +511,47 @@ struct pipe_screen { * should be. */ void (*finalize_nir)(struct pipe_screen *screen, void *nir, bool optimize); + + /*Separated memory/resource allocations interfaces for Vulkan */ + + /** + * Create a resource, and retrieve the required size for it but don't allocate + * any backing memory. + */ + struct pipe_resource * (*resource_create_unbacked)(struct pipe_screen *, + const struct pipe_resource *templat, + uint64_t *size_required); + + /** + * Allocate backing memory to be bound to resources. + */ + struct pipe_memory_allocation *(*allocate_memory)(struct pipe_screen *screen, + uint64_t size); + /** + * Free previously allocated backing memory. + */ + void (*free_memory)(struct pipe_screen *screen, + struct pipe_memory_allocation *); + + /** + * Bind memory to a resource. + */ + void (*resource_bind_backing)(struct pipe_screen *screen, + struct pipe_resource *pt, + struct pipe_memory_allocation *pmem, + uint64_t offset); + + /** + * Map backing memory. + */ + void *(*map_memory)(struct pipe_screen *screen, + struct pipe_memory_allocation *pmem); + + /** + * Unmap backing memory. + */ + void (*unmap_memory)(struct pipe_screen *screen, + struct pipe_memory_allocation *pmem); };