diff --git a/src/gallium/auxiliary/target-helpers/drm_helper.h b/src/gallium/auxiliary/target-helpers/drm_helper.h index ce56b1915bc..88cff81323a 100644 --- a/src/gallium/auxiliary/target-helpers/drm_helper.h +++ b/src/gallium/auxiliary/target-helpers/drm_helper.h @@ -397,10 +397,14 @@ pipe_lima_create_screen(int fd, const struct pipe_screen_config *config) { struct pipe_screen *screen; - screen = lima_drm_screen_create(fd); + screen = lima_drm_screen_create(fd, config); return screen ? debug_screen_wrap(screen) : NULL; } -DRM_DRIVER_DESCRIPTOR(lima, NULL, 0) + +const driOptionDescription lima_driconf[] = { + #include "lima/driinfo_lima.h" +}; +DRM_DRIVER_DESCRIPTOR(lima, lima_driconf, ARRAY_SIZE(lima_driconf)) #else DRM_DRIVER_DESCRIPTOR_STUB(lima) @@ -450,6 +454,9 @@ const driOptionDescription kmsro_driconf[] = { #ifdef GALLIUM_PANFROST #include "panfrost/driinfo_panfrost.h" #endif +#ifdef GALLIUM_LIMA + #include "lima/driinfo_lima.h" +#endif }; DRM_DRIVER_DESCRIPTOR(kmsro, kmsro_driconf, ARRAY_SIZE(kmsro_driconf)) diff --git a/src/gallium/drivers/lima/driinfo_lima.h b/src/gallium/drivers/lima/driinfo_lima.h new file mode 100644 index 00000000000..07e69ec3da9 --- /dev/null +++ b/src/gallium/drivers/lima/driinfo_lima.h @@ -0,0 +1 @@ +/* lima specific driconf options */ diff --git a/src/gallium/drivers/lima/lima_screen.c b/src/gallium/drivers/lima/lima_screen.c index 2d866e56a84..8657c18448c 100644 --- a/src/gallium/drivers/lima/lima_screen.c +++ b/src/gallium/drivers/lima/lima_screen.c @@ -27,6 +27,7 @@ #include "util/ralloc.h" #include "util/u_debug.h" #include "util/u_screen.h" +#include "util/xmlconfig.h" #include "renderonly/renderonly.h" #include "drm-uapi/drm_fourcc.h" @@ -585,6 +586,9 @@ lima_screen_create(int fd, const struct pipe_screen_config *config, lima_plb_pp_stream_cache_size = MAX2(128 * 1024 * lima_ctx_num_plb, lima_plb_pp_stream_cache_size); + driParseConfigFiles(config->options, config->options_info, 0, + "lima", NULL, NULL, NULL, 0, NULL, 0); + if (!lima_screen_query_info(screen)) goto err_out0; diff --git a/src/gallium/winsys/lima/drm/lima_drm_public.h b/src/gallium/winsys/lima/drm/lima_drm_public.h index 96faec814e9..03282b5f14b 100644 --- a/src/gallium/winsys/lima/drm/lima_drm_public.h +++ b/src/gallium/winsys/lima/drm/lima_drm_public.h @@ -29,7 +29,8 @@ struct pipe_screen; struct renderonly; -struct pipe_screen *lima_drm_screen_create(int drmFD); +struct pipe_screen *lima_drm_screen_create(int drmFD, + const struct pipe_screen_config *config); struct pipe_screen *lima_drm_screen_create_renderonly(int fd, struct renderonly *ro, const struct pipe_screen_config *config); diff --git a/src/gallium/winsys/lima/drm/lima_drm_winsys.c b/src/gallium/winsys/lima/drm/lima_drm_winsys.c index eb66b29fcee..cecfac2f40c 100644 --- a/src/gallium/winsys/lima/drm/lima_drm_winsys.c +++ b/src/gallium/winsys/lima/drm/lima_drm_winsys.c @@ -30,9 +30,9 @@ #include "lima/lima_screen.h" struct pipe_screen * -lima_drm_screen_create(int fd) +lima_drm_screen_create(int fd, const struct pipe_screen_config *config) { - return u_pipe_screen_lookup_or_create(os_dupfd_cloexec(fd), NULL, + return u_pipe_screen_lookup_or_create(os_dupfd_cloexec(fd), config, NULL, lima_screen_create); }