drv: add drv_preload
It can be used to preload a backend, currently only used to preload amdgpu. BUG=b:269664560 TEST="grep radeonsi /proc/$(pidof zygote)/maps" on grunt Change-Id: I30d9f701f1da3bc243a9c81326a1ba0c5e0562de Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/4262034 Commit-Queue: Chia-I Wu <olv@google.com> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Tested-by: Chia-I Wu <olv@google.com>
This commit is contained in:
parent
b9d5d6c10a
commit
bf1f37f516
4 changed files with 47 additions and 21 deletions
52
drv.c
52
drv.c
|
|
@ -52,6 +52,35 @@ extern const struct backend backend_virtgpu;
|
|||
extern const struct backend backend_udl;
|
||||
extern const struct backend backend_vkms;
|
||||
|
||||
static const struct backend *drv_backend_list[] = {
|
||||
#ifdef DRV_AMDGPU
|
||||
&backend_amdgpu,
|
||||
#endif
|
||||
#ifdef DRV_I915
|
||||
&backend_i915,
|
||||
#endif
|
||||
#ifdef DRV_MSM
|
||||
&backend_msm,
|
||||
#endif
|
||||
#ifdef DRV_VC4
|
||||
&backend_vc4,
|
||||
#endif
|
||||
&backend_evdi, &backend_komeda, &backend_marvell, &backend_mediatek,
|
||||
&backend_meson, &backend_nouveau, &backend_radeon, &backend_rockchip,
|
||||
&backend_sun4i_drm, &backend_synaptics, &backend_udl, &backend_virtgpu,
|
||||
&backend_vkms
|
||||
};
|
||||
|
||||
void drv_preload(bool load)
|
||||
{
|
||||
unsigned int i;
|
||||
for (i = 0; i < ARRAY_SIZE(drv_backend_list); i++) {
|
||||
const struct backend *b = drv_backend_list[i];
|
||||
if (b->preload)
|
||||
b->preload(load);
|
||||
}
|
||||
}
|
||||
|
||||
static const struct backend *drv_get_backend(int fd)
|
||||
{
|
||||
drmVersionPtr drm_version;
|
||||
|
|
@ -62,27 +91,8 @@ static const struct backend *drv_get_backend(int fd)
|
|||
if (!drm_version)
|
||||
return NULL;
|
||||
|
||||
const struct backend *backend_list[] = {
|
||||
#ifdef DRV_AMDGPU
|
||||
&backend_amdgpu,
|
||||
#endif
|
||||
#ifdef DRV_I915
|
||||
&backend_i915,
|
||||
#endif
|
||||
#ifdef DRV_MSM
|
||||
&backend_msm,
|
||||
#endif
|
||||
#ifdef DRV_VC4
|
||||
&backend_vc4,
|
||||
#endif
|
||||
&backend_evdi, &backend_komeda, &backend_marvell, &backend_mediatek,
|
||||
&backend_meson, &backend_nouveau, &backend_radeon, &backend_rockchip,
|
||||
&backend_sun4i_drm, &backend_synaptics, &backend_udl, &backend_virtgpu,
|
||||
&backend_vkms
|
||||
};
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(backend_list); i++) {
|
||||
const struct backend *b = backend_list[i];
|
||||
for (i = 0; i < ARRAY_SIZE(drv_backend_list); i++) {
|
||||
const struct backend *b = drv_backend_list[i];
|
||||
if (!strcmp(drm_version->name, b->name)) {
|
||||
drmFreeVersion(drm_version);
|
||||
return b;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue