mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 23:50:11 +01:00
targets/egl-static: do not rely on libudev on Android
There is no libudev on Android. Use DRM to get the PCI ID directly. Reviewed-by: Benjamin Franzke <benjaminfranzke@googlemail.com>
This commit is contained in:
parent
15418a8505
commit
4b2b0b9fb8
1 changed files with 64 additions and 0 deletions
|
|
@ -109,6 +109,70 @@ out:
|
|||
return (*chip_id >= 0);
|
||||
}
|
||||
|
||||
#elif defined(PIPE_OS_ANDROID)
|
||||
|
||||
#include <xf86drm.h>
|
||||
/* for i915 */
|
||||
#include <i915_drm.h>
|
||||
/* for radeon */
|
||||
#include <radeon_drm.h>
|
||||
/* for util_strcmp */
|
||||
#include "util/u_string.h"
|
||||
|
||||
static boolean
|
||||
drm_fd_get_pci_id(int fd, int *vendor_id, int *chip_id)
|
||||
{
|
||||
drmVersionPtr version;
|
||||
|
||||
*chip_id = -1;
|
||||
|
||||
version = drmGetVersion(fd);
|
||||
if (!version) {
|
||||
_eglLog(_EGL_WARNING, "invalid drm fd");
|
||||
return FALSE;
|
||||
}
|
||||
if (!version->name) {
|
||||
_eglLog(_EGL_WARNING, "unable to determine the driver name");
|
||||
drmFreeVersion(version);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (util_strcmp(version->name, "i915") == 0) {
|
||||
struct drm_i915_getparam gp;
|
||||
int ret;
|
||||
|
||||
*vendor_id = 0x8086;
|
||||
|
||||
memset(&gp, 0, sizeof(gp));
|
||||
gp.param = I915_PARAM_CHIPSET_ID;
|
||||
gp.value = chip_id;
|
||||
ret = drmCommandWriteRead(fd, DRM_I915_GETPARAM, &gp, sizeof(gp));
|
||||
if (ret) {
|
||||
_eglLog(_EGL_WARNING, "failed to get param for i915");
|
||||
*chip_id = -1;
|
||||
}
|
||||
}
|
||||
else if (util_strcmp(version->name, "radeon") == 0) {
|
||||
struct drm_radeon_info info;
|
||||
int ret;
|
||||
|
||||
*vendor_id = 0x1002;
|
||||
|
||||
memset(&info, 0, sizeof(info));
|
||||
info.request = RADEON_INFO_DEVICE_ID;
|
||||
info.value = (unsigned long) chip_id;
|
||||
ret = drmCommandWriteRead(fd, DRM_RADEON_INFO, &info, sizeof(info));
|
||||
if (ret) {
|
||||
_eglLog(_EGL_WARNING, "failed to get info for radeon");
|
||||
*chip_id = -1;
|
||||
}
|
||||
}
|
||||
|
||||
drmFreeVersion(version);
|
||||
|
||||
return (*chip_id >= 0);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static boolean
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue