From a9b25bca4fb88e21f4ecb5eb8a55884cc3baf061 Mon Sep 17 00:00:00 2001 From: Rich Geldreich Date: Sat, 13 Feb 2021 15:20:01 -0500 Subject: [PATCH] Allowing -zc# option to go down to 8 bytes, for BC1/4 --- test.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/test.cpp b/test.cpp index 05d09de..5b59158 100644 --- a/test.cpp +++ b/test.cpp @@ -503,7 +503,7 @@ int main(int argc, char *argv[]) else if (strncmp(pArg, "-zc", 3) == 0) { m_lookback_window_size = atoi(pArg + 3); - m_lookback_window_size = std::min(std::max(m_lookback_window_size, 16), 65536*2); + m_lookback_window_size = std::min(std::max(m_lookback_window_size, 8), 65536*2); custom_lookback_window_size = true; } else if (strncmp(pArg, "-zv", 3) == 0) @@ -781,7 +781,7 @@ int main(int argc, char *argv[]) } else { - printf("BC1 level: %u, use 3-color mode: %u, use 3-color mode for black: %u, bc1_mode: %u\nrdo_q: %f\nm_lookback_window_size: %u, rdo_smooth_block_error_scale: %f\n", + printf("BC1 level: %u, use 3-color mode: %u, use 3-color mode for black: %u, bc1_mode: %u\nrdo_q: %f, lookback_window_size: %u, rdo_smooth_block_error_scale: %f\n", bc1_quality_level, use_bc1_3color_mode, use_bc1_3color_mode_for_black, (int)bc1_mode, rdo_lambda, m_lookback_window_size, rdo_smooth_block_error_scale); } @@ -1058,6 +1058,8 @@ int main(int argc, char *argv[]) if (dxgi_format == DXGI_FORMAT_BC7_UNORM) { + ert_p.m_lookback_window_size = std::max(16U, m_lookback_window_size); + // BC7 RDO const uint32_t NUM_COMPONENTS = 4; @@ -1146,6 +1148,8 @@ int main(int argc, char *argv[]) { // BC5 RDO - One BC4 block for R followed by one BC4 block for G + ert_p.m_lookback_window_size = std::max(16U, m_lookback_window_size); + std::vector block_pixels_r(total_blocks * 16), block_pixels_g(total_blocks * 16); for (uint32_t by = 0; by < blocks_y; by++) @@ -1344,6 +1348,9 @@ int main(int argc, char *argv[]) else if (dxgi_format == DXGI_FORMAT_BC3_UNORM) { // BC3 RDO - One BC4 block followed by one BC1 block + + ert_p.m_lookback_window_size = std::max(16U, m_lookback_window_size); + std::vector block_pixels_a(total_blocks * 16); for (uint32_t by = 0; by < blocks_y; by++)