Closed Bug 763190 Opened 10 years ago Closed 10 years ago

WebGL readPixels shouldn't call EnsureBackbufferClearedAsNeeded

Categories

(Core :: Canvas: WebGL, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla16

People

(Reporter: bjacob, Assigned: bjacob)

Details

(Whiteboard: webgl-conformance)

Attachments

(1 file)

See this discussion:

  https://www.khronos.org/webgl/public-mailing-list/archives/1206/msg00006.html

Section 2.2 in the spec has been updated to clarify that with preserveDrawingBuffer=false, the clearing only occurs if the canvas has been invalidated by a draw operation. In this respect, readPixels is not a draw operation hence it shouldn't request a clear.

Gregg's testcase,

  http://jsfiddle.net/greggman/hDcxp/1/

clears the canvas in green and does a readPixels in a setTimeout callback. It should not result in a clearing of the buffer. Currently in Firefox it does, because our readPixels implementation calls EnsureBackbufferClearedAsNeeded. This seems unneeded, and removing it fixes it. Notice that there is no security issue here because this only applies to the default framebuffer (non-default FBOs are still initialized if they had uninitialized renderbuffers) and on context creation the default framebuffer does get cleared already.
Attachment #631660 - Flags: review?(jgilbert)
Attachment #631660 - Flags: review?(jgilbert) → review+
http://hg.mozilla.org/integration/mozilla-inbound/rev/d4820f5ac825
Assignee: nobody → bjacob
Target Milestone: --- → mozilla16
https://hg.mozilla.org/mozilla-central/rev/d4820f5ac825
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.