From 49a20e0981c21ffbbf91654fd34a44a6d01d60ac Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Sun, 13 Mar 2022 12:11:33 -0400 Subject: [PATCH] zink: start a unified driver workarounds struct eventually anything that checks driverID should be moved here for ease of reference/updating Acked-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_screen.c | 8 ++++++++ src/gallium/drivers/zink/zink_screen.h | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 3da9972abc8..d4db85e6032 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -2056,6 +2056,12 @@ zink_get_sample_pixel_grid(struct pipe_screen *pscreen, unsigned sample_count, *height = screen->maxSampleLocationGridSize[idx].height; } +static void +init_driver_workarounds(struct zink_screen *screen) +{ + screen->driver_workarounds.color_write_missing = !screen->info.have_EXT_color_write_enable; +} + static struct zink_screen * zink_internal_create_screen(const struct pipe_screen_config *config) { @@ -2266,6 +2272,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config) screen->base.vertex_state_destroy = zink_cache_vertex_state_destroy; glsl_type_singleton_init_or_ref(); + init_driver_workarounds(screen); + return screen; fail: diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h index b93673e75bb..585ec729a6b 100644 --- a/src/gallium/drivers/zink/zink_screen.h +++ b/src/gallium/drivers/zink/zink_screen.h @@ -177,6 +177,10 @@ struct zink_screen { } null_descriptor_hashes; VkExtent2D maxSampleLocationGridSize[5]; + + struct { + bool color_write_missing; + } driver_workarounds; };