The bug is not specific to XMir surfaces, just that's the only place where you are doing small enough updates to notice the cache dirt. The bug is caused by the use of incorrect cache attributes when rendering with GL.
The bug is exactly that the rendering to the cursor is landing in the cache - but the display engine reads directly from memory and does not snoop the caches. Hence, the when we output to the display, we see the stale pixels and does not see the new data until it gets random evicted from the cache. This cache flush happens as a natural consequence of larger renders, such as the full screen redraws used elsewhere, which would have previously masked the bug.
The bug is not specific to XMir surfaces, just that's the only place where you are doing small enough updates to notice the cache dirt. The bug is caused by the use of incorrect cache attributes when rendering with GL.
The bug is exactly that the rendering to the cursor is landing in the cache - but the display engine reads directly from memory and does not snoop the caches. Hence, the when we output to the display, we see the stale pixels and does not see the new data until it gets random evicted from the cache. This cache flush happens as a natural consequence of larger renders, such as the full screen redraws used elsewhere, which would have previously masked the bug.