|
@@ -489,7 +489,7 @@ read(const Filename &fullpath, const Filename &alpha_fullpath,
|
|
|
size_t Texture::
|
|
size_t Texture::
|
|
|
estimate_texture_memory() const {
|
|
estimate_texture_memory() const {
|
|
|
CDReader cdata(_cycler);
|
|
CDReader cdata(_cycler);
|
|
|
- size_t pixels = cdata->_x_size * cdata->_y_size;
|
|
|
|
|
|
|
+ size_t pixels = cdata->_x_size * cdata->_y_size * cdata->_z_size;
|
|
|
|
|
|
|
|
size_t bpp = 4;
|
|
size_t bpp = 4;
|
|
|
switch (cdata->_format) {
|
|
switch (cdata->_format) {
|
|
@@ -503,6 +503,7 @@ estimate_texture_memory() const {
|
|
|
case Texture::F_blue:
|
|
case Texture::F_blue:
|
|
|
case Texture::F_luminance:
|
|
case Texture::F_luminance:
|
|
|
case Texture::F_sluminance:
|
|
case Texture::F_sluminance:
|
|
|
|
|
+ case Texture::F_r8i:
|
|
|
bpp = 1;
|
|
bpp = 1;
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
@@ -519,6 +520,8 @@ estimate_texture_memory() const {
|
|
|
case Texture::F_rgb5:
|
|
case Texture::F_rgb5:
|
|
|
case Texture::F_rgba5:
|
|
case Texture::F_rgba5:
|
|
|
case Texture::F_srgb:
|
|
case Texture::F_srgb:
|
|
|
|
|
+ // Most of the above formats have only 3 bytes, but they are most likely to
|
|
|
|
|
+ // get padded by the driver
|
|
|
bpp = 4;
|
|
bpp = 4;
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
@@ -536,9 +539,15 @@ estimate_texture_memory() const {
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case Texture::F_depth_component:
|
|
case Texture::F_depth_component:
|
|
|
|
|
+ case Texture::F_depth_component16:
|
|
|
bpp = 2;
|
|
bpp = 2;
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
|
|
+ case Texture::F_depth_component24: // Gets padded
|
|
|
|
|
+ case Texture::F_depth_component32:
|
|
|
|
|
+ bpp = 4;
|
|
|
|
|
+ break;
|
|
|
|
|
+
|
|
|
case Texture::F_rgba12:
|
|
case Texture::F_rgba12:
|
|
|
case Texture::F_rgb12:
|
|
case Texture::F_rgb12:
|
|
|
bpp = 8;
|
|
bpp = 8;
|
|
@@ -552,7 +561,6 @@ estimate_texture_memory() const {
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case Texture::F_r16:
|
|
case Texture::F_r16:
|
|
|
- case Texture::F_r8i:
|
|
|
|
|
case Texture::F_rg8i:
|
|
case Texture::F_rg8i:
|
|
|
bpp = 2;
|
|
bpp = 2;
|
|
|
break;
|
|
break;
|
|
@@ -564,17 +572,16 @@ estimate_texture_memory() const {
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case Texture::F_r32i:
|
|
case Texture::F_r32i:
|
|
|
- bpp = 4;
|
|
|
|
|
- break;
|
|
|
|
|
-
|
|
|
|
|
case Texture::F_r32:
|
|
case Texture::F_r32:
|
|
|
bpp = 4;
|
|
bpp = 4;
|
|
|
break;
|
|
break;
|
|
|
|
|
+
|
|
|
case Texture::F_rg32:
|
|
case Texture::F_rg32:
|
|
|
bpp = 8;
|
|
bpp = 8;
|
|
|
break;
|
|
break;
|
|
|
|
|
+
|
|
|
case Texture::F_rgb32:
|
|
case Texture::F_rgb32:
|
|
|
- bpp = 12;
|
|
|
|
|
|
|
+ bpp = 16;
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case Texture::F_r11_g11_b10:
|
|
case Texture::F_r11_g11_b10:
|
|
@@ -582,6 +589,8 @@ estimate_texture_memory() const {
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
default:
|
|
|
|
|
+ gobj_cat.warning() << "Unhandled format in estimate_texture_memory(): "
|
|
|
|
|
+ << cdata->_format << "\n";
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
|
|
|