mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 13:30:11 +01:00
vc4: use u_pipe_screen_lookup_or_create() to keep track of and reuse screens
Signed-off-by: Eric Engestrom <eric@igalia.com> Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20180>
This commit is contained in:
parent
769b511054
commit
7b3ee9335f
3 changed files with 19 additions and 4 deletions
|
|
@ -537,8 +537,17 @@ vc4_get_chip_info(struct vc4_screen *screen)
|
|||
return true;
|
||||
}
|
||||
|
||||
static int
|
||||
vc4_screen_get_fd(struct pipe_screen *pscreen)
|
||||
{
|
||||
struct vc4_screen *screen = vc4_screen(pscreen);
|
||||
|
||||
return screen->fd;
|
||||
}
|
||||
|
||||
struct pipe_screen *
|
||||
vc4_screen_create(int fd, struct renderonly *ro)
|
||||
vc4_screen_create(int fd, const struct pipe_screen_config *config,
|
||||
struct renderonly *ro)
|
||||
{
|
||||
struct vc4_screen *screen = rzalloc(NULL, struct vc4_screen);
|
||||
uint64_t syncobj_cap = 0;
|
||||
|
|
@ -548,6 +557,7 @@ vc4_screen_create(int fd, struct renderonly *ro)
|
|||
pscreen = &screen->base;
|
||||
|
||||
pscreen->destroy = vc4_screen_destroy;
|
||||
pscreen->get_screen_fd = vc4_screen_get_fd;
|
||||
pscreen->get_param = vc4_screen_get_param;
|
||||
pscreen->get_paramf = vc4_screen_get_paramf;
|
||||
pscreen->get_shader_param = vc4_screen_get_shader_param;
|
||||
|
|
|
|||
|
|
@ -114,7 +114,9 @@ vc4_screen(struct pipe_screen *screen)
|
|||
return (struct vc4_screen *)screen;
|
||||
}
|
||||
|
||||
struct pipe_screen *vc4_screen_create(int fd, struct renderonly *ro);
|
||||
struct pipe_screen *vc4_screen_create(int fd,
|
||||
const struct pipe_screen_config *config,
|
||||
struct renderonly *ro);
|
||||
|
||||
const void *
|
||||
vc4_screen_get_compiler_options(struct pipe_screen *pscreen,
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#include <sys/ioctl.h>
|
||||
|
||||
#include "util/os_file.h"
|
||||
#include "util/u_screen.h"
|
||||
|
||||
#include "renderonly/renderonly.h"
|
||||
#include "kmsro/drm/kmsro_drm_public.h"
|
||||
|
|
@ -48,7 +49,8 @@ vc4_drm_screen_create(int fd, const struct pipe_screen_config *config)
|
|||
#endif
|
||||
|
||||
if (v3d_present)
|
||||
return vc4_screen_create(os_dupfd_cloexec(fd), NULL);
|
||||
return u_pipe_screen_lookup_or_create(os_dupfd_cloexec(fd), config,
|
||||
NULL, vc4_screen_create);
|
||||
|
||||
#ifdef GALLIUM_KMSRO
|
||||
return kmsro_drm_screen_create(fd, config);
|
||||
|
|
@ -61,5 +63,6 @@ struct pipe_screen *
|
|||
vc4_drm_screen_create_renderonly(struct renderonly *ro,
|
||||
const struct pipe_screen_config *config)
|
||||
{
|
||||
return vc4_screen_create(os_dupfd_cloexec(ro->gpu_fd), ro);
|
||||
return u_pipe_screen_lookup_or_create(os_dupfd_cloexec(ro->gpu_fd), config,
|
||||
ro, vc4_screen_create);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue