loader/dri3: replace is_pixmap with drawable type
Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Qiang Yu <yuq825@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13750>
This commit is contained in:
parent
d19013a199
commit
c7d5e91b6b
|
@ -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.");
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue