On 08/16/2012 02:29 PM, Anuj Phogat wrote:
On Thu, Aug 16, 2012 at 10:23 AM, Brian Paul <bri...@vmware.com> wrote:
On 08/15/2012 02:31 PM, Anuj Phogat wrote:
On Tue, May 1, 2012 at 2:07 PM, Brian Paul <bri...@vmware.com
<mailto:bri...@vmware.com>> wrote:
When glTexImage or glCopyTexImage is called with internalFormat
being a
generic compressed format (like GL_COMPRESSED_RGB) we need to do
the same
error checks as for specific compressed formats. In particular,
check if
the texture target is compatible with the format. None of the texture
compression formats we support so far work with GL_TEXTURE_1D, for
example.
See also https://bugs.freedesktop.org/show_bug.cgi?id=49124
Brian, generic texture compression formats with GL_TEXTURE_1D seem to
work fine
on i965 drivers.
Does that wind up using one of the DXT formats?
It uses RGTC for GL_COMPRESSED_RED & GL_COMPRESSED_RG
FXT for GL_COMPRESSED_RGB & GL_COMPRESSED_RGBA
I wonder if that produces correct results. There are lots of
limitations with those formats...
I verified this by allowing generic texture
compression formats for
GL_TEXTURE_1D in piglit copyteximage test case and reverting the
changes due to
this patch on mesa. Is this an issue only on swrast?
That's what the bug reported, don't recall testing other drivers.
Returning
GL_INVALID_ENUM
error for generic texture compression formats in glTexImage1D() and
glCopyTexImage1D() doesn't seem to follow the OpenGL
specification. Spec does allow
GL_INVALID_ENUM error for a similar scenario in case
of glCompressedTexImage1D().
Please correct me if I'm missing something.
I guess I'd like to check what either NVIDIA or AMD do in some of these
cases.
AFAIK, the various DXT, LATC, etc compressed formats are only spec'd to work
with 2D textures, not 1D. Since 1D textures are generally pretty small to
start with, there's not a lot of value in compressed 1D textures. Plus, if
a compressed 1D texture uses 4 or 8 bytes to store a 4x1 block of texels,
there's only 50% or 0% memory savings with compression.
Most of the specific formats are specified to only work with 2D textures.
From EXT_texture_compression_s3tc (note that 1D variants of TexImage,
CopyTexImage, etc are missing):
Accepted by the <internalformat> parameter of TexImage2D,
CopyTexImage2D,
and CompressedTexImage2DARB and the <format> parameter of
CompressedTexSubImage2DARB:
COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
Same for 3DFX_texture_compression_FXT1:
Accepted by the <internalformat> parameter of TexImage2D,
CopyTexImage2D, TexImage3D, CopyTexImage3D, and by the
<internalformat> and <format> parameters of
CompressedTexImage2D_ARB, CompressedTexSubImage2D_ARB,
CompressedTexImage3D_ARB, CompressedTexSubImage3D_ARB:
COMPRESSED_RGB_FXT1_3DFX 0x86B0
COMPRESSED_RGBA_FXT1_3DFX 0x86B1
However, the generic formats should be accepted. From
ARB_texture_compression:
Accepted by the <internalformat> parameter of TexImage1D, TexImage2D,
TexImage3D, CopyTexImage1D, and CopyTexImage2D:
COMPRESSED_ALPHA_ARB 0x84E9
COMPRESSED_LUMINANCE_ARB 0x84EA
COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
COMPRESSED_INTENSITY_ARB 0x84EC
COMPRESSED_RGB_ARB 0x84ED
COMPRESSED_RGBA_ARB 0x84EE
When the application specifies a generic format, the driver is always
free to pick an uncompressed format. Many Mesa drivers (primarily the
ones we removed a couple years ago) have done that for ages. :)
If you can post your patch for the piglit test I can run it with the NVIDIA
driver and see what it does.
I'll send out a follow up patch for piglit test case which you can use
for testing.
-Brian
_______________________________________________
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