zink: implement async nir creation

this just punts to the compile threads directly

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18198>
This commit is contained in:
Mike Blumenkrantz 2022-08-15 12:23:09 -04:00 committed by Marge Bot
parent b8c82b50f7
commit dcc5261895
3 changed files with 18 additions and 1 deletions

View file

@ -1359,3 +1359,14 @@ zink_set_rasterizer_discard(struct zink_context *ctx, bool disable)
ctx->rasterizer_discard_changed = true;
return true;
}
void
zink_driver_thread_add_job(struct pipe_screen *pscreen, void *data,
struct util_queue_fence *fence,
pipe_driver_thread_func execute,
pipe_driver_thread_func cleanup,
const size_t job_size)
{
struct zink_screen *screen = zink_screen(pscreen);
util_queue_add_job(&screen->cache_get_thread, data, fence, execute, cleanup, job_size);
}

View file

@ -294,7 +294,12 @@ zink_set_fs_point_coord_key(struct zink_context *ctx)
bool
zink_set_rasterizer_discard(struct zink_context *ctx, bool disable);
void
zink_driver_thread_add_job(struct pipe_screen *pscreen, void *data,
struct util_queue_fence *fence,
pipe_driver_thread_func execute,
pipe_driver_thread_func cleanup,
const size_t job_size);
equals_gfx_pipeline_state_func
zink_get_gfx_pipeline_eq_func(struct zink_screen *screen, struct zink_gfx_program *prog);
#ifdef __cplusplus

View file

@ -2337,6 +2337,7 @@ zink_internal_create_screen(const struct pipe_screen_config *config)
screen->base.get_sample_pixel_grid = zink_get_sample_pixel_grid;
screen->base.is_compute_copy_faster = zink_is_compute_copy_faster;
screen->base.is_format_supported = zink_is_format_supported;
screen->base.driver_thread_add_job = zink_driver_thread_add_job;
if (screen->info.have_EXT_image_drm_format_modifier && screen->info.have_EXT_external_memory_dma_buf) {
screen->base.query_dmabuf_modifiers = zink_query_dmabuf_modifiers;
screen->base.is_dmabuf_modifier_supported = zink_is_dmabuf_modifier_supported;