PDA

View Full Version : draft proposal for OES_fbo_color_attachments



pyalot
01-29-2012, 09:25 AM
I'm proposing to add this extension to enable multi render targets which already have partial support on mobiles and are supported by many Desktop machines.

Analysis of data found on http://glbenchmarks.com has shown that at least 3 extensions exist in the wild which would enable multiple framebuffer color attachments:


GL_ARB_draw_buffers (supported by 51 devices): Acer Picasso, Motorola MB860 ATRIX 4G, Dell Streak 10 Pro, Samsung SHW-M380S Galaxy Tab 10.1 3G, LG P999, Lenovo IdeaPad Tablet K1, Sony NW-Z1000, Acer Iconia Tab A200, Dell Streak 7, Toshiba AC100 Dynabook AZ, Samsung GT-P7501 Galaxy Tab 10.1N, LG P990 Optimus 2X, Motorola MB855 Photon, Sony Tablet S, Acer Iconia Tab A500, Lenovo ThinkPad Tablet, LG V901, Acer Iconia Tab A100, Samsung GT-P7500, Motorola Electrify, Motorola Xoom, Samsung GT-I9103, Sony Tablet P, LG V909, K-Touch W700, Samsung SGH-927R Galaxy S Glide, Samsung GT-P7310, Toshiba AT100, Samsung SCH-I905, Motorola MZ505, Motorola Droid X2, Motorola XT882, Notion Ink Adam, Toshiba Thrive 7 (AT1S0), LG LU6500, LG SU660 Star Dop, Motorola MT870, Acer Iconia Tab A101, ViewSonic G Tablet, Samsung GT-P7300, Asus Eee Pad Transformer TF101, Hisense M1101AS, Malata Zpad, Motorola MZ604, Motorola MZ601, Acer Iconia Tab A501, Asus Eee Pad Slider SL101, Medion LifeTab P9514, Samsung GT-P7510 Galaxy Tab, Acer G100W, LG Optimus Pad
[/*:m:xaapcu22]
GL_NV_draw_buffers (supported by 6 devices): Lenovo LePad K2, Acer Iconia Tab A200, Asus Eee Pad Transformer Prime TF201, Acer Iconia Tab A510, Acer A700 (picasso 2)
[/*:m:xaapcu22]
GL_NV_fbo_color_attachments (supported by 56 devices): Acer Picasso, Motorola MB860 ATRIX 4G, Lenovo LePad K2, Dell Streak 10 Pro, Samsung SHW-M380S Galaxy Tab 10.1 3G, LG P999, Lenovo IdeaPad Tablet K1, Sony NW-Z1000, Acer Iconia Tab A200, Dell Streak 7, Toshiba AC100 Dynabook AZ, Samsung GT-P7501 Galaxy Tab 10.1N, LG P990 Optimus 2X, Motorola MB855 Photon, Sony Tablet S, Acer Iconia Tab A500, Lenovo ThinkPad Tablet, LG V901, Acer Iconia Tab A100, Samsung GT-P7500, Motorola Electrify, Motorola Xoom, Samsung GT-I9103, Sony Tablet P, Asus Eee Pad Transformer Prime TF201, Acer Iconia Tab A510, LG V909, K-Touch W700, Samsung SGH-927R Galaxy S Glide, Samsung GT-P7310, Acer A700 (picasso 2), Toshiba AT100, Samsung SCH-I905, Motorola MZ505, Motorola Droid X2, Motorola XT882, Notion Ink Adam, Toshiba Thrive 7 (AT1S0), LG LU6500, LG SU660 Star Dop, Motorola MT870, Acer Iconia Tab A101, ViewSonic G Tablet, Samsung GT-P7300, Asus Eee Pad Transformer TF101, Hisense M1101AS, Malata Zpad, Motorola MZ604, Motorola MZ601, Acer Iconia Tab A501, Asus Eee Pad Slider SL101, Medion LifeTab P9514, Samsung GT-P7510 Galaxy Tab, Acer G100W, LG Optimus Pad[/*:m:xaapcu22]


Name

OES_fbo_color_attachments

Name Strings

GL_OES_fbo_color_attachments

Contact

Contributors

Status

Draft.

Version

Last Modified Date: January 29, 2012

Number

OpenGL ES Extension #xx

Dependencies

Written against the OpenGL ES 2.0 Specification and the OpenGL ES
Shader Language 1.0.14 Specification.

Overview

This extension extends OpenGL ES 2.0 to allow multiple output
colors, and provides a mechanism for directing those outputs to
multiple color buffers.

This extension mirrors common functionality provided by:
- GL ARB_framebuffer_object
- GL ARB_draw_buffers
- ES NV_draw_buffers
- ES NV_fbo_color_attachment

IP Status

No known IP issues.

New Procedures and Functions

None.

New Tokens

Accepted by the <value> parameter of GetIntegerv:

MAX_COLOR_ATTACHMENTS 0x8CDF

Accepted by the <attachment> parameter of
FramebufferTexture{1D|2D|3D}, FramebufferRenderbuffer, and
GetFramebufferAttachmentParameteriv

COLOR_ATTACHMENT0 0x8CE0
COLOR_ATTACHMENT1 0x8CE1
COLOR_ATTACHMENT2 0x8CE2
COLOR_ATTACHMENT3 0x8CE3
COLOR_ATTACHMENT4 0x8CE4
COLOR_ATTACHMENT5 0x8CE5
COLOR_ATTACHMENT6 0x8CE6
COLOR_ATTACHMENT7 0x8CE7
COLOR_ATTACHMENT8 0x8CE8
COLOR_ATTACHMENT9 0x8CE9
COLOR_ATTACHMENT10 0x8CEA
COLOR_ATTACHMENT11 0x8CEB
COLOR_ATTACHMENT12 0x8CEC
COLOR_ATTACHMENT13 0x8CED
COLOR_ATTACHMENT14 0x8CEE
COLOR_ATTACHMENT15 0x8CEF

Changes to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)

The OpenGL ES Shading Language specification describes the values
that may be output by a fragment shader. These are gl_FragColor and
gl_FragData[[n]]. The final fragment color values or the final
fragment data values written by a fragment shader are clamped to the
range [0, 1] and then converted to fixed-point as described in
section 2.1.2 for framebuffer color components.

Writing to gl_FragColor specifies the fragment color (color number
zero) that will be used by subsequent stages of the pipeline.
Writing to gl_FragData[n] specifies the value of fragment color
number n. Any colors, or color components, associated with a
fragment that are not written by the fragment shader are undefined.
A fragment shader may not statically assign values to both
gl_FragColor and gl_FragData. In this case, a compile or link error
will result. A shader statically assigns a value to a variable if,
after preprocessing, it contains a statement that would write to the
variable, whether or not run-time flow of control will cause that
statement to be executed.

Changes to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment Operations and the Framebuffer)

Replace the second paragraph of Section 4.4.1 (Binding and Managing
Framebuffer Objects) with the following:

The namespace for framebuffer objects is the unsigned integers, with
zero reserved by OpenGL ES to refer to the default framebuffer. A
framebuffer object is created by binding an unused name to the
target FRAMEBUFFER. The binding is effected by calling

void BindFramebuffer(enum target, uint framebuffer);

with target set to FRAMEBUFFER and framebuffer set to the unused
name. The resulting framebuffer object is a new state vector. There
is a number of color attachment points, plus one each for the depth
and stencil attachment points. The number of color attachment points
is equal to the state of MAX_COLOR_ATTACHMENTS.

New Implementation Dependent State

Add to Table 6.18 (Implementation Dependent Values)

Get value Type Get Cmnd Minimum Value Description Sec.
------------------------ ---- ----------- ------------- ----------- -----
MAX_COLOR_ATTACHMENTS Z+ GetIntegerv 1 Number of framebuffer 4.4.1
color attachment points

Issues

None

Revision History

Rev. Date Author Changes
---- -------- --------- ------------------------------------
1 01/29/12 boesch First revision based on
ARB_draw_buffers and ARB_framebuffer_object