Skip to content

Commit fdbd5cf

Browse files
committed
Skip MODE0 fast path for 3D textures
1 parent b32d391 commit fdbd5cf

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

Source/astcenc_block_sizes.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1062,7 +1062,6 @@ static void construct_block_size_descriptor_3d(
10621062
}
10631063

10641064
bsd.decimation_mode_count = decimation_mode_count;
1065-
bsd.always_decimation_mode_count = 1;
10661065

10671066
// Construct the list of block formats
10681067
unsigned int packed_idx = 0;
@@ -1107,10 +1106,10 @@ static void construct_block_size_descriptor_3d(
11071106
}
11081107

11091108
bsd.block_mode_count = packed_idx;
1110-
bsd.always_block_mode_count = 1;
11111109

1112-
assert(bsd.always_block_mode_count > 0);
1113-
assert(bsd.always_decimation_mode_count > 0);
1110+
// These are never used = the MODE0 fast path is skipped for 3D blocks
1111+
bsd.always_block_mode_count = 0;
1112+
bsd.always_decimation_mode_count = 0;
11141113

11151114
// Determine the texels to use for kmeans clustering.
11161115
assign_kmeans_texels(bsd);

Source/astcenc_compress_symbolic.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1431,7 +1431,12 @@ void compress_block(
14311431

14321432
static const float errorval_overshoot = 1.0f / ctx.config.tune_refinement_mse_overshoot;
14331433

1434-
int start_trial = bsd->texel_count < TUNE_MIN_TEXELS_MODE0_FASTPATH ? 1 : 0;
1434+
int start_trial = 1;
1435+
if ((bsd->texel_count < TUNE_MIN_TEXELS_MODE0_FASTPATH) && (bsd->zdim > 1))
1436+
{
1437+
start_trial = 0;
1438+
}
1439+
14351440
for (int i = start_trial; i < 2; i++)
14361441
{
14371442
TRACE_NODE(node1, "pass");

0 commit comments

Comments
 (0)