diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2019-01-28 18:04:41 +0100 |
---|---|---|
committer | Michel Dänzer <michel.daenzer@amd.com> | 2019-01-28 18:04:41 +0100 |
commit | 6d1dfe2523e900517bd1e8743c87d6990a82c800 (patch) | |
tree | 98ca49eba0695e422de28f1bb4a9877522973550 | |
parent | 77d7abf46446522e686c6b6f1e4857458589ef37 (diff) |
dri2: Flush in dri2_create_buffer2 after calling glamor_set_pixmap_bo
To make sure the client can't use the shared pixmap storage for direct
rendering first, which could produce garbage.
Bugzilla: https://bugs.freedesktop.org/109235
(Ported from amdgpu commit ebd32b1c07208f8dbe853e089f5e4b7c6a7a658a)
-rw-r--r-- | src/radeon_dri2.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c index 922ed4fb..b5d6835c 100644 --- a/src/radeon_dri2.c +++ b/src/radeon_dri2.c @@ -252,6 +252,12 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen, } else if (is_glamor_pixmap) { pixmap = radeon_glamor_set_pixmap_bo(drawable, pixmap); pixmap->refcnt++; + + /* The copy operation from radeon_glamor_set_pixmap_bo needs to + * be flushed to the kernel driver before the client starts + * using the pixmap storage for direct rendering. + */ + radeon_cs_flush_indirect(pScrn); } if (!radeon_get_flink_name(pRADEONEnt, pixmap, &buffers->name)) |