static int adf_interface_init(struct adf_pdata *pdata) { struct adf_interface_data intf_data; int ret = 0; int err; err = adf_get_interface_data(pdata->intf_fd, &intf_data); if (err < 0) return err; err = adf_surface_init(pdata, &intf_data.current_mode, &pdata->surfaces[0]); if (err < 0) { fprintf(stderr, "allocating surface 0 failed: %s\n", strerror(-err)); ret = err; goto done; } err = adf_surface_init(pdata, &intf_data.current_mode, &pdata->surfaces[1]); if (err < 0) { fprintf(stderr, "allocating surface 1 failed: %s\n", strerror(-err)); memset(&pdata->surfaces[1], 0, sizeof(pdata->surfaces[1])); pdata->n_surfaces = 1; } else { pdata->n_surfaces = 2; } done: adf_free_interface_data(&intf_data); return ret; }
int MinuiBackendAdf::InterfaceInit() { adf_interface_data intf_data; int err = adf_get_interface_data(intf_fd, &intf_data); if (err < 0) return err; int ret = 0; err = SurfaceInit(&intf_data.current_mode, &surfaces[0]); if (err < 0) { fprintf(stderr, "allocating surface 0 failed: %s\n", strerror(-err)); ret = err; goto done; } err = SurfaceInit(&intf_data.current_mode, &surfaces[1]); if (err < 0) { fprintf(stderr, "allocating surface 1 failed: %s\n", strerror(-err)); surfaces[1] = {}; n_surfaces = 1; } else { n_surfaces = 2; } done: adf_free_interface_data(&intf_data); return ret; }
void getCurrentMode(uint32_t &w, uint32_t &h) { adf_interface_data data; ASSERT_NO_FATAL_FAILURE(getInterfaceData(data)); w = data.current_mode.hdisplay; h = data.current_mode.vdisplay; adf_free_interface_data(&data); }
TEST_F(AdfTest, interface_data) { adf_interface_data data; ASSERT_NO_FATAL_FAILURE(getInterfaceData(data)); EXPECT_LT(data.type, ADF_INTF_TYPE_MAX); EXPECT_LE(data.dpms_state, DRM_MODE_DPMS_OFF); EXPECT_EQ(1, data.hotplug_detect); EXPECT_GT(data.n_available_modes, 0); EXPECT_LT(data.custom_data_size, ADF_MAX_CUSTOM_DATA_SIZE); adf_free_interface_data(&data); }
static int adf_interface_init(adf_pdata *pdata) { adf_interface_data intf_data; int ret = 0; int err; unsigned char* framebuffer_data = nullptr; err = adf_get_interface_data(pdata->intf_fd, &intf_data); if (err < 0) { return err; } err = adf_surface_init(pdata, &intf_data.current_mode, &pdata->surfaces[0]); if (err < 0) { fprintf(stderr, "allocating surface 0 failed: %s\n", strerror(-err)); ret = err; goto done; } /* Allocate a single buffer for drawing. graphics.cpp will draw to * this buffer which will later be copied to the mmapped adf buffer. * Using a regular memory buffer improves performance by about 10x. */ framebuffer_data = (unsigned char*) calloc(pdata->surfaces[0].pitch * pdata->surfaces[0].base.height, 1); if (framebuffer_data == nullptr) { printf("failed to calloc surface data\n"); close(pdata->surfaces[0].fd); munmap(pdata->surfaces[0].adf_data, pdata->surfaces[0].pitch * pdata->surfaces[0].base.height); ret = -1; goto done; } pdata->surfaces[0].base.data = framebuffer_data; err = adf_surface_init(pdata, &intf_data.current_mode, &pdata->surfaces[1]); if (err < 0) { fprintf(stderr, "allocating surface 1 failed: %s\n", strerror(-err)); memset(&pdata->surfaces[1], 0, sizeof(pdata->surfaces[1])); pdata->n_surfaces = 1; } else { pdata->n_surfaces = 2; pdata->surfaces[1].base.data = framebuffer_data; } done: adf_free_interface_data(&intf_data); return ret; }
TEST_F(AdfTest, blank) { int err = adf_interface_blank(intf, (uint8_t)-1); EXPECT_EQ(-EINVAL, err) << "setting bogus DPMS mode should have failed"; err = adf_interface_blank(eng, DRM_MODE_DPMS_OFF); EXPECT_EQ(-EINVAL, err) << "blanking overlay engine should have failed"; ASSERT_NO_FATAL_FAILURE(blank(DRM_MODE_DPMS_OFF)); err = adf_interface_blank(intf, DRM_MODE_DPMS_OFF); EXPECT_EQ(-EBUSY, err) << "blanking interface twice should have failed"; ASSERT_NO_FATAL_FAILURE(blank(DRM_MODE_DPMS_ON)); err = adf_interface_blank(intf, DRM_MODE_DPMS_ON); EXPECT_EQ(-EBUSY, err) << "unblanking interface twice should have failed"; adf_interface_data data; ASSERT_NO_FATAL_FAILURE(getInterfaceData(data)); EXPECT_EQ(DRM_MODE_DPMS_ON, data.dpms_state); adf_free_interface_data(&data); }