I’ve found that there are differences for each vendor when using the same OpenGL ES API. The code is gl-renderer, It’s the opensource, weston. (https://github.com/wayland-project/weston/blob/master/libweston/renderer-gl/gl-renderer.c#L884)
If I’m using the ARM’s GPU, there is no trail image on screen. When I’m using the IMG’s GPU, there is trail image on screen. So I request it to IMG (Because ARM’s library doesn’t have trail image issue)
This is answer from IMG,
But for EGL_BUFFER_DESTROYED, the spec. leave each GPU vendor decide if they want to destroy color buffer contents or change by the swapbuffer operation. From our previous debugging experience on ARM, it choose the first one.(destroy color buffer contents which might imply color buffer clear) IMG implement the second one.(changed by the swapbuffer operation which imply we just keep the content on color buffer so we will see the previous content)
I accepted the difference of operation with EGL_BUFFER_DESTROYED, because it’s the spec. But I’m still curious. Leaving it as a vendor implementation in the spec can cause this different behavior in the same code, and I’m not sure how to prevent this. Even the rendering code is open source, making it even more difficult to predict or solve the problem. Could someone please help me with this problem? Could anyone recommend something for me to read more documentation?