| Name | |
| QCOM_writeonly_rendering | |
| Name Strings | |
| GL_QCOM_writeonly_rendering | |
| Contributors | |
| Benj Lipchak (Original Author) | |
| Maurice Ribble | |
| Contact | |
| Maurice Ribble (mribble 'at' qualcomm.com) | |
| Notice | |
| Copyright Qualcomm 2009. | |
| IP Status | |
| Qualcomm Proprietary. | |
| Status | |
| Complete. | |
| Version | |
| Last Modified Date: July 7, 2009 | |
| Revision: #2 | |
| Number | |
| OpenGL ES Extension #61 | |
| Dependencies | |
| OpenGL ES 1.0 is required. | |
| This extension is written against the OpenGL ES 2.0 specification. | |
| Overview | |
| This extension defines a specialized "write-only" rendering mode that | |
| may offer a performance boost for simple 2D rendering. | |
| Some applications render large frame buffers with simple geometry, very | |
| little overdraw, and no need for the following per-fragment stages: | |
| depth/stencil testing, Multisampling, blending, and Logic Operations. | |
| Applications rendering a windowed desktop or other 2D GUI might fit | |
| into this profile. | |
| Applications that match this profile can enable ``write-only'' rendering | |
| mode. Performance may be improved in this mode through single-pass | |
| rendering directly to system memory as compared with multipass tile-based | |
| rendering into on-chip memory. However, since the write-path to system memory | |
| is generally lower bandwidth, any gains are most likely for 2D applications | |
| rendering to large frame buffers with little overdraw. | |
| On some HW, the GPU is not able to simultaneously read and write to system | |
| memory framebuffers, so enabling this mode also implicitly disables any per- | |
| fragment operations that may read from the frame buffer. In addition, this | |
| mode implicitly disables any reads and writes from the depth buffer. | |
| To enable write-only rendering, an OpenGL application will call | |
| glEnable(GL_WRITEONLY_RENDERING_QCOM). When write-only rendering is enabled, | |
| the following per-fragment stages are disabled regardless of the associated | |
| GL enables: multisample, depth_test, stencil_test, blending, and color_logic_Op. | |
| In addition, write-only rendering will implicitly disable all depth writes | |
| regardless of the value set via glDepthMask(). The alpha_test and scissor_test | |
| stages function as normal. | |
| To disable fast-rendering, call glDisable(GL_ WRITEONLY_RENDERING_QCOM). Any | |
| stages previously disabled by write-only rendering will return to their current | |
| GL state. | |
| IP Status | |
| There is no intellectual property associated with this extension. | |
| Issues | |
| (1) How can alpha-blending be implemented with write-only rendering? | |
| RESOLVED: For ES2.0 applications that want to use write-only rendering combined | |
| with alpha-blending, this must be done in the GLSL fragment shader, by binding the | |
| RT as a texture. Application will handle all coherency issues using glFinish(). | |
| (2) Can write-only logicOps be supported? | |
| RESOLVED: It is possible we could allow some LogicOps (those that don't need to | |
| read from the destination). For simplicity, the extension doesn't allow any LogicOps | |
| with write-only rendering. | |
| (3) Can Multisample be supported? | |
| RESOLVED: Write-only rendering with multisampling enabled may not work on | |
| all HW. For now, MSAA is not allowed with WRITEONLY_RENDERING. | |
| (4) Can the depth or stencil buffer be cleared while write-only rendering is | |
| enabled? | |
| RESOLVED: No, while write-only rendering is enabled, all reads and writes to the | |
| depth/stencil buffer implicitly disabled. Clears of the depth buffer are ignored. | |
| For example, calling glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | | |
| GL_STENCIL_BUFFER_BIT) would only clear the color buffer. | |
| New Procedures and Functions | |
| New Tokens | |
| Accepted by the <cap> parameter of Enable, Disable, and by the | |
| WRITEONLY_RENDERING_QCOM 0x8823 | |
| None. | |
| Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment | |
| Operations and the Frame Buffer) | |
| TBD | |
| Additions to Chapter 5 of the OpenGL 1.4 Specification (Special | |
| Errors | |
| None. | |
| New State | |
| Get Value Type Command Value | |
| --------- ---- ------- ------- | |
| WRITEONLY_RENDERING_QCOM bool IsEnabled | |
| Revision History | |
| #03 09/30/2009 Maurice Ribble Fixed some AMD stuff I missed. | |
| #02 07/07/2009 Maurice Ribble Update due to the AMD->Qualcomm move. | |
| #01 ?? Benj Lipchak Initial version. |