Commit 061bcfe61877c8e2e592479fdd0f60920ad7b9ac
- Diff rendering mode:
- inline
- side by side
include/ui/EGLKMSSurface.h
(1 / 0)
|   | |||
| 65 | 65 | static uint32_t hook_swapBuffers(NativeWindowType window); | |
| 66 | 66 | ||
| 67 | 67 | int setCrtc(); | |
| 68 | int setCPUDomain(); | ||
| 68 | 69 | uint32_t swapBuffers(); | |
| 69 | 70 | ||
| 70 | 71 | status_t addFb(int fd); |
libs/ui/EGLKMSSurface.cpp
(19 / 2)
|   | |||
| 179 | 179 | return ret; | |
| 180 | 180 | } | |
| 181 | 181 | ||
| 182 | int EGLKMSSurface::setCPUDomain() | ||
| 183 | { | ||
| 184 | struct drm_i915_gem_set_domain set_domain; | ||
| 185 | int ret; | ||
| 186 | |||
| 187 | memset(&set_domain, 0, sizeof(set_domain)); | ||
| 188 | set_domain.handle = mFb[1 - mIndex].handle; | ||
| 189 | set_domain.read_domains = I915_GEM_DOMAIN_CPU; | ||
| 190 | set_domain.write_domain = I915_GEM_DOMAIN_CPU; | ||
| 191 | |||
| 192 | ret = ioctl(egl_native_window_t::fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain); | ||
| 193 | if (ret) | ||
| 194 | LOGE("failed to set back buffer to CPU domain"); | ||
| 195 | return ret; | ||
| 196 | } | ||
| 197 | |||
| 182 | 198 | uint32_t EGLKMSSurface::swapBuffers() | |
| 183 | 199 | { | |
| 184 | 200 | int ret; | |
| … | … | ||
| 204 | 204 | setCrtc(); | |
| 205 | 205 | #else | |
| 206 | 206 | // do the actual flip | |
| 207 | setCrtc(); | ||
| 207 | 208 | mIndex = 1 - mIndex; | |
| 209 | |||
| 208 | 210 | egl_native_window_t::oem[0] = mFb[1 - mIndex].name; | |
| 209 | 211 | #if AGL_SUPPORT | |
| 210 | 212 | egl_native_window_t::offset = | |
| 211 | 213 | intptr_t(mFb[1 - mIndex].base) - egl_native_window_t::base; | |
| 214 | setCPUDomain(); | ||
| 212 | 215 | #endif | |
| 213 | |||
| 214 | setCrtc(); | ||
| 215 | 216 | #endif /* SINGLE_BUFFER_HACK */ | |
| 216 | 217 | ||
| 217 | 218 | mPageFlipCount++; |

