From 34c6849d74c07e3e61d26203402bd478a1cbfd43 Mon Sep 17 00:00:00 2001 From: Chuck Walbourn Date: Tue, 3 Jul 2018 18:32:23 -0700 Subject: [PATCH] BC7 GPU codec optimization of parity bit calculation --- DirectXTex/Shaders/BC7Encode.hlsl | 79 +- .../Compiled/BC6HEncode_EncodeBlockCS.pdb | Bin 380416 -> 380416 bytes .../Compiled/BC6HEncode_TryModeG10CS.pdb | Bin 288256 -> 288256 bytes .../Compiled/BC6HEncode_TryModeLE10CS.pdb | Bin 298496 -> 298496 bytes .../Compiled/BC7Encode_EncodeBlockCS.pdb | Bin 226816 -> 228864 bytes .../Compiled/BC7Encode_TryMode02CS.inc | 2837 ++++++++------ .../Compiled/BC7Encode_TryMode02CS.pdb | Bin 185856 -> 189952 bytes .../Compiled/BC7Encode_TryMode137CS.inc | 3472 +++++++++-------- .../Compiled/BC7Encode_TryMode137CS.pdb | Bin 185856 -> 189952 bytes .../Compiled/BC7Encode_TryMode456CS.pdb | Bin 183808 -> 183808 bytes 10 files changed, 3436 insertions(+), 2952 deletions(-) diff --git a/DirectXTex/Shaders/BC7Encode.hlsl b/DirectXTex/Shaders/BC7Encode.hlsl index bd2d70d..52b12f0 100644 --- a/DirectXTex/Shaders/BC7Encode.hlsl +++ b/DirectXTex/Shaders/BC7Encode.hlsl @@ -680,16 +680,16 @@ void TryMode137CS( uint GI : SV_GroupIndex, uint3 groupID : SV_GroupID ) // mode if (1 == g_mode_id) { // in mode 1, there is only one p bit per subset - max_p = 4; + max_p = 2; } else { // in mode 3 7, there are two p bits per subset, one for each end point - max_p = 16; + max_p = 4; } - uint rotation = 0; - uint error = MAX_UINT; + uint final_p[2] = { 0, 0 }; + uint error[2] = { MAX_UINT, MAX_UINT }; for ( uint p = 0; p < max_p; p ++ ) { endPoint[0] = endPointBackup[0]; @@ -699,15 +699,15 @@ void TryMode137CS( uint GI : SV_GroupIndex, uint3 groupID : SV_GroupID ) // mode { if (g_mode_id == 1) { - compress_endpoints1( endPoint[i], (p >> i) & 1 ); + compress_endpoints1( endPoint[i], p ); } else if (g_mode_id == 3) { - compress_endpoints3( endPoint[i], uint2(p >> (i * 2 + 0), p >> (i * 2 + 1)) & 1 ); + compress_endpoints3( endPoint[i], uint2(p, p >> 1) & 1 ); } else if (g_mode_id == 7) { - compress_endpoints7( endPoint[i], uint2(p >> (i * 2 + 0), p >> (i * 2 + 1)) & 1 ); + compress_endpoints7( endPoint[i], uint2(p, p >> 1) & 1 ); } } @@ -748,10 +748,12 @@ void TryMode137CS( uint GI : SV_GroupIndex, uint3 groupID : SV_GroupID ) // mode step_selector = 1; // mode 1 has 3 bit index } - uint p_error = 0; + uint p_error[2] = { 0, 0 }; for ( i = 0; i < 16; i ++ ) { - if (((bits >> i) & 0x01) == 1) + uint subset_index = (bits >> i) & 0x01; + + if (subset_index == 1) { dotProduct = dot( span[1], shared_temp[threadBase + i].pixel - endPoint[1][0] ); color_index = (span_norm_sqr[1] <= 0 || dotProduct <= 0) ? 0 @@ -764,8 +766,6 @@ void TryMode137CS( uint GI : SV_GroupIndex, uint3 groupID : SV_GroupID ) // mode : ((dotProduct < span_norm_sqr[0]) ? aStep[step_selector][uint(dotProduct * 63.49999 / span_norm_sqr[0])] : aStep[step_selector][63]); } - uint subset_index = (bits >> i) & 0x01; - pixel_r = ((64 - aWeight[step_selector][color_index]) * endPoint[subset_index][0] + aWeight[step_selector][color_index] * endPoint[subset_index][1] + 32) >> 6; if (g_mode_id != 7) @@ -776,20 +776,32 @@ void TryMode137CS( uint GI : SV_GroupIndex, uint3 groupID : SV_GroupID ) // mode uint4 pixel = shared_temp[threadBase + i].pixel; Ensure_A_Is_Larger( pixel_r, pixel ); pixel_r -= pixel; - p_error += ComputeError(pixel_r, pixel_r); + uint pixel_error = ComputeError(pixel_r, pixel_r); + if ( subset_index == 1 ) + p_error[1] += pixel_error; + else + p_error[0] += pixel_error; } - if (p_error < error) + for ( i = 0; i < 2; i++ ) { - error = p_error; - rotation = p; + if (p_error[i] < error[i]) + { + error[i] = p_error[i]; + final_p[i] = p; + } } } - shared_temp[GI].error = error; + shared_temp[GI].error = error[0] + error[1]; shared_temp[GI].mode = g_mode_id; shared_temp[GI].partition = partition; - shared_temp[GI].rotation = rotation; // mode 1 3 7 don't have rotation, we use rotation for p bits + + // mode 1 3 7 don't have rotation, we use rotation for p bits + if ( g_mode_id == 1 ) + shared_temp[GI].rotation = (final_p[1] << 1) | final_p[0]; + else + shared_temp[GI].rotation = (final_p[1] << 2) | final_p[0]; } GroupMemoryBarrierWithGroupSync(); @@ -955,15 +967,15 @@ void TryMode02CS( uint GI : SV_GroupIndex, uint3 groupID : SV_GroupID ) // mode uint max_p; if (0 == g_mode_id) { - max_p = 64; // changed from 32 to 64 + max_p = 4; } else { max_p = 1; } - uint rotation = 0; - uint error = MAX_UINT; + uint final_p[3] = { 0, 0, 0 }; + uint error[3] = { MAX_UINT, MAX_UINT, MAX_UINT }; for ( uint p = 0; p < max_p; p ++ ) { endPoint[0] = endPointBackup[0]; @@ -974,7 +986,7 @@ void TryMode02CS( uint GI : SV_GroupIndex, uint3 groupID : SV_GroupID ) // mode { if (0 == g_mode_id) { - compress_endpoints0( endPoint[i], uint2(p >> (i * 2 + 0), p >> (i * 2 + 1)) & 1 ); + compress_endpoints0( endPoint[i], uint2(p, p >> 1) & 1 ); } else { @@ -1006,7 +1018,7 @@ void TryMode02CS( uint GI : SV_GroupIndex, uint3 groupID : SV_GroupID ) // mode } } - uint p_error = 0; + uint p_error[3] = { 0, 0, 0 }; for ( i = 0; i < 16; i ++ ) { uint subset_index = ( bits2 >> ( i * 2 ) ) & 0x03; @@ -1036,19 +1048,30 @@ void TryMode02CS( uint GI : SV_GroupIndex, uint3 groupID : SV_GroupID ) // mode uint4 pixel = shared_temp[threadBase + i].pixel; Ensure_A_Is_Larger( pixel_r, pixel ); pixel_r -= pixel; - p_error += ComputeError(pixel_r, pixel_r); + + uint pixel_error = ComputeError(pixel_r, pixel_r); + + if ( subset_index == 2 ) + p_error[2] += pixel_error; + else if ( subset_index == 1 ) + p_error[1] += pixel_error; + else + p_error[0] += pixel_error; } - if (p_error < error) + for ( i = 0; i < 3; i++ ) { - error = p_error; - rotation = p; // Borrow rotation for p + if (p_error[i] < error[i]) + { + error[i] = p_error[i]; + final_p[i] = p; // Borrow rotation for p + } } } - shared_temp[GI].error = error; + shared_temp[GI].error = error[0] + error[1] + error[2]; shared_temp[GI].partition = partition; - shared_temp[GI].rotation = rotation; + shared_temp[GI].rotation = (final_p[2] << 4) | (final_p[1] << 2) | final_p[0]; } GroupMemoryBarrierWithGroupSync(); diff --git a/DirectXTex/Shaders/Compiled/BC6HEncode_EncodeBlockCS.pdb b/DirectXTex/Shaders/Compiled/BC6HEncode_EncodeBlockCS.pdb index 6ce8bb4db4c957cde98282f11aeece1ba3896b7b..ff3613ae5acbd9c66e3a51b540bb251fffbb8ca1 100644 GIT binary patch delta 170 zcmZpeBi=Aad;<%YM4XaMG$R88L-bL$^y8V++-Awfo#UK3p=z@XR|<>t^pDI8M>?1o z%$_nbum~|RG%aRisQSvtFyR4n^K8EDv-ucvpK_Y1%n>&ezQV{j(NVwM;S1w-hc8T4 x=a?>(Pp>(|tOlZ&K%4wcy&LEnOf>#o4HwrD}_b+MHK_Xkq#yX zv!{#<&Vft}O^X>Bs=hKZyjNjpp3S#?HXmc|Q_haI54}dhR~Q*5I_kGOd|}+~@P*0h x91}y-^qND=Y9M+Egl<1`h&Lo6%4vk3HmVBKD^i?xRlrwg{r>|uQ(2mrQDJ$L{B diff --git a/DirectXTex/Shaders/Compiled/BC6HEncode_TryModeG10CS.pdb b/DirectXTex/Shaders/Compiled/BC6HEncode_TryModeG10CS.pdb index 0ee35c3ed7d3b0c82d289095a5dc6585a6eb4ea2..288b0da2c7bb133360d6a9bf24e8ad1a4d726d79 100644 GIT binary patch delta 139 zcmZoTBiL|8a03gMM7WYoG$R88Lx$69zSsGw-V3XKMIBTLQQs`X)xg5vbc2~8YBDo} z!Zjv_LyMW3SMzOO&Bqw~ly&3vWx{6LdA~63&0xAvKK)D#lNyk2{}RKr{YwmU!*`a7 Wesk9C6(KA=j5w{>E)&M`gdYIP3^Q^7 delta 139 zcmZoTBiL|8a03gMM4F6EG$R88gY?BjpMP2t94Gq)9w=FxP`X)$tAT~TQh1Se?)PQvRml&q)Ut*XWzO$U@ VQ)Jv;5yH~Lh|`MgGGQ!F_yL;>FPs1X diff --git a/DirectXTex/Shaders/Compiled/BC6HEncode_TryModeLE10CS.pdb b/DirectXTex/Shaders/Compiled/BC6HEncode_TryModeLE10CS.pdb index 497aef8a598150b2eb9eedccf814524fb3e3a023..af18b24c3610ce26830ea59239b83aab7f920e78 100644 GIT binary patch delta 195 zcmZpeBh)ZQXaftEM1+z}G$R88!~a`ek62nB`giLXmq^>_hHjSOn!zGnP{zPuw2PU6 z=^rCQ%o_%V{nr>7w7)Yk{E%dBKF_!PJRhUwQ`U%!jv{8;dA~3Q_A^~5pPtanqz0lp zAawhNW~S{MnwgWna9XhfEn>LAVzphmf<>E&>5cmIIaMrD)03)LgqQ;+Y@A+R#i9%p S-3}DZV8rRP?J_kiPXqzu@IjgY delta 195 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 delta 15951 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 Zxby^HdmZ0TuDjEP$t$t{jx^r>{{i}b?2-Tg delta 17313 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 Dq54O4 delta 1833 zcmeHIZA?>F7{2dITgoj3#IW#D*nySOmTtBT(b$#*$2O*$5|mlp2dxyeG16KaHAWOd z6bXrroVa%+s9+Y&qA`rSd6UINhK!JzY~Vh!B`)e;V?v2$KUl<_f}hKb#y|e?B+ot1 zea~}mPM&k0`?mEN+WHKiIpjgDG&dSSDb)Q4L+C(=D}cYikWQn?UT^Yz1VZ3%?JC&e zZma(CS6y29iMPH`OmdATeV_)Uw7(_Eei@~ut5MmWc4HGorXii2xmZlSaWGK9G}NK1 zg0@XVKApTE)*Pdt=Z>ASfqB^nRlbJ$_g1Z?+AHvidSe=vL#j2xDl1vY#w^Umt4^3H zehYGG%Pm-INi0}H%+AVKDRbH!Y)<;1;<7#VP|LIH7pwiZ;j&gMw&Zm4Kw~Z)o&gUZ zKA_35S~rGb+aGMnxy$LYF|U`oXj?VfdA?8PgZ@+=X)WLrUwLW89mrJ2|AE~|muA4N z40rqnM}Ed+iv9_&^YeSN7KWOcHPX-&jfSJl!{%l_xu+;)zT#yO`rd{)ls^gvh>$A> zOUM|+Y(6olr9)RCnU(}GkKRG_ka02U>2xXP>7(ITAQlR@kRu)6hE{&P(oS{-E7e!*0?#)vZ*P^nxo;Z?9DP33$u!HK5*Rkl+z(`I_=byhgY86R3TD2p(>w3S&Qe^Rao+&9QD$Py zIiLy$Rv!F%`THQxPR&jwK4g1|Dldas(0#1JFqBeWLXU-Tf@9Q`` z-t|UO$hgu}ys%&W$q%!|^+BB^LB@PmO#k6{uU;tXkMg8@_1Kg2RM-ixK}TZBBY!8H zL}`nvKM21kCCIgIxEp*KrRfO4d#?-6j9z#0#ciJwPGR57#8I>hzO60 z`-=jf3hoo=6I=vL8dC#f_%6ax_1ke=gK&&eE+NlN7E3<}tQXP^0*Q9^iNMFuQ&lJX W1q%pl1O@bWLCMg^AG!3@mi!BO2Og0C