From 1ead653ce586b15cef4e3ee7787b2a9980a3d0f7 Mon Sep 17 00:00:00 2001 From: David Rose Date: Fri, 18 Nov 2011 23:35:31 +0000 Subject: [PATCH] don't lose alpha format when bouncing through texture cache --- panda/src/gobj/texture.cxx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/panda/src/gobj/texture.cxx b/panda/src/gobj/texture.cxx index f3c97b154f..1665db15d4 100644 --- a/panda/src/gobj/texture.cxx +++ b/panda/src/gobj/texture.cxx @@ -3945,8 +3945,10 @@ do_reload_ram_image(CData *cdata, bool allow_compression) { CDReader cdata_tex(tex->_cycler); cdata->_x_size = cdata_tex->_x_size; cdata->_y_size = cdata_tex->_y_size; - cdata->_num_components = cdata_tex->_num_components; - cdata->_format = cdata_tex->_format; + if (cdata->_num_components != cdata_tex->_num_components) { + cdata->_num_components = cdata_tex->_num_components; + cdata->_format = cdata_tex->_format; + } cdata->_component_type = cdata_tex->_component_type; cdata->_compression = cdata_tex->_compression; cdata->_ram_image_compression = cdata_tex->_ram_image_compression; @@ -4975,8 +4977,17 @@ do_set_compression(CData *cdata, Texture::CompressionMode compression) { if (cdata->_compression != compression) { ++(cdata->_properties_modified); cdata->_compression = compression; + if (do_has_ram_image(cdata)) { - do_reload(cdata); + bool has_compression = do_has_compression(cdata); + bool has_ram_image_compression = (cdata->_ram_image_compression != CM_off); + if (has_compression != has_ram_image_compression || + has_compression) { + // Reload if we're turning compression on or off, or if we're + // changing the compression mode to a different kind of + // compression. + do_reload(cdata); + } } } }