lion0406 / angleproject

Automatically exported from code.google.com/p/angleproject
Other
0 stars 0 forks source link

glBlitFramebufferANGLE appears to fail if GL_SCISSOR_TEST is enabled #383

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
I'm assuming that's a bug but it returns INVALID_OPERATION if GL_SCISSOR_TEST 
is enabled.

Is that by design or is it a bug?

Original issue reported on code.google.com by g...@chromium.org on 15 Nov 2012 at 9:55

GoogleCodeExporter commented 9 years ago

Original comment by g...@chromium.org on 15 Nov 2012 at 9:55

GoogleCodeExporter commented 9 years ago
It depends on exactly what operation is being attempted.  If the scissor test 
is enabled, this does potentially reduce the effective area of the region being 
copied, as the area to be copied is the intersection of the requested rect and 
the scissor rect.  

The ANGLE_framebuffer_blit extension does not support partial multisample 
resolves or partial depth/stencil blits, so 
 - if the scissor test is enabled and the scissor rect only specifies a portion of the surface, and
    -  the source is multi-sampled, or
    -  the mask includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT
 this will result in INVALID_OPERATION, by design.  Otherwise it might be a bug, in which case a minimal test case would be appreciated.

Original comment by dan...@transgaming.com on 16 Nov 2012 at 1:35

GoogleCodeExporter commented 9 years ago
Is that specified in somewhere that with SCISSOR test it does work with 
multi-sample but does otherwise?

Seems like it would be better if just ignored SCISSOR test no?

Original comment by g...@chromium.org on 16 Nov 2012 at 1:41

GoogleCodeExporter commented 9 years ago
I'm having a hard time parsing the first question.  Feels like it's missing a 
"not" somewhere, but I'm not sure in which clause.

The scissor test is applied in *all* cases, whether multi sampled or not.  
However, BlitFramebufferANGLE only supports partial buffer copies for 
non-multisampled color-only copies.  This is all specified in 
http://code.google.com/p/angleproject/source/browse/trunk/extensions/ANGLE_frame
buffer_blit.txt 

The SCISSOR test is not ignored in any other GL implementations, so I don't 
think it should be in the ANGLE one either.  
In all the BlitFramebuffer specifications (EXT_framebuffer_blit, 
ARB_framebuffer_objects, GL 3.0-4.3, GLES 3.0) it says something to the effect 
of: 
    "The pixel copy bypasses the fragment pipeline.  The only fragment
    operations which affect the blit are the pixel ownership test and
    the scissor test."
(Recent specs also mention sRGB conversions, but that is not relevant here).

Original comment by dan...@transgaming.com on 16 Nov 2012 at 1:53

GoogleCodeExporter commented 9 years ago
ok, sorry for the mis-understanding

Original comment by g...@chromium.org on 19 Nov 2012 at 4:54