blob: 739c64b855bfee452514461a03ed9ac6d03d084b [file]
Name
EXT_framebuffer_blit_layers
Name Strings
GL_EXT_framebuffer_blit_layers
Contacts
Simon Zeni, Status Holdings Ltd. <simon@zeni.ca>
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