static GRSurface* adf_init(minui_backend *backend) { adf_pdata *pdata = (adf_pdata *)backend; adf_id_t *dev_ids = NULL; ssize_t n_dev_ids, i; GRSurface* ret; #if defined(RECOVERY_ABGR) pdata->format = DRM_FORMAT_ABGR8888; #elif defined(RECOVERY_BGRA) pdata->format = DRM_FORMAT_BGRA8888; #elif defined(RECOVERY_RGBX) pdata->format = DRM_FORMAT_RGBX8888; #else pdata->format = DRM_FORMAT_RGB565; #endif n_dev_ids = adf_devices(&dev_ids); if (n_dev_ids == 0) { return NULL; } else if (n_dev_ids < 0) { fprintf(stderr, "enumerating adf devices failed: %s\n", strerror(-n_dev_ids)); return NULL; } pdata->intf_fd = -1; for (i = 0; i < n_dev_ids && pdata->intf_fd < 0; i++) { adf_device dev; int err = adf_device_open(dev_ids[i], O_RDWR, &dev); if (err < 0) { fprintf(stderr, "opening adf device %u failed: %s\n", dev_ids[i], strerror(-err)); continue; } err = adf_device_init(pdata, &dev); if (err < 0) fprintf(stderr, "initializing adf device %u failed: %s\n", dev_ids[i], strerror(-err)); adf_device_close(&dev); } free(dev_ids); if (pdata->intf_fd < 0) return NULL; ret = adf_flip(backend); adf_blank(backend, true); adf_blank(backend, false); return ret; }
MinuiBackendAdf::~MinuiBackendAdf() { adf_device_close(&dev); for (unsigned int i = 0; i < n_surfaces; i++) { SurfaceDestroy(&surfaces[i]); } if (intf_fd >= 0) close(intf_fd); }
virtual void TearDown() { if (eng >= 0) close(eng); if (intf >= 0) close(intf); adf_device_close(&dev); }
GRSurface* MinuiBackendAdf::Init() { #if defined(RECOVERY_ABGR) format = DRM_FORMAT_ABGR8888; #elif defined(RECOVERY_BGRA) format = DRM_FORMAT_BGRA8888; #elif defined(RECOVERY_RGBX) format = DRM_FORMAT_RGBX8888; #else format = DRM_FORMAT_RGB565; #endif adf_id_t* dev_ids = nullptr; ssize_t n_dev_ids = adf_devices(&dev_ids); if (n_dev_ids == 0) { return nullptr; } else if (n_dev_ids < 0) { fprintf(stderr, "enumerating adf devices failed: %s\n", strerror(-n_dev_ids)); return nullptr; } intf_fd = -1; for (ssize_t i = 0; i < n_dev_ids && intf_fd < 0; i++) { int err = adf_device_open(dev_ids[i], O_RDWR, &dev); if (err < 0) { fprintf(stderr, "opening adf device %u failed: %s\n", dev_ids[i], strerror(-err)); continue; } err = DeviceInit(&dev); if (err < 0) { fprintf(stderr, "initializing adf device %u failed: %s\n", dev_ids[i], strerror(-err)); adf_device_close(&dev); } } free(dev_ids); if (intf_fd < 0) return nullptr; GRSurface* ret = Flip(); Blank(true); Blank(false); return ret; }
static GRSurface* adf_init(minui_backend *backend) { adf_pdata *pdata = (adf_pdata *)backend; adf_id_t *dev_ids = nullptr; ssize_t n_dev_ids, i; GRSurface* ret; if (tw_device.tw_pixel_format() == mb::device::TwPixelFormat::Abgr8888) { pdata->format = DRM_FORMAT_ABGR8888; printf("setting DRM_FORMAT_ABGR8888 and GGL_PIXEL_FORMAT_BGRA_8888, GGL_PIXEL_FORMAT may not match!\n"); } else if (tw_device.tw_pixel_format() == mb::device::TwPixelFormat::Bgra8888) { pdata->format = DRM_FORMAT_BGRA8888; printf("setting DRM_FORMAT_BGRA8888 and GGL_PIXEL_FORMAT_BGRA_8888\n"); } else if (tw_device.tw_pixel_format() == mb::device::TwPixelFormat::Rgba8888) { pdata->format = DRM_FORMAT_RGBA8888; printf("setting DRM_FORMAT_RGBA8888 and GGL_PIXEL_FORMAT_RGBA_8888\n"); } else if (tw_device.tw_pixel_format() == mb::device::TwPixelFormat::Rgbx8888) { pdata->format = DRM_FORMAT_RGBX8888; printf("setting DRM_FORMAT_RGBX8888 and GGL_PIXEL_FORMAT_RGBX_8888\n"); } else { pdata->format = DRM_FORMAT_RGB565; printf("setting DRM_FORMAT_RGB565 and GGL_PIXEL_FORMAT_RGB_565\n"); } n_dev_ids = adf_devices(&dev_ids); if (n_dev_ids == 0) { return nullptr; } else if (n_dev_ids < 0) { fprintf(stderr, "enumerating adf devices failed: %s\n", strerror(-n_dev_ids)); return nullptr; } pdata->intf_fd = -1; for (i = 0; i < n_dev_ids && pdata->intf_fd < 0; i++) { adf_device dev; int err = adf_device_open(dev_ids[i], O_RDWR, &dev); if (err < 0) { fprintf(stderr, "opening adf device %u failed: %s\n", dev_ids[i], strerror(-err)); continue; } err = adf_device_init(pdata, &dev); if (err < 0) { fprintf(stderr, "initializing adf device %u failed: %s\n", dev_ids[i], strerror(-err)); } adf_device_close(&dev); } free(dev_ids); if (pdata->intf_fd < 0) { return nullptr; } ret = adf_flip(backend); adf_blank(backend, true); adf_blank(backend, false); return ret; }