[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Public WebGL] implementing renderbufferStorage on desktop GL where 16-bit color buffers are not available





On Mon, Oct 25, 2010 at 3:26 PM, Gregg Tavares (wrk) <gman@google.com> wrote:


On Mon, Oct 25, 2010 at 3:05 PM, Benoit Jacob <bjacob@mozilla.com> wrote:
----- Original Message -----
> Hi,
>
> The OpenGL ES glRenderbufferStorage function, which our
> renderbufferStorage function mimics, accepts only 16 bit color buffer
> formats: GL_RGB565, GL_RGBA4, GL_RGB5_A1.
>
> But here on my desktop OpenGL system [1] it seems that these 16 bit
> color buffer formats are not supported. Specifically:
> * passing GL_RGB565 to glRenderbufferStorage gives me GL_INVALID_ENUM.
> * passing GL_RGBA4 to glRenderbufferStorage succeeds but subsequent
> drawing fails with GL_FRAMEBUFFER_UNSUPPORTED.
>
> The easiest work-around that I can think of is to make
> renderbufferStorage silently replace these 16 bit formats by RGBA8 /
> RGB8. This makes the framebuffer-test.html test succeed here.
>
> But I am concerned about doing this: could some code be relying on the
> color buffer being exactly, say, RGB5_A1 ? Is it OK to silently
> replace this by RGBA8?

How about modifying the spec to say that the internalformat parameter only specifies minima, and that the implementation may use any format that has at least the given number of bits for each channel?

If you agree with this for color buffers, should we then do this as well for depth buffers? For stencil buffers?

I'm pretty sure that's that the OpenGL ES 2.0 spec says should happen. I'll double check

Section 4.4

An OpenGL ES implementation may vary its allocation of internal component
resolution based on any RenderbufferStorage parameter (except target), but the
allocation and chosen internal format must not be a function of any other state and
cannot be changed once they are established. The actual resolution in bits of each
component of the allocated image can be queried with GetRenderbufferParameteriv
 
 

Benoit


>
> I am curious as to how this framebuffer-test.html test can be
> successful in other implementations? I looked at the WebKit code and
> it doesn't seem to be doing anything special about it...?
>
> [1] My system: NVIDIA card from the Geforce 200 series, NVIDIA
> proprietary driver, linux x86-64.
>
> Cheers,
> Benoit
> -----------------------------------------------------------
> You are currently subscribed to public_webgl@khronos.org.
> To unsubscribe, send an email to majordomo@khronos.org with
> the following command in the body of your email:
-----------------------------------------------------------
You are currently subscribed to public_webgl@khronos.org.
To unsubscribe, send an email to majordomo@khronos.org with
the following command in the body of your email: