Mesa (main): loader/dri3: replace is_pixmap with drawable type
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Dec 7 05:14:56 UTC 2021
Module: Mesa
Branch: main
Commit: c7d5e91b6be93dc0012189b376f52e5d15c6210e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c7d5e91b6be93dc0012189b376f52e5d15c6210e
Author: Qiang Yu <yuq825 at gmail.com>
Date: Wed Nov 10 10:00:14 2021 +0800
loader/dri3: replace is_pixmap with drawable type
Reviewed-by: Adam Jackson <ajax at redhat.com>
Signed-off-by: Qiang Yu <yuq825 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13750>
---
src/egl/drivers/dri2/platform_x11_dri3.c | 2 +-
src/loader/loader_dri3_helper.c | 27 +++++++++++++++------------
src/loader/loader_dri3_helper.h | 1 -
3 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/src/egl/drivers/dri2/platform_x11_dri3.c b/src/egl/drivers/dri2/platform_x11_dri3.c
index 87d384d6371..3d7c2ae4401 100644
--- a/src/egl/drivers/dri2/platform_x11_dri3.c
+++ b/src/egl/drivers/dri2/platform_x11_dri3.c
@@ -427,7 +427,7 @@ dri3_flush_front_buffer(__DRIdrawable *driDrawable, void *loaderPrivate)
* support front-buffer rendering or not:
* http://lists.freedesktop.org/archives/mesa-dev/2013-June/040129.html
*/
- if (!draw->is_pixmap)
+ if (draw->type == LOADER_DRI3_DRAWABLE_WINDOW)
_eglLog(_EGL_WARNING, "FIXME: egl/x11 doesn't support front buffer rendering.");
}
diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c
index b7e04495cb7..a105fb7bc56 100644
--- a/src/loader/loader_dri3_helper.c
+++ b/src/loader/loader_dri3_helper.c
@@ -835,7 +835,7 @@ loader_dri3_copy_sub_buffer(struct loader_dri3_drawable *draw,
unsigned flags = __DRI2_FLUSH_DRAWABLE;
/* Check we have the right attachments */
- if (!draw->have_back || draw->is_pixmap)
+ if (!draw->have_back || draw->type != LOADER_DRI3_DRAWABLE_WINDOW)
return;
if (flush)
@@ -1041,7 +1041,7 @@ loader_dri3_swap_buffers_msc(struct loader_dri3_drawable *draw,
dri3_flush_present_events(draw);
- if (back && !draw->is_pixmap) {
+ if (back && draw->type == LOADER_DRI3_DRAWABLE_WINDOW) {
dri3_fence_reset(draw->conn, back);
/* Compute when we want the frame shown by taking the last known
@@ -1674,11 +1674,13 @@ dri3_detect_drawable_is_window(struct loader_dri3_drawable *draw)
return false;
}
free(error);
- draw->is_pixmap = true;
+
+ /* pixmap can't get here, see driFetchDrawable(). */
+ draw->type = LOADER_DRI3_DRAWABLE_PBUFFER;
return true;
}
- draw->is_pixmap = false;
+ draw->type = LOADER_DRI3_DRAWABLE_WINDOW;
return true;
}
@@ -1687,10 +1689,8 @@ dri3_setup_present_event(struct loader_dri3_drawable *draw)
{
/* No need to setup for pixmap drawable. */
if (draw->type == LOADER_DRI3_DRAWABLE_PIXMAP ||
- draw->type == LOADER_DRI3_DRAWABLE_PBUFFER) {
- draw->is_pixmap = true;
+ draw->type == LOADER_DRI3_DRAWABLE_PBUFFER)
return true;
- }
draw->eid = xcb_generate_id(draw->conn);
@@ -1705,7 +1705,7 @@ dri3_setup_present_event(struct loader_dri3_drawable *draw)
if (!dri3_detect_drawable_is_window(draw))
return false;
- if (draw->is_pixmap)
+ if (draw->type != LOADER_DRI3_DRAWABLE_WINDOW)
return true;
}
@@ -1757,7 +1757,7 @@ dri3_update_drawable(struct loader_dri3_drawable *draw)
free(geom_reply);
- if (draw->is_pixmap)
+ if (draw->type != LOADER_DRI3_DRAWABLE_WINDOW)
draw->window = root_win;
else
draw->window = draw->drawable;
@@ -2178,7 +2178,8 @@ loader_dri3_get_buffers(__DRIdrawable *driDrawable,
/* pixmaps always have front buffers.
* Exchange swaps also mandate fake front buffers.
*/
- if (draw->is_pixmap || draw->swap_method == __DRI_ATTRIB_SWAP_EXCHANGE)
+ if (draw->type != LOADER_DRI3_DRAWABLE_WINDOW ||
+ draw->swap_method == __DRI_ATTRIB_SWAP_EXCHANGE)
buffer_mask |= __DRI_IMAGE_BUFFER_FRONT;
if (buffer_mask & __DRI_IMAGE_BUFFER_FRONT) {
@@ -2190,7 +2191,7 @@ loader_dri3_get_buffers(__DRIdrawable *driDrawable,
* content will get synced with the fake front
* buffer.
*/
- if (draw->is_pixmap && !draw->is_different_gpu)
+ if (draw->type != LOADER_DRI3_DRAWABLE_WINDOW && !draw->is_different_gpu)
front = dri3_get_pixmap_buffer(driDrawable,
format,
loader_dri3_buffer_front,
@@ -2224,7 +2225,9 @@ loader_dri3_get_buffers(__DRIdrawable *driDrawable,
if (front) {
buffers->image_mask |= __DRI_IMAGE_BUFFER_FRONT;
buffers->front = front->image;
- draw->have_fake_front = draw->is_different_gpu || !draw->is_pixmap;
+ draw->have_fake_front =
+ draw->is_different_gpu ||
+ draw->type == LOADER_DRI3_DRAWABLE_WINDOW;
}
if (back) {
diff --git a/src/loader/loader_dri3_helper.h b/src/loader/loader_dri3_helper.h
index c66ea9e28d4..792f7270098 100644
--- a/src/loader/loader_dri3_helper.h
+++ b/src/loader/loader_dri3_helper.h
@@ -135,7 +135,6 @@ struct loader_dri3_drawable {
int depth;
uint8_t have_back;
uint8_t have_fake_front;
- uint8_t is_pixmap;
enum loader_dri3_drawable_type type;
/* Information about the GPU owning the buffer */
More information about the mesa-commit
mailing list