Closed Bug 1288598 Opened 8 years ago Closed 8 years ago

[WebGL2] pass gl.getFramebufferAttachmentParameter() call for default framebuffer in gl-object-get-calls.html

Categories

(Core :: Graphics: CanvasWebGL, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla50
Tracking Status
firefox50 --- fixed

People

(Reporter: jerry, Assigned: jerry)

References

Details

Attachments

(1 file, 1 obsolete file)

There are some failed with default framebuffer in gl-object-get-calls.html

// test default framebuffer
gl.bindFramebuffer(gl.FRAMEBUFFER, null);

gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE)
gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE)
gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING)

This bug try to fix some error handling in getFramebufferAttachmentParameter().
Comment on attachment 8773630 [details] [diff] [review]
handle gl.getFramebufferAttachmentParameter() call for default framebuffer. v1

Review of attachment 8773630 [details] [diff] [review]:
-----------------------------------------------------------------

If these change are matched to the spec, maybe we also need to check the depth/stencil setting for FB attachment case.

e.g.
https://hg.mozilla.org/mozilla-central/annotate/4c05938a64a7fde3ac2d7f4493aee1c5f2ad8a0a/dom/canvas/WebGLFramebuffer.cpp#l463
https://hg.mozilla.org/mozilla-central/annotate/4c05938a64a7fde3ac2d7f4493aee1c5f2ad8a0a/dom/canvas/WebGLFramebuffer.cpp#l554

::: dom/canvas/WebGLContextGL.cpp
@@ +774,5 @@
>          return JS::NullValue();
>      }
>  
>      switch (pname) {
>      case LOCAL_GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:

This is for the case:

  //use default framebuffer without stencil.
  shouldBe('gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE)', 'gl.NONE');

----
Currently, we return LOCAL_GL_FRAMEBUFFER_DEFAULT for all case.
I check whether if we have depth or stencil. Return GL_NONE for the mismatch case.

gles3 spec:
https://www.khronos.org/opengles/sdk/docs/man3/html/glGetFramebufferAttachmentParameteriv.xhtml

@@ +808,5 @@
>          if (attachment == LOCAL_GL_BACK)
>              return JS::NumberValue(8);
>          return JS::NumberValue(0);
>  
>      case LOCAL_GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:

These three are for test:
wtu.shouldGenerateGLError(gl, gl.INVALID_OPERATION, 'gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE)');


------
For ATTACHMENT_XXX_SIZE, if the default framebuffer doesn't have the corresponding buffer, return InvalidOperation() for that case.

@@ +840,3 @@
>          return JS::NumberValue(0);
>  
>      case LOCAL_GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:

This is for test:
wtu.shouldGenerateGLError(gl, gl.INVALID_OPERATION, 'gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE)');


-----
Return InvalidOperation() if the default framebuffer doesn't have the corresponding buffer.

@@ +855,2 @@
>  
>      case LOCAL_GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:

Similar to previous one.
Attachment #8773630 - Flags: review?(jgilbert) → review+
Attachment #8773630 - Attachment is obsolete: true
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/b005858abf58
Handle gl.getFramebufferAttachmentParameter() call for default framebuffer. r=jgilbert
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/b005858abf58
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla50
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: