On Wed, 2018-12-12 at 09:27 +0200, Tapani Pälli wrote: > > On 12/12/18 8:42 AM, Tapani Pälli wrote: > > > > On 12/12/18 5:05 AM, Nick Kreeger wrote: > > > This change enables GLES2 to render float/half-float textures to > > > a > > > framebuffer when the appropriate OES extensions are available. > > > > > > This commit regressed OES GLES2 float texture rendering: > > > https://gitlab.freedesktop.org/mesa/mesa/commit/e333035c47a6a4cc88f0f9ca2bced500538bebae > > > > > > > > > > Which test/app got regressed? I'm curious because this commit also > > fixed > > a failing conformance test that explicitly tests that the fbo with > > float > > attachment should be marked incomplete. > > > > I'm against this change because these same tests will start to fail > if > we allow this: > > https://mesa-ci.01.org/tpalli/builds/652/group/63a9f0ea7bb98050796b649e85481845 > > I believe the rule is that you should be able to render to sized > formats > such as RGBA32F (with modern GLES) but not to unsized formats such > as > GL_FLOAT. >
So... The extension spec for OES_texture_half_float / OES_texture_float says: ---8<--- Accepted by the <type> parameter of TexImage2D, TexSubImage2D, TexImage3D, and TexSubImage3D HALF_FLOAT_OES 0x8D61 FLOAT 0x1406 ---8<--- This allows these formats for texturing. But for using them for color attachments, they also need to be color-renderable. The color- renderable property is based on internal-format in the OpenGL ES 2.0 spec, and only the following internal formats are color-renderable there: RGB565, RGBA4, RGB5_A1. OES_rgb8_rgba8 adds RGB8 and RGBA8 as color-renderable (it doesn't explicitly say that it does, but it lists them under "Accepted by the <internalformat> parameter of RenderbufferStorageOES", and the ES2 spec says "internalformatmust be color-renderable, depth-renderable, or stencil-renderable" for RenderbufferStorage) EXT_color_buffer_half_float (if OES_texture_half_float is supported) adds R16F, RG16F (if EXT_texture_rg is supported), RGB16F and RGBA16F as color-renderable. EXT_color_buffer_float is written against ES3, so it doesn't apply to ES2. These are all the seemingly relevant extensions. None of them seems to add unsized float-support. So I tend to agree with Tapani here; I don't think this change is correct. I *do* think that this is implemented in a rather... uh, creative way, though. The color-renderable tests are kinda littered a bit all over the place, not in a very systematic and easy to follow way. I tried untangling this some years back, and my patches for that are here[1], but someone else did some conflicting changes that lead to me dropping this effort. Looking at what was done, the situation doesn't currently look much better IMO. [1]: https://github.com/kusma/mesa/commits/color_renderable_fix _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev