Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
angle
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
angle
Commits
f8f45271
Commit
f8f45271
authored
Jan 24, 2013
by
daniel@transgaming.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updates for ANGLE_multiple_render_targets
git-svn-id:
https://angleproject.googlecode.com/svn/trunk@1730
736b8ea6-26fd-11df-bfd4-992fa37f6226
parent
4ecbc42b
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
126 additions
and
14 deletions
+126
-14
ANGLE_multiple_render_targets.txt
extensions/ANGLE_multiple_render_targets.txt
+126
-14
No files found.
extensions/ANGLE_multiple_render_targets.txt
View file @
f8f45271
...
@@ -16,6 +16,7 @@ Contributors
...
@@ -16,6 +16,7 @@ Contributors
Nicolas Capens, TransGaming Inc.
Nicolas Capens, TransGaming Inc.
Daniel Koch, TransGaming Inc.
Daniel Koch, TransGaming Inc.
Alastair Patrick, Google Inc.
Alastair Patrick, Google Inc.
Kenneth Russell, Google Inc.
Members of the WebGL working group
Members of the WebGL working group
Contact
Contact
...
@@ -28,8 +29,8 @@ Status
...
@@ -28,8 +29,8 @@ Status
Version
Version
Last Modified Dat
a: November 13, 2012
Last Modified Dat
e: January 23, 2013
Revision: #
5
Revision: #
6
Number
Number
...
@@ -150,11 +151,20 @@ Changes to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)
...
@@ -150,11 +151,20 @@ Changes to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)
Changes to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
Changes to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
Operations and the Frame Buffer)
Operations and the Frame Buffer)
Insert Table 4.3 (and renumber subsequent tables): Arguments to
Modify the overview of Chapter 4 and replace the sentences
DrawBuffersANGLE when the context is bound to a framebuffer
of the fifth paragraph which read:
object, and the buffers they indicate. <i> in
COLOR_ATTACHMENT<i>_ANGLE may range from zero to the value of
"The name of the color buffer of an application-created framebuffer
MAX_COLOR_ATTACHMENTS_ANGLE minus one.
object is COLOR_ATTACHMENT0. The names of the depth and stencil buffers
are DEPTH_ATTACHMENT and STENCIL_ATTACHMENT."
With the following:
"A framebuffer object has an array of color buffer attachment points,
numbered zero through <n>, a depth buffer attachment point, and a
stencil buffer attachment point."
Insert Table 4.3 to Section 4.2.1 (and renumber subsequent tables):
Symbolic Constant Meaning
Symbolic Constant Meaning
----------------- ---------------------
----------------- ---------------------
...
@@ -164,6 +174,10 @@ Operations and the Frame Buffer)
...
@@ -164,6 +174,10 @@ Operations and the Frame Buffer)
attached at color attachment
attached at color attachment
point i
point i
Table 4.3: Arguments to DrawBuffersANGLE when the context is bound to a
framebuffer object, and the buffers they indicate. <i> in
COLOR_ATTACHMENT<i>_ANGLE may range from zero to the value of
MAX_COLOR_ATTACHMENTS_ANGLE minus one.
Replace Section 4.2.1, "Selecting a Buffer for Writing" with the following:
Replace Section 4.2.1, "Selecting a Buffer for Writing" with the following:
...
@@ -216,7 +230,7 @@ Operations and the Frame Buffer)
...
@@ -216,7 +230,7 @@ Operations and the Frame Buffer)
will generate the error INVALID_OPERATION.
will generate the error INVALID_OPERATION.
If a fragment shader writes to "gl_FragColor", DrawBuffersANGLE
If a fragment shader writes to "gl_FragColor", DrawBuffersANGLE
specifies
a set of draw buffers
into which the color written to
specifies
the draw buffer, if any,
into which the color written to
"gl_FragColor" is written. If a fragment shader writes to
"gl_FragColor" is written. If a fragment shader writes to
"gl_FragData", DrawBuffersANGLE specifies a set of draw buffers
"gl_FragData", DrawBuffersANGLE specifies a set of draw buffers
into which each of the multiple output colors defined by these
into which each of the multiple output colors defined by these
...
@@ -267,6 +281,58 @@ Operations and the Frame Buffer)
...
@@ -267,6 +281,58 @@ Operations and the Frame Buffer)
for the depth and stencil attachment points. The number of color attachment
for the depth and stencil attachment points. The number of color attachment
points is equal to the value of MAX_COLOR_ATTACHMENTS_ANGLE."
points is equal to the value of MAX_COLOR_ATTACHMENTS_ANGLE."
Replace the third item in the bulleted list in Section 4.4.1 (Binding
and Managing Framebuffer Objects) with the following:
" * The only color buffer bitplanes are the ones defined by the
framebuffer attachments points named COLOR_ATTACHMENT0_ANGLE through
COLOR_ATTACHMENT<n>_ANGLE."
Modify Section 4.4.3 (Renderbuffer Objects) in the
"Attaching Renderbuffer Images to a Framebuffer" subsection as follows:
Insert the following table:
Name of attachment
---------------------------------------
COLOR_ATTACHMENT<i>_ANGLE (see caption)
DEPTH_ATTACHMENT
STENCIL_ATTACHMENT
Table 4.x: Framebuffer attachment points. <i> in COLOR_ATTACHMENT<i>_ANGLE
may range from zero to the value of MAX_COLOR_ATTACHMENTS_ANGLE minus 1.
Modify the third sentence of the paragraph following the definition of
FramebufferRenderbuffer to be as follows:
"<attachment> should be set to one of the attachment points of the
framebuffer listed in Table 4.x."
Modify Section 4.4.3 (Renderbuffer Objects) in the "Attaching Texture
Images to a Framebuffer" subsection as follows:
Modify the last sentence of the paragraph following the definition of
FramebufferTexture2D to be as follows:
"<attachment> must be one of the attachment points of the framebuffer
listed in Table 4.x."
Modify Section 4.4.5 (Framebuffer Completeness) and replace the 3rd
item in the bulleted list in the "Framebuffer Attachment Completeness"
subsection with the following:
" * If <attachment> is COLOR_ATTACHMENT<i>_ANGLE, then <image> must
have a color-renderable internal format."
Changes to Chapter 6 of the OpenGL ES 2.0 Specification (State and
State Requests)
In section 6.1.3 (Enumerated Queries) modify the third sentence in
the definition of GetFramebufferAttachmentParameteriv to be as follows:
"<attachment> must be one of the attachment points of the framebuffer
listed in Table 4.x."
Changes to Chapter 3 of the OpenGL ES Shading Language 1.0.17 Specification (Basics)
Changes to Chapter 3 of the OpenGL ES Shading Language 1.0.17 Specification (Basics)
Add a new section:
Add a new section:
...
@@ -298,7 +364,28 @@ Dependencies on ANGLE_framebuffer_blit and APPLE_framebuffer_multisample:
...
@@ -298,7 +364,28 @@ Dependencies on ANGLE_framebuffer_blit and APPLE_framebuffer_multisample:
Errors
Errors
<TBD>
The INVALID_OPERATION error is generated if DrawBuffersANGLE is called
when the default framebuffer is bound and any of the following conditions
hold:
- <n> is greater than 1 and less than MAX_DRAW_BUFFERS_ANGLE,
- <bufs> contains a value other than BACK or NONE.
The INVALID_OPERATION error is generated if DrawBuffersANGLE is called
when bound to a draw framebuffer object and any of the following
conditions hold:
- the <i>th value in <bufs> is not COLOR_ATTACHMENT<i>_ANGLE or NONE.
The INVALID_VALUE error is generated if DrawBuffersANGLE is called
with a value of <n> which is greater than MAX_DRAW_BUFFERS_ANGLE.
The INVALID_ENUM error is generated by FramebufferRenderbuffer if
the <attachment> parameter is not one of the values listed in Table 4.x.
The INVALID_ENUM error is generated by FramebufferTexture2D if
the <attachment> parameter is not one of the values listed in Table 4.x.
The INVALID_ENUM error is generated by GetFramebufferAttachmentParameteriv
if the <attachment> parameter is not one of the values listed in Table 4.x.
New State
New State
...
@@ -323,10 +410,10 @@ Issues
...
@@ -323,10 +410,10 @@ Issues
1) Differences from NV_draw_buffers + NV_fbo_color_attachments?
1) Differences from NV_draw_buffers + NV_fbo_color_attachments?
-
interactions with blit_framebuffer
-
adds interactions with blit_framebuffer and separate draw/read binding points
- MAX limits are global instead of per-fbo (
TBD -
Issue 2)
- MAX limits are global instead of per-fbo (
see
Issue 2)
- no broadcast from gl_FragColor (
TBD -
Issue 3)
- no broadcast from gl_FragColor (
see
Issue 3)
- can be used to with default framebuffer to set NONE/BACK (
TBD -
Issue 4)
- can be used to with default framebuffer to set NONE/BACK (
see
Issue 4)
2) Should the MAX_DRAW_BUFFERS_ANGLE and MAX_COLOR_ATTACHMENTS_ANGLE limits
2) Should the MAX_DRAW_BUFFERS_ANGLE and MAX_COLOR_ATTACHMENTS_ANGLE limits
be per-framebuffer values or implementation dependent constants?
be per-framebuffer values or implementation dependent constants?
...
@@ -334,7 +421,7 @@ Issues
...
@@ -334,7 +421,7 @@ Issues
DISCUSSION: In ARB_draw_buffers this was per-context (see Issue 2).
DISCUSSION: In ARB_draw_buffers this was per-context (see Issue 2).
EXT_framebuffer_object (and subsequently ARB_framebuffer_object, and GL 3.0
EXT_framebuffer_object (and subsequently ARB_framebuffer_object, and GL 3.0
through GL 4.2) made these queries framebuffer-dependent.
through GL 4.2) made these queries framebuffer-dependent.
However
GL in 4.3 and GLES 3.0, these limits were mov
ed from
However
in GL 4.3 and GLES 3.0, these limits were chang
ed from
framebuffer-dependent state to implementation-dependent state after
framebuffer-dependent state to implementation-dependent state after
much discussion (Bug 7990).
much discussion (Bug 7990).
...
@@ -348,6 +435,12 @@ Issues
...
@@ -348,6 +435,12 @@ Issues
when there are multisampled attachments, but a higher limit when only
when there are multisampled attachments, but a higher limit when only
single-sampled attachments are present.
single-sampled attachments are present.
RESOLVED. Make this global context state as this is most consistent
with GLES 3.0 and updated GL drivers. Unfortunately this means that a
D3D9-based implementation of this extension is not possible since D3D9
does not support multisampled MRTs. Perhaps such an implementation could
report FBO incomplete in this situation, but that seems less than desirable.
3) Should we support broadcast from gl_FragColor to all gl_FragData[x]
3) Should we support broadcast from gl_FragColor to all gl_FragData[x]
or should it be synonymous with gl_FragData[0]?
or should it be synonymous with gl_FragData[0]?
...
@@ -361,6 +454,9 @@ Issues
...
@@ -361,6 +454,9 @@ Issues
writes to gl_FragColor with replicated writes to all possible gl_FragData
writes to gl_FragColor with replicated writes to all possible gl_FragData
locations when this extension is enabled.
locations when this extension is enabled.
RESOLVED: Broadcast from gl_FragColor to all enabledMRT buffers is not
supported. A shader author must write gl_FragData[x] if they want to use MRT
4) Should we allow DrawBuffersANGLE to be called when the default FBO is bound?
4) Should we allow DrawBuffersANGLE to be called when the default FBO is bound?
DISCUSSION: NV_draw_buffers specifies that DrawBuffersNV errors with
DISCUSSION: NV_draw_buffers specifies that DrawBuffersNV errors with
...
@@ -370,9 +466,25 @@ Issues
...
@@ -370,9 +466,25 @@ Issues
An implementation that does not natively support disabling the drawbuffer
An implementation that does not natively support disabling the drawbuffer
on the default FBO could emulate this by disabling color writes.
on the default FBO could emulate this by disabling color writes.
RESOLVED: Allow DrawBuffersANGLE to be called for the default FBO. This
is more forward looking and is compatible with ES 3.0.
5) What are the requirements on the color attachment sizes and formats?
RESOLVED: ES 2.0 requires that all color buffers attached to application-
created framebuffer objects must have the same number of bitplanes
(Chapter 4 overview p91). ES 2.0 also requires that all attached images
have the same width and height (Section 4.4.5 Framebuffer Completeness).
This extension does not lift those requirements, and failing to meet
them will result in an incomplete FBO.
Revision History
Revision History
01/23/2013 dgkoch add resolutions to issues 2-4.
add issue 5.
Add Table 4.x and update various explicit
references to COLOR_ATTACHMENT0.
Add errors.
11/13/2012 dgkoch add revision history
11/13/2012 dgkoch add revision history
add text from updated ES 3.0 spec
add text from updated ES 3.0 spec
add issues for discussion
add issues for discussion
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment