dri2/android: Bypass throttling
The android window system (SurfaceFlinger, et al) already does it's own throttling. Trying to do this also in mesa's egl is counterproductive. Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22197>
This commit is contained in:
@@ -1829,7 +1829,8 @@ dri2_swap_interval(_EGLDisplay *disp, _EGLSurface *surf, EGLint interval)
|
|||||||
* do our swapbuffers.
|
* do our swapbuffers.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
dri2_flush_drawable_for_swapbuffers(_EGLDisplay *disp, _EGLSurface *draw)
|
dri2_flush_drawable_for_swapbuffers_flags(_EGLDisplay *disp, _EGLSurface *draw,
|
||||||
|
enum __DRI2throttleReason throttle_reason)
|
||||||
{
|
{
|
||||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||||
__DRIdrawable *dri_drawable = dri2_dpy->vtbl->get_dri_drawable(draw);
|
__DRIdrawable *dri_drawable = dri2_dpy->vtbl->get_dri_drawable(draw);
|
||||||
@@ -1853,13 +1854,19 @@ dri2_flush_drawable_for_swapbuffers(_EGLDisplay *disp, _EGLSurface *draw)
|
|||||||
dri_drawable,
|
dri_drawable,
|
||||||
__DRI2_FLUSH_DRAWABLE |
|
__DRI2_FLUSH_DRAWABLE |
|
||||||
__DRI2_FLUSH_INVALIDATE_ANCILLARY,
|
__DRI2_FLUSH_INVALIDATE_ANCILLARY,
|
||||||
__DRI2_THROTTLE_SWAPBUFFER);
|
throttle_reason);
|
||||||
} else {
|
} else {
|
||||||
dri2_dpy->flush->flush(dri_drawable);
|
dri2_dpy->flush->flush(dri_drawable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dri2_flush_drawable_for_swapbuffers(_EGLDisplay *disp, _EGLSurface *draw)
|
||||||
|
{
|
||||||
|
dri2_flush_drawable_for_swapbuffers_flags(disp, draw, __DRI2_THROTTLE_SWAPBUFFER);
|
||||||
|
}
|
||||||
|
|
||||||
static EGLBoolean
|
static EGLBoolean
|
||||||
dri2_swap_buffers(_EGLDisplay *disp, _EGLSurface *surf)
|
dri2_swap_buffers(_EGLDisplay *disp, _EGLSurface *surf)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -605,6 +605,9 @@ dri2_initialize_device(_EGLDisplay *disp);
|
|||||||
static inline void
|
static inline void
|
||||||
dri2_teardown_device(struct dri2_egl_display *dri2_dpy) { /* noop */ }
|
dri2_teardown_device(struct dri2_egl_display *dri2_dpy) { /* noop */ }
|
||||||
|
|
||||||
|
void
|
||||||
|
dri2_flush_drawable_for_swapbuffers_flags(_EGLDisplay *disp, _EGLSurface *draw,
|
||||||
|
enum __DRI2throttleReason throttle_reason);
|
||||||
void
|
void
|
||||||
dri2_flush_drawable_for_swapbuffers(_EGLDisplay *disp, _EGLSurface *draw);
|
dri2_flush_drawable_for_swapbuffers(_EGLDisplay *disp, _EGLSurface *draw);
|
||||||
|
|
||||||
|
|||||||
@@ -997,7 +997,7 @@ droid_swap_buffers(_EGLDisplay *disp, _EGLSurface *draw)
|
|||||||
if (dri2_surf->back)
|
if (dri2_surf->back)
|
||||||
dri2_surf->back->age = 1;
|
dri2_surf->back->age = 1;
|
||||||
|
|
||||||
dri2_flush_drawable_for_swapbuffers(disp, draw);
|
dri2_flush_drawable_for_swapbuffers_flags(disp, draw, -1);
|
||||||
|
|
||||||
/* dri2_surf->buffer can be null even when no error has occured. For
|
/* dri2_surf->buffer can be null even when no error has occured. For
|
||||||
* example, if the user has called no GL rendering commands since the
|
* example, if the user has called no GL rendering commands since the
|
||||||
|
|||||||
Reference in New Issue
Block a user