diff --git a/src/gallium/drivers/iris/iris_context.c b/src/gallium/drivers/iris/iris_context.c index 274d0c0f02d..45d82b94519 100644 --- a/src/gallium/drivers/iris/iris_context.c +++ b/src/gallium/drivers/iris/iris_context.c @@ -295,7 +295,8 @@ iris_create_context(struct pipe_screen *pscreen, void *priv, unsigned flags) } ctx->const_uploader = u_upload_create(ctx, 1024 * 1024, PIPE_BIND_CONSTANT_BUFFER, - PIPE_USAGE_IMMUTABLE, 0); + PIPE_USAGE_IMMUTABLE, + IRIS_RESOURCE_FLAG_DEVICE_MEM); if (!ctx->const_uploader) { u_upload_destroy(ctx->stream_uploader); free(ctx); @@ -330,13 +331,16 @@ iris_create_context(struct pipe_screen *pscreen, void *priv, unsigned flags) ice->state.surface_uploader = u_upload_create(ctx, 64 * 1024, PIPE_BIND_CUSTOM, PIPE_USAGE_IMMUTABLE, - IRIS_RESOURCE_FLAG_SURFACE_MEMZONE); + IRIS_RESOURCE_FLAG_SURFACE_MEMZONE | + IRIS_RESOURCE_FLAG_DEVICE_MEM); ice->state.bindless_uploader = u_upload_create(ctx, 64 * 1024, PIPE_BIND_CUSTOM, PIPE_USAGE_IMMUTABLE, - IRIS_RESOURCE_FLAG_BINDLESS_MEMZONE); + IRIS_RESOURCE_FLAG_BINDLESS_MEMZONE | + IRIS_RESOURCE_FLAG_DEVICE_MEM); ice->state.dynamic_uploader = u_upload_create(ctx, 64 * 1024, PIPE_BIND_CUSTOM, PIPE_USAGE_IMMUTABLE, - IRIS_RESOURCE_FLAG_DYNAMIC_MEMZONE); + IRIS_RESOURCE_FLAG_DYNAMIC_MEMZONE | + IRIS_RESOURCE_FLAG_DEVICE_MEM); ice->query_buffer_uploader = u_upload_create(ctx, 16 * 1024, PIPE_BIND_CUSTOM, PIPE_USAGE_STAGING, diff --git a/src/gallium/drivers/iris/iris_program_cache.c b/src/gallium/drivers/iris/iris_program_cache.c index 36faeefd91f..254cc2709fb 100644 --- a/src/gallium/drivers/iris/iris_program_cache.c +++ b/src/gallium/drivers/iris/iris_program_cache.c @@ -272,10 +272,12 @@ iris_init_program_cache(struct iris_context *ice) ice->shaders.uploader_driver = u_upload_create(&ice->ctx, 16384, PIPE_BIND_CUSTOM, PIPE_USAGE_IMMUTABLE, - IRIS_RESOURCE_FLAG_SHADER_MEMZONE); + IRIS_RESOURCE_FLAG_SHADER_MEMZONE | + IRIS_RESOURCE_FLAG_DEVICE_MEM); ice->shaders.uploader_unsync = u_upload_create(&ice->ctx, 16384, PIPE_BIND_CUSTOM, PIPE_USAGE_IMMUTABLE, - IRIS_RESOURCE_FLAG_SHADER_MEMZONE); + IRIS_RESOURCE_FLAG_SHADER_MEMZONE | + IRIS_RESOURCE_FLAG_DEVICE_MEM); } void diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c index 6e624993c80..95af0d131ed 100644 --- a/src/gallium/drivers/iris/iris_resource.c +++ b/src/gallium/drivers/iris/iris_resource.c @@ -409,6 +409,9 @@ static uint32_t iris_resource_alloc_flags(const struct iris_screen *screen, const struct pipe_resource *templ) { + if (templ->flags & IRIS_RESOURCE_FLAG_DEVICE_MEM) + return 0; + uint32_t flags = 0; switch (templ->usage) { diff --git a/src/gallium/drivers/iris/iris_resource.h b/src/gallium/drivers/iris/iris_resource.h index ff4ce11374d..763fdb80bcb 100644 --- a/src/gallium/drivers/iris/iris_resource.h +++ b/src/gallium/drivers/iris/iris_resource.h @@ -45,6 +45,7 @@ struct iris_format_info { #define IRIS_RESOURCE_FLAG_SURFACE_MEMZONE (PIPE_RESOURCE_FLAG_DRV_PRIV << 1) #define IRIS_RESOURCE_FLAG_DYNAMIC_MEMZONE (PIPE_RESOURCE_FLAG_DRV_PRIV << 2) #define IRIS_RESOURCE_FLAG_BINDLESS_MEMZONE (PIPE_RESOURCE_FLAG_DRV_PRIV << 3) +#define IRIS_RESOURCE_FLAG_DEVICE_MEM (PIPE_RESOURCE_FLAG_DRV_PRIV << 4) /** * Resources represent a GPU buffer object or image (mipmap tree).