Looks good Brian. Maybe MESA_FORMAT_RGBA_FLOAT16 should probably be before MESA_FORMAT_RG_FLOAT32 for GL_R16F/GL_RG16F -- same memory footprint, but exact rounding -- but I doubt it matters much either way.
Jose ----- Original Message ----- > The i965 driver advertises GL_ARB_texture_float and GL_ARB_texture_rg > support but the ctx->TextureFormatSupported[] table entries for > MESA_FORMAT_R_FLOAT32 and MESA_FORMAT_RGBA_FLOAT32 are false on gen 4 > hardware. So the case for GL_R32F would fail and we'd print an > implementation error. > > This patch adds more Mesa tex format options for GL_R32F and other > R/G > formats so we fall back to 16-bit formats when 32-bit formats aren't > available. > > Eric made the same fix in commit 6216a5b4 for the non R/G formats. > > v2: try 16-bit formats before 32-bit formats and try RG formats > before > RGBA where possible. > > This should fix https://bugs.freedesktop.org/show_bug.cgi?id=44039 > > NOTE: This is a candidate for the 8.0 branch. > --- > src/mesa/main/texformat.c | 10 ++++++++++ > 1 files changed, 10 insertions(+), 0 deletions(-) > > diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c > index 7e60541..d393873 100644 > --- a/src/mesa/main/texformat.c > +++ b/src/mesa/main/texformat.c > @@ -786,21 +786,31 @@ _mesa_choose_tex_format( struct gl_context > *ctx, GLint internalFormat, > switch (internalFormat) { > case GL_R16F: > RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT16); > + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16); > RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT32); > + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32); > + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); > RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); > break; > case GL_R32F: > RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT32); > + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32); > RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); > + RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT16); > + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16); > + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); > break; > case GL_RG16F: > RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16); > RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32); > + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); > RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); > break; > case GL_RG32F: > RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32); > RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); > + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16); > + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); > break; > > default: > -- > 1.7.3.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev