|
@@ -49,31 +49,6 @@ static int get_next_multiple(int n, int m) {
|
|
return n + (m - (n % m));
|
|
return n + (m - (n % m));
|
|
}
|
|
}
|
|
|
|
|
|
-static bool is_image_signed(const Image *r_img) {
|
|
|
|
- if (r_img->get_format() >= Image::FORMAT_RH && r_img->get_format() <= Image::FORMAT_RGBAH) {
|
|
|
|
- const uint16_t *img_data = reinterpret_cast<const uint16_t *>(r_img->ptr());
|
|
|
|
- const uint64_t img_size = r_img->get_data_size() / 2;
|
|
|
|
-
|
|
|
|
- for (uint64_t i = 0; i < img_size; i++) {
|
|
|
|
- if ((img_data[i] & 0x8000) != 0 && (img_data[i] & 0x7fff) != 0) {
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- } else if (r_img->get_format() >= Image::FORMAT_RF && r_img->get_format() <= Image::FORMAT_RGBAF) {
|
|
|
|
- const uint32_t *img_data = reinterpret_cast<const uint32_t *>(r_img->ptr());
|
|
|
|
- const uint64_t img_size = r_img->get_data_size() / 4;
|
|
|
|
-
|
|
|
|
- for (uint64_t i = 0; i < img_size; i++) {
|
|
|
|
- if ((img_data[i] & 0x80000000) != 0 && (img_data[i] & 0x7fffffff) != 0) {
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return false;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
Error _compress_betsy(BetsyFormat p_format, Image *r_img) {
|
|
Error _compress_betsy(BetsyFormat p_format, Image *r_img) {
|
|
uint64_t start_time = OS::get_singleton()->get_ticks_msec();
|
|
uint64_t start_time = OS::get_singleton()->get_ticks_msec();
|
|
|
|
|
|
@@ -125,7 +100,7 @@ Error _compress_betsy(BetsyFormat p_format, Image *r_img) {
|
|
case BETSY_FORMAT_BC6: {
|
|
case BETSY_FORMAT_BC6: {
|
|
err = compute_shader->parse_versions_from_text(bc6h_shader_glsl);
|
|
err = compute_shader->parse_versions_from_text(bc6h_shader_glsl);
|
|
|
|
|
|
- if (is_image_signed(r_img)) {
|
|
|
|
|
|
+ if (r_img->detect_signed(true)) {
|
|
dest_format = Image::FORMAT_BPTC_RGBF;
|
|
dest_format = Image::FORMAT_BPTC_RGBF;
|
|
version = "signed";
|
|
version = "signed";
|
|
} else {
|
|
} else {
|