Name EXT_framebuffer_blit_layers Name Strings GL_EXT_framebuffer_blit_layers Contacts Simon Zeni, Status Holdings Ltd. Contributors Simon Zeni Status Draft Version Version 0.1, 2022/09/16 Number OpenGL Extension #558 OpenGL ES Extension #341 Dependencies OpenGL 3.0, OpenGL ES 3.0, or GL_EXT_framebuffer_blit required This extension is written against the OpenGL 4.6 Core and OpenGL ES 3.2 specifications. Overview This extensions defines the behaviour for copying data from one layered framebuffer to another layered framebuffer. New Procedures and Functions void BlitFramebufferLayersEXT(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, bitfield mask, enum filter); void BlitFramebufferLayerEXT(int srcX0, int srcY0, int srcX1, int srcY1, int srcLayer, int dstX0, int dstY0, int dstX1, int dstY1, int dstLayer, bitfield mask, enum filter); New Tokens None Additions to Chapter 16 of the OpenGL ES 3.2 specification (Reading and Copying Pixels) and Chaper 18 of the OpenGL 4.6 Core specification (Reading and Copying Pixels) Append the following to the section 16.2.1 (Blitting Pixel Rectangles) of the OpenGL ES 3.2 specification, and to the section 18.3.1 (Blitting Pixel Rectangles) of the OpenGL 4.6 core specification. The command void BlitFramebufferLayersEXT(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, bitfield mask, enum filter); extends the behaviour of the command BlitFramebuffer to all the layers of the textures bound to the read framebuffer and the draw framebuffer. Calling BlitFramebufferLayersEXT will result in an INVALID_OPERATION if the read and the draw framebuffers don't have the same number of layers. The command void BlitFramebufferLayerEXT(int srcX0, int srcY0, int srcX1, int srcY1, int srcLayer, int dstX0, int dstY0, int dstX1, int dstY1, int dstLayer, bitfield mask, enum filter); extends the behaviour of the command BlitFramebuffer to a specified layer of the texture bound to the read framebuffer, and a specified layer of the draw framebuffer. Calling BlitFramebufferLayerEXT will result in an INVALID_VALUE if srcLayer or dstLayer is negative, larger than the value of MAX_ARRAY_TEXTURE_LAYERS minus one, or larger than the number of layers in the attached texture. Issues 1) How does the extension deal with GL_OVR_multiview generating the error INVALID_FRAMEBUFFER_OPERATION if the read framebuffer has more than one layer when using the BlitFramebuffer command. GL_OVR_multiview defines a two dimensional array texture with multiple layers as multiview. If the extension GL_OVR_multiview is enabled, and a multiview texture is bound to the read framebuffer, the error INVALID_FRAMEBUFFER_OPERATION is generated as expected. For any other kind of textures, the commands BlitFramebufferLayerEXT and BlitFramebufferLayersEXT proceed as expected. Revision History Version 0.2, 2022-09-30 (Simon Zeni) - Conflict with GL_OVR_multiview Version 0.1, 2022-09-16 (Simon Zeni) - Initial draft