@@ -55,6 +55,7 @@ struct astcenc_preset_config
5555 float tune_2partition_early_out_limit_factor;
5656 float tune_3partition_early_out_limit_factor;
5757 float tune_2plane_early_out_limit_correlation;
58+ float tune_search_mode0_enable;
5859};
5960
6061/* *
@@ -63,22 +64,22 @@ struct astcenc_preset_config
6364static const std::array<astcenc_preset_config, 6 > preset_configs_high {{
6465 {
6566 ASTCENC_PRE_FASTEST,
66- 2 , 10 , 6 , 4 , 43 , 2 , 2 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .85f
67+ 2 , 10 , 6 , 4 , 43 , 2 , 2 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .85f , 0 . 0f
6768 }, {
6869 ASTCENC_PRE_FAST,
69- 3 , 18 , 10 , 8 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .90f
70+ 3 , 18 , 10 , 8 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .90f , 0 . 0f
7071 }, {
7172 ASTCENC_PRE_MEDIUM,
72- 4 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 2 .5f , 1 .1f , 1 .05f , 0 .95f
73+ 4 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 2 .5f , 1 .1f , 1 .05f , 0 .95f , 0 . 0f
7374 }, {
7475 ASTCENC_PRE_THOROUGH,
75- 4 , 82 , 60 , 30 , 94 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .35f , 1 .15f , 0 .97f
76+ 4 , 82 , 60 , 30 , 94 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .35f , 1 .15f , 0 .97f , 0 . 0f
7677 }, {
7778 ASTCENC_PRE_VERYTHOROUGH,
78- 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 6 , 4 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f
79+ 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 6 , 4 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f , 0 . 0f
7980 }, {
8081 ASTCENC_PRE_EXHAUSTIVE,
81- 4 , 512 , 512 , 512 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f
82+ 4 , 512 , 512 , 512 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f , 0 . 0f
8283 }
8384}};
8485
@@ -88,22 +89,22 @@ static const std::array<astcenc_preset_config, 6> preset_configs_high {{
8889static const std::array<astcenc_preset_config, 6 > preset_configs_mid {{
8990 {
9091 ASTCENC_PRE_FASTEST,
91- 2 , 10 , 6 , 4 , 43 , 2 , 2 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .80f
92+ 2 , 10 , 6 , 4 , 43 , 2 , 2 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .80f , 1 . 0f
9293 }, {
9394 ASTCENC_PRE_FAST,
94- 3 , 18 , 12 , 10 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .85f
95+ 3 , 18 , 12 , 10 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .85f , 1 . 0f
9596 }, {
9697 ASTCENC_PRE_MEDIUM,
97- 3 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 3 .0f , 1 .1f , 1 .05f , 0 .90f
98+ 3 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 3 .0f , 1 .1f , 1 .05f , 0 .90f , 1 . 0f
9899 }, {
99100 ASTCENC_PRE_THOROUGH,
100- 4 , 82 , 60 , 30 , 94 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .4f , 1 .2f , 0 .95f
101+ 4 , 82 , 60 , 30 , 94 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .4f , 1 .2f , 0 .95f , 0 . 0f
101102 }, {
102103 ASTCENC_PRE_VERYTHOROUGH,
103- 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 6 , 3 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f
104+ 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 6 , 3 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f , 0 . 0f
104105 }, {
105106 ASTCENC_PRE_EXHAUSTIVE,
106- 4 , 256 , 256 , 256 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f
107+ 4 , 256 , 256 , 256 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f , 0 . 0f
107108 }
108109}};
109110
@@ -113,22 +114,22 @@ static const std::array<astcenc_preset_config, 6> preset_configs_mid {{
113114static const std::array<astcenc_preset_config, 6 > preset_configs_low {{
114115 {
115116 ASTCENC_PRE_FASTEST,
116- 2 , 10 , 6 , 4 , 40 , 2 , 2 , 2 , 2 , 2 , 85 .0f , 63 .0f , 3 .5f , 1 .0f , 1 .0f , 0 .80f
117+ 2 , 10 , 6 , 4 , 40 , 2 , 2 , 2 , 2 , 2 , 85 .0f , 63 .0f , 3 .5f , 1 .0f , 1 .0f , 0 .80f , 1 . 0f
117118 }, {
118119 ASTCENC_PRE_FAST,
119- 2 , 18 , 12 , 10 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .0f , 63 .0f , 3 .5f , 1 .0f , 1 .0f , 0 .85f
120+ 2 , 18 , 12 , 10 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .0f , 63 .0f , 3 .5f , 1 .0f , 1 .0f , 0 .85f , 1 . 0f
120121 }, {
121122 ASTCENC_PRE_MEDIUM,
122- 3 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 3 .5f , 1 .1f , 1 .05f , 0 .90f
123+ 3 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 3 .5f , 1 .1f , 1 .05f , 0 .90f , 1 . 0f
123124 }, {
124125 ASTCENC_PRE_THOROUGH,
125- 4 , 82 , 60 , 30 , 93 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .3f , 1 .2f , 0 .97f
126+ 4 , 82 , 60 , 30 , 93 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .3f , 1 .2f , 0 .97f , 1 . 0f
126127 }, {
127128 ASTCENC_PRE_VERYTHOROUGH,
128- 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 5 , 2 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f
129+ 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 5 , 2 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f , 1 . 0f
129130 }, {
130131 ASTCENC_PRE_EXHAUSTIVE,
131- 4 , 256 , 256 , 256 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f
132+ 4 , 256 , 256 , 256 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f , 1 . 0f
132133 }
133134}};
134135
@@ -516,6 +517,7 @@ astcenc_error astcenc_config_init(
516517 config.tune_2partition_early_out_limit_factor = (*preset_configs)[start].tune_2partition_early_out_limit_factor ;
517518 config.tune_3partition_early_out_limit_factor = (*preset_configs)[start].tune_3partition_early_out_limit_factor ;
518519 config.tune_2plane_early_out_limit_correlation = (*preset_configs)[start].tune_2plane_early_out_limit_correlation ;
520+ config.tune_search_mode0_enable = (*preset_configs)[start].tune_search_mode0_enable ;
519521 }
520522 // Start and end node are not the same - so interpolate between them
521523 else
@@ -554,6 +556,7 @@ astcenc_error astcenc_config_init(
554556 config.tune_2partition_early_out_limit_factor = LERP (tune_2partition_early_out_limit_factor);
555557 config.tune_3partition_early_out_limit_factor = LERP (tune_3partition_early_out_limit_factor);
556558 config.tune_2plane_early_out_limit_correlation = LERP (tune_2plane_early_out_limit_correlation);
559+ config.tune_search_mode0_enable = LERP (tune_search_mode0_enable);
557560 #undef LERP
558561 #undef LERPI
559562 #undef LERPUI
@@ -581,6 +584,7 @@ astcenc_error astcenc_config_init(
581584 case ASTCENC_PRF_HDR_RGB_LDR_A:
582585 case ASTCENC_PRF_HDR:
583586 config.tune_db_limit = 999 .0f ;
587+ config.tune_search_mode0_enable = 0 .0f ;
584588 break ;
585589 default :
586590 return ASTCENC_ERR_BAD_PROFILE;
0 commit comments