I had a discussion with Volker about some of the open issues related to the dds support. Here are the results in an OpenGL extension discussion-like style
Should we continue support for non-dds textures?Yes. Limiting textures to solely dds would be too restrictive and unconvenient for most users, especially for small and quick projects.
Should we merge Texture2D and TextureCube to a single Texture resource type?Yes. The type can be considered as an attribute like the texture format. This makes sense, since before loading a dds image, it is not clear which type (2D or cube map) it has. Furthermore, this makes it easier to support additional texture types like 3D or texture arrays in the future.
Should we keep POT conversion of NPOT textures?No. It has several issues which make it hacky and elusive, e.g. dynamic texture update does not work with scaled textures. Conversion to power-of-two was implemented for older ATI cards for a specific legacy project. Horde has GL 2.0 as minimum requirement and so NPOT should be supported by the hardware. If non-standard conformant hardware is targeted users should be aware of the limitations of those. So they should create POT textures for old ATI hardware or have a preprocessing tool to do the POT conversion. For platforms that do not have guaranteed NPOT support (e.g. OGL ES 2.0) the texture upload function of the rendering backend can do the conversion transparently.
Should we continue support for cubemaps defined as vertical cross?No. Cube maps are a very special and rather seldom used texture type. DDS offers a cleaner and more standardized way to store cubemaps. There are free tools available to create dds cubemaps (e.g. NV photoshop dds plugin and ATI cubemapgen) and it would be easy to write an external tool which converts a vertical cross to a dds cube map. This fits more to the Horde philosophy of having a single way of doing things in the core and adding more options through a utility/convenience layer. Furthermore, just having the dds cube map format encourages the use of a build process for converting source data to a platform-specific target format. This process is essential for larger professional productions and a good practice for small projects.
How should texture properties (like mip map generation and compression) be specified for non-dds textures?Probably with naming conventions, possibly interpreted by the utility library. We don't like naming conventions so much but all other options are even worse. Storing the info in the materials is not clean because two materials could have different configurations for a single texture. Furthermore, it would be impossible to load a texture directly without a material. Having a separate text file which stores the meta-information for each texture is cleaner but makes things more complicated for artists.