• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    QCOM_writeonly_rendering
4
5Name Strings
6
7    GL_QCOM_writeonly_rendering
8
9Contributors
10
11    Benj Lipchak (Original Author)
12    Maurice Ribble
13
14Contact
15
16    Maurice Ribble (mribble 'at' qualcomm.com)
17
18Notice
19
20    Copyright Qualcomm 2009.
21
22IP Status
23
24    Qualcomm Proprietary.
25
26Status
27
28    Complete.
29
30Version
31
32    Last Modified Date: July 7, 2009
33    Revision: #2
34
35Number
36
37    OpenGL ES Extension #61
38
39Dependencies
40
41    OpenGL ES 1.0 is required.
42
43    This extension is written against the OpenGL ES 2.0 specification.
44
45Overview
46
47This extension defines a specialized "write-only" rendering mode that
48may offer a performance boost for simple 2D rendering.
49
50Some applications render large frame buffers with simple geometry, very
51little overdraw, and no need for the following per-fragment stages:
52depth/stencil testing, Multisampling, blending, and Logic Operations.
53Applications rendering a windowed desktop or other 2D GUI might fit
54into this profile.
55
56Applications that match this profile can enable ``write-only'' rendering
57mode.  Performance may be improved in this mode through single-pass
58rendering directly to system memory as compared with multipass tile-based
59rendering into on-chip memory.  However, since the write-path to system memory
60is generally lower bandwidth, any gains are most likely for 2D applications
61rendering to large frame buffers with little overdraw.
62
63On some HW, the GPU is not able to simultaneously read and write to system
64memory framebuffers, so enabling this mode also implicitly disables any per-
65fragment operations that may read from the frame buffer.  In addition, this
66mode implicitly disables any reads and writes from the depth buffer.
67
68To enable write-only rendering, an OpenGL application will call
69glEnable(GL_WRITEONLY_RENDERING_QCOM).  When write-only rendering is enabled,
70the following per-fragment stages are disabled regardless of the associated
71GL enables:  multisample, depth_test, stencil_test, blending, and color_logic_Op.
72In addition, write-only rendering will implicitly disable all depth writes
73regardless of the value set via glDepthMask().    The alpha_test and scissor_test
74stages function as normal.
75
76To disable fast-rendering, call glDisable(GL_ WRITEONLY_RENDERING_QCOM).  Any
77stages previously disabled by write-only rendering will return to their current
78GL state.
79
80IP Status
81
82    There is no intellectual property associated with this extension.
83
84Issues
85
86(1)  How can alpha-blending be implemented with write-only rendering?
87
88RESOLVED:  For ES2.0 applications that want to use write-only rendering combined
89with alpha-blending, this must be done in the GLSL fragment shader, by binding the
90RT as a texture.  Application will handle all coherency issues using glFinish().
91
92(2)  Can write-only logicOps be supported?
93
94RESOLVED:  It is possible we could allow some LogicOps (those that don't need to
95read from the destination).  For simplicity, the extension doesn't allow any LogicOps
96with write-only rendering.
97
98(3)  Can Multisample be supported?
99
100RESOLVED:  Write-only rendering with multisampling enabled may not work on
101all HW.  For now, MSAA is not allowed with WRITEONLY_RENDERING.
102
103(4)  Can the depth or stencil buffer be cleared while write-only rendering is
104enabled?
105
106RESOLVED:  No, while write-only rendering is enabled, all reads and writes to the
107depth/stencil buffer implicitly disabled.  Clears of the depth buffer are ignored.
108For example, calling glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |
109GL_STENCIL_BUFFER_BIT) would only clear the color buffer.
110
111
112New Procedures and Functions
113
114
115New Tokens
116
117    Accepted by the <cap> parameter of Enable, Disable, and by the
118
119        WRITEONLY_RENDERING_QCOM                      0x8823
120
121
122    None.
123
124
125Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
126Operations and the Frame Buffer)
127
128    TBD
129
130Additions to Chapter 5 of the OpenGL 1.4 Specification (Special
131Errors
132
133    None.
134
135New State
136
137
138Get Value                                 Type            Command      Value
139---------                                 ----            -------     -------
140WRITEONLY_RENDERING_QCOM                  bool          IsEnabled
141
142
143Revision History
144#03    09/30/2009    Maurice Ribble     Fixed some AMD stuff I missed.
145#02    07/07/2009    Maurice Ribble     Update due to the AMD->Qualcomm move.
146#01    ??            Benj Lipchak       Initial version.
147