From 9752545e0bf450020291fd7cff52d2135f236794 Mon Sep 17 00:00:00 2001 From: David Rose Date: Mon, 2 Jul 2007 20:11:14 +0000 Subject: [PATCH] attempt to prevent too-small textures from being compressed --- panda/src/dxgsg9/dxTextureContext9.cxx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/panda/src/dxgsg9/dxTextureContext9.cxx b/panda/src/dxgsg9/dxTextureContext9.cxx index 9204ea6e8e..9257097ab8 100755 --- a/panda/src/dxgsg9/dxTextureContext9.cxx +++ b/panda/src/dxgsg9/dxTextureContext9.cxx @@ -147,8 +147,10 @@ create_texture(DXScreenData &scrn) { // check for texture compression Texture::CompressionMode compression_mode = Texture::CompressionMode::CM_off; bool texture_stored_compressed = false; + bool texture_wants_compressed = false; if (get_texture()->get_compression() != Texture::CompressionMode::CM_off) { + texture_wants_compressed = true; compression_mode = get_texture()->get_ram_image_compression(); // assert my assumption that CM_dxt1..CM_dxt5 enum values are ascending without gaps nassertr(((Texture::CompressionMode::CM_dxt1+1)==Texture::CompressionMode::CM_dxt2)&&((Texture::CompressionMode::CM_dxt2+1)==Texture::CompressionMode::CM_dxt3)&&((Texture::CompressionMode::CM_dxt3+1)==Texture::CompressionMode::CM_dxt4)&&((Texture::CompressionMode::CM_dxt4+1)==Texture::CompressionMode::CM_dxt5),false); @@ -160,12 +162,14 @@ create_texture(DXScreenData &scrn) { case Texture::TT_1d_texture: case Texture::TT_2d_texture: case Texture::TT_cube_map: - // no compression for render target textures - if (get_texture()->get_render_to_texture() == false) { - // check config setting and stored format - if (compressed_textures || texture_stored_compressed){ + // no compression for render target textures, or very small + // textures + if (!get_texture()->get_render_to_texture() && + orig_width >= 4 && orig_height >= 4) { + if (texture_wants_compressed){ compress_texture = true; } + } } break; case Texture::TT_3d_texture: