From acd99728b7ce7ff69ac473f69543dd0e387d5f75 Mon Sep 17 00:00:00 2001 From: Andrew Willmott Date: Mon, 11 Jun 2018 17:23:41 +0100 Subject: [PATCH] ATC and ASTC support (#1410) * ATC & ASTC support - Add update format enum for bimg additions - renderer_gl ATC and ATSC support - renderer_mtl ASTC support - renderer_vk ASTC support - updates to other backends for new enums - Support emulated ATC * cleanup * Add texture_compression test files for ATC/ASTC formats * Update 'update' example for ATC formats - Generalise tile code a little - Add ATC variants - Ignoring ASTC for now as not emulated -- should we add empty checkerboard emulate though? --- examples/08-update/update.cpp | 41 +++++++----- .../texture_compression_astc_10x5.dds | Bin 0 -> 7648 bytes .../textures/texture_compression_astc_4x4.dds | Bin 0 -> 22000 bytes .../textures/texture_compression_astc_5x5.dds | Bin 0 -> 14800 bytes .../textures/texture_compression_astc_6x6.dds | Bin 0 -> 10640 bytes .../textures/texture_compression_astc_8x5.dds | Bin 0 -> 9104 bytes .../textures/texture_compression_astc_8x6.dds | Bin 0 -> 7728 bytes .../textures/texture_compression_atc.dds | Bin 0 -> 11064 bytes .../textures/texture_compression_atce.dds | Bin 0 -> 22000 bytes .../textures/texture_compression_atci.dds | Bin 0 -> 22000 bytes include/bgfx/bgfx.h | 2 +- src/bgfx.cpp | 12 ++++ src/renderer_d3d11.cpp | 1 - src/renderer_d3d12.cpp | 1 - src/renderer_gl.cpp | 9 +++ src/renderer_gl.h | 60 ++++++++++++++++++ src/renderer_mtl.mm | 18 ++++++ 17 files changed, 124 insertions(+), 20 deletions(-) create mode 100644 examples/runtime/textures/texture_compression_astc_10x5.dds create mode 100644 examples/runtime/textures/texture_compression_astc_4x4.dds create mode 100644 examples/runtime/textures/texture_compression_astc_5x5.dds create mode 100644 examples/runtime/textures/texture_compression_astc_6x6.dds create mode 100644 examples/runtime/textures/texture_compression_astc_8x5.dds create mode 100644 examples/runtime/textures/texture_compression_astc_8x6.dds create mode 100644 examples/runtime/textures/texture_compression_atc.dds create mode 100644 examples/runtime/textures/texture_compression_atce.dds create mode 100644 examples/runtime/textures/texture_compression_atci.dds diff --git a/examples/08-update/update.cpp b/examples/08-update/update.cpp index 8e0b1ffba..ab0db8099 100644 --- a/examples/08-update/update.cpp +++ b/examples/08-update/update.cpp @@ -171,15 +171,19 @@ public: // Create vertex stream declaration. PosTexcoordVertex::init(); - m_textures[0] = loadTexture("textures/texture_compression_bc1.ktx", BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP); - m_textures[1] = loadTexture("textures/texture_compression_bc2.ktx", BGFX_TEXTURE_U_CLAMP); - m_textures[2] = loadTexture("textures/texture_compression_bc3.ktx", BGFX_TEXTURE_V_CLAMP); - m_textures[3] = loadTexture("textures/texture_compression_etc1.ktx", BGFX_TEXTURE_U_BORDER|BGFX_TEXTURE_V_BORDER|BGFX_TEXTURE_BORDER_COLOR(1) ); - m_textures[4] = loadTexture("textures/texture_compression_etc2.ktx"); - m_textures[5] = loadTexture("textures/texture_compression_ptc12.pvr"); - m_textures[6] = loadTexture("textures/texture_compression_ptc14.pvr"); - m_textures[7] = loadTexture("textures/texture_compression_ptc22.pvr"); - m_textures[8] = loadTexture("textures/texture_compression_ptc24.pvr"); + m_textures[ 0] = loadTexture("textures/texture_compression_bc1.ktx", BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP); + m_textures[ 1] = loadTexture("textures/texture_compression_bc2.ktx", BGFX_TEXTURE_U_CLAMP); + m_textures[ 2] = loadTexture("textures/texture_compression_bc3.ktx", BGFX_TEXTURE_V_CLAMP); + m_textures[ 3] = loadTexture("textures/texture_compression_etc1.ktx", BGFX_TEXTURE_U_BORDER | BGFX_TEXTURE_V_BORDER | BGFX_TEXTURE_BORDER_COLOR(1)); + m_textures[ 4] = loadTexture("textures/texture_compression_etc2.ktx"); + m_textures[ 5] = loadTexture("textures/texture_compression_ptc12.pvr"); + m_textures[ 6] = loadTexture("textures/texture_compression_ptc14.pvr"); + m_textures[ 7] = loadTexture("textures/texture_compression_ptc22.pvr"); + m_textures[ 8] = loadTexture("textures/texture_compression_ptc24.pvr"); + m_textures[ 9] = loadTexture("textures/texture_compression_atc.dds"); + m_textures[10] = loadTexture("textures/texture_compression_atci.dds"); + m_textures[11] = loadTexture("textures/texture_compression_atce.dds"); + BX_STATIC_ASSERT(12 == BX_COUNTOF(m_textures)); const bgfx::Caps* caps = bgfx::getCaps(); m_texture3DSupported = !!(caps->supported & BGFX_CAPS_TEXTURE_3D); @@ -519,13 +523,16 @@ public: // Set view and projection matrix for view 1. const float aspectRatio = float(m_height)/float(m_width); - const float size = 11.0f; + const float margin = 0.7f; + const float sizeX = 0.5f * BX_COUNTOF(m_textures) * 2.1f + margin; + const float sizeY = sizeX * aspectRatio; + const bgfx::Caps* caps = bgfx::getCaps(); - bx::mtxOrtho(proj, -size, size, size*aspectRatio, -size*aspectRatio, 0.0f, 1000.0f, 0.0f, caps->homogeneousDepth); + bx::mtxOrtho(proj, -sizeX, sizeX, sizeY, -sizeY, 0.0f, 1000.0f, 0.0f, caps->homogeneousDepth); bgfx::setViewTransform(1, NULL, proj); float mtx[16]; - bx::mtxTranslate(mtx, -size+2.0f - BX_COUNTOF(m_textures)*0.1f*0.5f, 1.9f, 0.0f); + bx::mtxTranslate(mtx, -sizeX + margin + 1.0f, 1.9f, 0.0f); // Set model matrix for rendering. bgfx::setTransform(mtx); @@ -543,11 +550,11 @@ public: // Submit primitive for rendering to view 1. bgfx::submit(1, m_programCmp); - const float xpos = -size+2.0f - BX_COUNTOF(m_textures)*0.1f*0.5f; + const float xpos = -sizeX + margin + 1.0f; for (uint32_t ii = 0; ii < BX_COUNTOF(m_textures); ++ii) { - bx::mtxTranslate(mtx, xpos + ii*2.1f, size-6.5f, 0.0f); + bx::mtxTranslate(mtx, xpos + ii*2.1f, sizeY - margin - 1.0f, 0.0f); // Set model matrix for rendering. bgfx::setTransform(mtx); @@ -568,7 +575,7 @@ public: for (uint32_t ii = 0; ii < m_numTextures3d; ++ii) { - bx::mtxTranslate(mtx, xpos + (ii+3)*2.1f, -size+6.5f, 0.0f); + bx::mtxTranslate(mtx, xpos + (ii+(BX_COUNTOF(m_textures) - m_numTextures3d)*0.5f)*2.1f, -sizeY + margin + 1.0f, 0.0f); // Set model matrix for rendering. bgfx::setTransform(mtx); @@ -589,7 +596,7 @@ public: for (uint32_t ii = 0; ii < 4; ++ii) { - bx::mtxTranslate(mtx, xpos + (size-2.0f)*2.1f, -size+6.5f + ii*2.1f, 0.0f); + bx::mtxTranslate(mtx, sizeX - margin - 1.0f, -sizeY + margin + 1.0f + ii*2.1f, 0.0f); // Set model matrix for rendering. bgfx::setTransform(mtx); @@ -643,7 +650,7 @@ public: uint8_t m_gg; uint8_t m_bb; - bgfx::TextureHandle m_textures[9]; + bgfx::TextureHandle m_textures[12]; bgfx::TextureHandle m_textures3d[3]; bgfx::TextureHandle m_texture2d; bgfx::TextureHandle m_textureCube[3]; diff --git a/examples/runtime/textures/texture_compression_astc_10x5.dds b/examples/runtime/textures/texture_compression_astc_10x5.dds new file mode 100644 index 0000000000000000000000000000000000000000..5d839395484d2be9bbce85603d12785c163ef015 GIT binary patch literal 7648 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 H!Z7~@pP8r7 literal 0 HcmV?d00001 diff --git a/examples/runtime/textures/texture_compression_astc_4x4.dds b/examples/runtime/textures/texture_compression_astc_4x4.dds new file mode 100644 index 0000000000000000000000000000000000000000..ada6b45d92f13688c774966ec6b39fda04ae6543 GIT binary patch literal 22000 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 Q|EZT=x-@T|rzb`IUmr(qvH$=8 literal 0 HcmV?d00001 diff --git a/examples/runtime/textures/texture_compression_astc_5x5.dds b/examples/runtime/textures/texture_compression_astc_5x5.dds new file mode 100644 index 0000000000000000000000000000000000000000..bfce304225c9d59d0fbf736c63c6b6bda645fb36 GIT binary patch literal 14800 zcmcJ$d035W^f!J#&mK$hG*L?J(qt}4654H*O2bYvMB0^^C>f3+J-dNY*mh=8rxK2c zL#0F75;7l$qCjlKf9dob^U(tb-nK&Z`Wm5*8NQDbFZ~NYpt8RdyrrY zLWoCcA{ze0zr@b)8~pIqfBYZ+E`XJ6_~jPl==lG45uXzNfByMLx2pFCt5mB0*K!+D znIZIsYe(1;Nk|KcNEV3{hxN*jm)~~sf68TXOAu-%=~ZhYT&!b$o1aS>2cyQN+Ext} z&Sy_g%9PvYX+$RsAPB)6PknFwVYwuMe00BiHcxAJ)h!+{n8gjxPPP(XOfd?XcICXi zA?WGPL+0=tw_Y!uc>2;dERQtOXNx}`K6Ezr^ga<>|6q2bvoAltV&BV>$1N-ZMc1A_ z>&CBGIQ(UekrK;g`Dan`%yLoL(EI=%(fDAscsNn#T@e~L^g#eGJll8Fj9lW+%h&jW zEYh*8?TaO6M>pUO6Y%FGZos#b4c4Pya9YFSa|IfKh!*{0|rP>*>n z7ZLwMCXiZ-(Elx-IiyMjcY4x#oZqA++ktXPRXmcszVWQuYE~AdG-h$jkfPaw9{V+4 zzha1WvWV2!OrTCD;VebHt$ki8*pon#&T&~j#tBVYi`W<+*|)y~Hgk(g^lLOo7MBnt z+laaE4ZnZL&#DfVy*T_S91(a2w>r}uC%V##R zV`k&mCZ>Pq`4eaWQDvvr+{Ku@0=@)ZV7)T$_)3<5=*2s`E1;HxNI;mu z17%nKSQt}gc`*Pvush9=m*Kab`mV0|sxFgUGB6I&!}>eMU3dQD^p^c#?}2n-5SvP& z3(c3-R^k1w72OeVz(+6PBj5x6BHTGl=DtI@=bu_r1GpcdsCgQuDC>FM_OZIF8QUw$ zWf8~mN5%QHw76}serTrqaj%6dCuKj#VGYb7!#tDUxaqcL+?+eQDo0C1o{B8rE*4$r z(5WtXO;?J@J)7?O%^W&;v+3NC%jrtE-81ZWr?tOkLYlS)*xTIdCLz$yp>uYOmYl=>vGBlVeK-Cc{rt>N&qbtEdRH$m zxX*v#{;1Hzx<3_p)Mb`oY%$ogA@C<2jJ>nG!Jhz+%wBxLK>s}JViCw{JiIZU>n~)8 z)p)AB051lgJjVaZy=s|A5eb9{_ID!U|1O*H&x=<(ep~s7 zkf)TneI*n-A?n%A{mvml?1h+Zkc6yH8b=wffvv3KbEg_y!Gc@#V@%wXkZ}fjZ z&Cyl&B93Q-g5xAv`0Sann|4_M0{I(vlnhP%dV2J_)g_r2&j$yxCn{>N_pMw9*XI`; z%Jo{Y_{*SiH3o(v(z|@D)Yq-y+HB7wJM>5q8JWYwY=#G*btMdZ$ncLD}Z zo!q6y7vAT^!+jy_>e$zNDszxmjO|n6anxS&bIaNpj#?+*JFunsaTzFGtyR`}06n>%&5N@$vfI4f~tfe=_5LfH&N4eXQII z@B=)AgHeXt2ueVE3J3!Gj|aMVfN+vO>V8WNmugpw+KZ$tYWu=o76-p%&mqE~ket-*hY>>Ca;?oOkSsLSVHGWq6H zrVS7KpYgl0{a_F2!yzFHgf)sOwlR6_xg@7}rE#Ly`)M(gF}}IvvX%~4b79$s#`eTN z7Qp^#KFOvi;cmm%0nYZnX$A1!yoH=Tj&Bz^)!8LGGk|wDn@x$Q(bRC?a{HTWm8>Gw z)^g;PVsxTmWlQ2%5!uY$MR*D>bj+Q++>{=vWUX7%>8kTKWnXdE;iMZDA~N{Gh-;c| z7drM-=M1DPl`N-*^9}aT?q#knJ)0*K2a>KP8>_ts)9Y*F1|G831^bq-Wb6(0RNFgi zzS@7Vf8coKx)8@V@E0%e2ar{f*xx|z^`|V58GrNooxvw;9)l082N~@9PUXP0?I}0k zrt5Ep@lkPvgZvAQzN$Zaa3U+0jEP5RICtH;ZJnb|eN4(FSx!jtmOU<$`^WB66JY;K z31r#n5Qg(j`XV;QM|N~scg#o8kvq>uvmu@dYMR2Xw{<-2>gwo-#Qvq61M#+@oj|wBdfv3XdD_(^ zA`@9NGl8pxSl47uiNAo~-^c`=^dLWUybKaaMy$~-tg!C(P6IMpRW_(Pg0NJwc5eQm zq8bnGEmnmjRa=0)v({sODaP@Lv9B4(>iz#alW!WL{*y62Ss*`W@{t;k_)sQ3WNHLQ41qy>?WyiIwYs52QAZYh9C)pFD`IVLB<7bPPSOvX?YZ`^4})5&1ZA`!zNy zH+Q}EblW^ljK^{yFxk!vi$28Z#^U!ki9rb8?_}xnby$yz5lW(m`x>n(3B`C->L6Q& z4~$)(-vao|ts#(*;eWG?uwKukS3l=M8Q>Rx!~{|LXS}+%6-7K@p67wkNB*LGhfq~X zBvN%g#0)BX-@2~{KmHB&j+YQ%&s9u5Vei#3f#8*c@Tfmp6uv%4xyhlCdMq>w-UgXQ)Ccf*~eJ|pr8T#Asof0!N*4(!}epBBP5(9VE7|^Kk%VOhnFcb zcRC3Puq;MGxu2XwnrJ~9w!eadQjo-5vvG;l$3Vb`$cO6@rPF$7Zx6noNgP69I}T_? zRs=Elg_|N_!S2THgg*uwIk1&kDk&QI{;KI;b!W=V;Qp==1jMgZ>U;sRY8lbT2blO) z9?r;+pVav%Y#EWwE3v!!V-Rnt~v_rynY0#aY>W$+o6JY40f<24BI zVR6fm@NyDueK5CVZ`}JyB2qh+P?V1E-S6#Se{$(f{Yg_bOtiTpIVRZNE4KtG&o2{w zymOGrHqGH%^3$5s_S8Y;o@?9=2yJmAlzJ5FE91iU6>-sG@_C&gC!izioz$ka}s z-Ls}*d@2i?n5`m zi`ImiG=1v9V?#st;rdOC8jCKa6nIoxjMT;U=I0?4+hCe`Z#nIS@gcY2;8?wLd`UWf4r zA{xPeV&y*ScvapfL%hTO6c&l`DK5%{{KNQHpDa`B8$y2KiD>+N{`+YcW34836#sY% z_V50J37%zFqieQ*-wOF>(N?4w#$9J{>(i*aqqf2RUL-}GMoj)bkMlQyr0-68d|zl^ zqJMD!2{J9;)b;Sk;+P`+i@PCzhi4}Z6DMw3H*x;#c|&DbfA)m|lW)$RzS3LYJS|PI z8Bv1sO)fdqr*QHN#Sh<@B8MlK4`jssXkhY9cf$92xW6j?160hP$H{{x-)h^7^T%{U zME{{9xw*|)GBialH6)OEUqrJsfM*Z9b8M*W^Cd#2eM;qT4<4WT>iz*V1IVh-T% zMLa}{Tex!1NWZ68j{v_ct!A)?6~focjZx!*KLW1`{ZMz1!+s2U zrBoTfKOMgJ;mmKPVE-&XurKi8s33Lza1AAZuK}MHtMO3H1pfkjFkis6;YBV=^l^KI?=RIxLcHHBFKPpSXOSPg5qkPyo@d66 zA+X;tU!b@j)_h+$$ayH8L+WHc?l$X>(5!nVD;9Ud^U9~-__lt!{LXse3~c`?*#5we zd+~7f$9jlgRmBWnF!SuqS3bprtRkh%Jjqm3w3j9PvRN5|aJ+R42@gY+TIcVr_1FdZ z=F|Yfv*5WYnq$bH1@+6&xu`LP)5ouHz7ZEny}~2!@dwxv1~{I1&6!;HsFz=X{u|Fx zawGNg)!Y2e1yKJH!uqMl(EAH1$2L^fmIFT0hsH-2DC!0FmS9hi7d|u?JhhKc zGuXcO4blIoZ&;+E1494RH;|vMAk&72hBBgYe2u z%bxAe1{(#EOH{z$5V|+w#toZyJ6c$`H(lr)M$re|Z@jR`{i98=?z4&zTF!mG>3I)y z;#yd3Dpe=uA1!0|ImB)NyyDFOFO{m{>+@m);}>QFa(Q>a-w+QWzNq5E8#t(#nze-g zCjTgw6aRd^L%5wM-|u!mi^Z)&Rb6}0T3fxmoPh%9cWK8$eKSiqtBT3DV1Mf1>O@id zol4syTF4aRv-a3rmHp3r6E5&`q}V5;|ERPM%sq+YS#(`-Z@=an?gyA#ZR4 zp2H5q{Z+W$@3V)9?6f&T@Xf7#LvOq8nhpGHUSgV*EvR4{oplLSIW=&aFkX)*6x_X{ zGH&Sz;5BEnk?@u@cFny3G343+Ueg4iS2vTyP3|@Z4|`7$(-- zvfgQ?XK)1gKlCe~7hWVR2UflJj(7z9l-zau(spn)S`)PAaCu4=@4`sqL;+z9{js|6 z(NOQUO}jgT)z?1}k)!6h-s&&%<*ynZY83CHWCcWg$+8#dJp6M*$$_CzzeKJ6=4wu{ z&+hFm0sag1$PcKGDE1kz_7nSTY68h{*zbc7TGUv!;`5%9P|qxd_;l4!Cvu5xPR z!kW&FyYFE_8@k_~Z*gW~o8ZwGY;QrT@5+*>t5I!&;C8i~9#!I9T+}9*i}h^DbgWmc zcCf75J4;84y{qYzva9QAhlu129GN!8QaD9$-ge!>ZU^=|GjXGSW6b26G4VG#f8>%* z%aEW}+sYO4P4f@PHw51f=Nq=IK;JH03-=E>tL8pfa9-!C%x@{=%Wyi`N$k6G%H!~= zLxvC^2$b)AL9o13Q1&*?qz(5YS8d_c+`X?nzw15gCDuQ9nr-x7ypf^@p(bIIJ6;D` zLjNR!pH0v$5%l4bne8DbH4i{P4Ek@sat!@PW>4d1{{#K7!wZkZ45v}WTkFgo=!a>4 zyZdk!D+%HH#wE0c<-Bc!YC73h&nQ{WxZXdB`=JqKvBgT(>_zSI48HLt2O^*3kngH) ztA_FgzWjYUJ@J>JpFr-0enJKRW&Y!R8(c)>^aQTdT`-a#vTFSE^C}S;=u`-NzmG2l zl6q$sp9mc(r2WS(m^r4fO;D=F!yD}Hhw&-HvL*Nv;L!uJ8e_9)M>!v?~Uqy zP49fb3(p6@zVs<)rPuSDS(yKl4IF}g@iA;H=gXls<&&q0(0>;^v=RrL(;Z!zX7Bj{ z^opA2Vet<(G{n1((D7&by_2bh2W7eA$C|l&WBkU}FL{$$UtC%U{Su5{McQZI$sH|o z3!uM=_d}HNqTtN3<<5P2{{xNA)fZmx!Fa;`1fe&Bg3|9~?o1k)B!=hZtusi!5pC!x z)a35^3;Jam>sr?8;+~nKmMwfA(@(Qh=7SjVv5-zad`3(z-e*-+E|)csr;5X4%K_5Lo@y&bZMl{_cp2y$c67z2j4H`*bT-dHi@>pb{g@dKj}55TWticw6t z{B5Kz8h6ei$!e&R)}DTLZ35O;wZHiG;*reA;q!cO{!z6Fw0reFj9x@G4I=-hC(Pb< zBtcK>BlNG{ZKZ_Ho~7lIniH*CA>W0<7hM?rzTV4TP?{GfB6ZedKEU*E|DmCtlS**C zgX2#n>{r;I{cNjrJ;hW4L9%xV!Ct!JLbp^C!JjEyuk1$PYedRTgCtGfLR-bfC&0g@ z1iz)ku5Z6$S$|@YZ(n}F_PsM!vk)bV%OlEjA^t!uXn3~}Z4*08Ei;GtOSq6Tj2ccI zpZ(Xn`MJ;!BNW?hBs%Ee=Gz*BnvQ~Aa(}37p3rdXJwtm@0me^jn9M^q=bwN54^?c1 z_sy;k$ZF_X|NMR45aAsLU)P9PrI{l}wXdW_`1$9CJbk^hY(4g0s8=B#A8ilK#Qo1C z59ogqX!)s(iNuDvAGg;b=+`szq$l@u{7Y-xP)H!jLJ{#xo(R|1UJaAq8{Z~a@*2l4 zoPX5*vjWTDFTR*B#LI2v=K9J8)cOj%h*ErmczVEk=7aGrx6A#XZktVplMkn^q(7{% z$lFl1JKix2{D0Zj!*3S(qE*HoVR2xOa>VbN>6R+FZn=FXg8pte7b(vBZ&uBnoMVdP zjYkX;b_O3U`wj95EmpE@<{^|?mwCVN{I>VBkm)a=&RIDAU_8Md+QPz&8Of=^$=TKk znqV)S&)n<*Ujpr_5V47Sg7!LXU3=(}@$b3g{f;b3^;6JrccWG1L27(E?A)1oY5Zf% z2f2H0kJgvGxDYY%^efokNJ9I4QqNDv8(@3yncIx+ z;=Yx*l$dEc?PTD1z?YEtIf`$6qJ~$R=y1P)9?w%frTRlFXI~~3!+xV{9)^|2cQj`; zpaht|;(4s>_0FOugX#e&5aStLR=oJ=(bJdx^AzGX!F{ki@B@f%fCt34AdsQI0eG#B z>QP0cWSshqPv1}Gkea6!Y;IDr!r!=R{mDW;NN-{H@vi~AL)W<4^m6)aP<^%b&0r-f z@t1M#5eDo`+`r997m>5mn)z=7t=XaPN*q)hl&t&l1Cebp`-*XBVQ0h>;5+Eq5|7w~ z(ihXHWeP6fJ8a8gr=lI`Y%jibNYNEhx#Nq)xSNA$dl6a7g{hxE@Yl&B-(!3omjnL@ zPG{ngJLDUqNSyB`cc|wrz~?3+#kZO1nWsy4y%%EtFmrx+z6 zDcWTLdL6^n9tm2)?}XE5 zFuu{-g4-E<-xX(Kdk1amDx{M4y5>HOya)HEAKJ)tsZ5_`bLLtAzC>fPqxh4KzNts4 z{nou83vM}zr~diN#Q8_|a3TK}VSLyE@AN3}ACOD1r&xy1Th8R0HbHqWUcl%4u>Kme z9{3#NUx8#=WluLj3f(2vpF3)9N7&wdrvN;UdqBT%cB_q&6#0^X-tw-ufK*6e*RUFuZj4V*V-Vu?Z2{(#t66Pu;_0lcRurFrk0Ds(t+^cu7# zfCu@oOW*6@ZBc=IzSIKv^adm`YDuYIZ(p9|2JvQz90nMxA>Op}Al^VcUIG2U;J$ep z*w+!}9ewx$Uy$-49^Z)Odm=<~F@Mpe3f=k{3Daq=D7zJ8V(A!`Cf`je$X|MD6ZSu8 zzjs!I`;ClPmHjI$yZbrAyj#s5FrGdUu1$UC9Weey!!Z^s>XLO)v!8+cF&I ze})hIs+OnwL;!ySe>&bLWBvyCoM!M5q+-0To@o;ls%5}ejh{oW%-{$4%c(bhUhG|e znYka-Qw+WhR@ZKM?$(;Ht9hcbtEc*nk~O_D-Y}X#B+Y;6lf4M++34ConuSPY{&MHJ zkHAN_C*D&8@liz*W~_kkmrWe|-ZfIp>meyGSD!nx|VzzpzgVMVpS8Tj{> za4m!Jp(Sk_M5GPtnxbg5wbs6OPIVpeI390IvR=~fXFPt6Qo8m|eKGW}f^8uvLPRc0 zMCknJ&8q4PI39~g4`YPdsS6#Z)p*{mWLbrx#)H9X{(${==X$_boo_)8_Qv_vd2-j! ze5(QYGVvJaTZqSE!IQZD5RU~o9^-rq{b5Z_-qNLlFJH#B33fIy{*#LB*#mrS_rDk~ zHJ`@*qK9Q1|9~H0y#Zriz;k6G<4=cr*E9SA@L=#}@)_U-_?oNn0zB30bJf=aK7cpq zPk;>ms>TcCQR?-*`A?0%&?0<#pFcDH&g4gYeGGrVUpLHAqd1(UN$=a>+`>vVQAHA) zz+Y)J`rAh(YuX#veiR!4jc*!mFhcoz1{<| zmxxT>N}$Vw95x%xwOF14=Xa$4VEYT@7e}38>?y@~LH_C6?;MbEKDroH=#A~Yy;q+e z<;2uW8fyH0uJ4Csh?h+L1nYP9;)m-ejPIU4xz|7Usn=tFWc-!E8}McP5w6b!Jv?8Y z9#zD=UlxNej>l^MRpTvD%dnqp7`;Tzci?#=)H23<1%5u`?|u7kbp_y?%12kXd1xZr z=xPn6LcV;1{P@QKygj$wwG)=pXY}eHkGeT4kgTrB zoa#I0zj%D0>tDC(B6d-~dNbz}=}Ol1_<;i3DJ10EU7a~k8aN-#mNx3`x)U6;#Y9h{ z5B2jhvqiHuqothT2UP7#aXhYS-YZI7!5TSjeA4hX0W{NCk#N2PpVz_X4L~M9F5btS z?@-JC!1GVU5GntyD8}~gZORp$(XSpO;5@+-SBheR1rk1aw1fXTH%DF>GLiGKX8nrGwd=jq_a~&5-tv{I$LlfP#7m4P{_#Rno-=r3e?|f{Q;zc+ z0eCBlm(II5YJ9P(5b%WcLbiaUhyrFm@IWurHBXhfKPgthdJVjO;Ig!f9>wReeYLUP zLZBn#TQd6HShh5mQ{GR`mqY(b@27s;c^q%|;p=smrCxMbUvC8aLue_`r8Fw>{6LWT z^ZIe;d*FI=W`7Au0a3ZX*b3@YWpOc_k2=My$JfL9)e-yw@*F-onnX~VnwqM9 zEvzLyJ)s2D@bKef_bbSTDo5g|BK=-f`k}9`(2s`mi7?MVY-Wl2JmUZU{2}g7BSfv> zpl8ehS3D0@ytU+{>P_*TxF?5}+gegOgv6JHAj@f3+CqO*Q8|LDIha-BwlU~F1^JSg zG5wjBu%>E?WlVm1M3o_Rvc&>j+{gQxt$92Q>IH${Vhc^+qtSO4=iF!b<^*|;&KZMu zRaueyLC(H4MV!f4#vxvXNN zX7jz6c~tUbF}F6_)Njh8++XBxJt*{Sun)0)XBG?Qfg-Z>a52$esIn@%{oak%3M7qB zu2u!Hg#&9_k}|ovz~8D1j+RBVip%Zo_iQS^c>^hG(@ zN%N1#G<6h=1bRdCuI98Zo&De?r&_8QlyACEaS)i&6~kaqdll9uXVGHcPbAw{{nnD`xb)p zOuD1p({#3ffO;#Nt1I@DikoKg4BW>kStB;XfJBn&cwzJDyc^7X@Q@yo9F1PkriAl@ zFb{~It&85Ky!d+gYCbK7^ATB^(y8}jOt$I39D!nSPYYT9u)Pk7Bfa@X6HVa#G)ZM1 ziK?FQ1Svm`!Tu6@P8PVA7V6)5;b(y7g97ad7AZ6DZy5P%<(s4My`B%I4uot6$#~9{^+Ytu|w~hS#)tww-aS(qGjgYIN zojg-@j=e1gut@~OPau6 z%D>`yaB=T>7o>`R&CC}W8T$Du)vY6%C@1>n3Vw1^I-HM?sR)jzF+Rm=ck(m5FYAg@ zsCXsO;9vDYY`H9oM>p7_L)O9t360-gsr{vP7?HZq82bxcFAjNAPt9uR;Gpxtz%Nws zcZQ%jnJp!M@KR5VFR?JX3{ zQx0Xbb!AA{_B%T<-XaU;Jxu?TnzuY-%RHE^TV%BS3c=q}kyViqVv&mHNu;VDEttX` ztNC&ZoKNF{zZi1Ig-)9|;`XFtxIZGSeS2#Yd!3o%S8v!~gn%o)M_0zVY|l+ z&T}1p1pNTV1>}#X;;5-L!Z-r@3ytk#vXrsK%{H|oB;`2%-XCw_mvVMg!3{Xx53)t| zzoJ(9y?8rfi*zAgSwpN*1U2Lj!pdrOQfi zKOvVKv*~jK0q5sVw%14FeoN}zyVv#2(SCZ0B1X{O!s@pUpI8_2hnuVl-RSbDb!4;+ z@%Gt3r!jEwyE*yi=?e8kB% zwUprcnQuA<(HfQP;aja={RT3vH7a5_s;d^QjAzdGBM;|n9W++uW;=K7F3>mLn3BCk zb8JNMkhzyGgDluSoVvMtZ&N{A6x$oyLwoUzS*bUov={l(V*I`I;2OHvf~v_zng=5I zCRC&8a-w}7RdbS%e}?+C2TTmzn*8CxI`J+Mq_K+Y3zJBG22!FEG@R%Bu?gvn=RBFW zQd6(#=zU%kJ&&6?FCcp)F9D^_xz7tmpFDDpq?3t*Jx0hZ19(z|l=OmUA8f~5(`1AF zrCQ?EfvvP{-~ePx0)A30Mb#kB7^Xk8O#$yuPAW{$wmuE zn{yn#hprqU8IE3fiwazaLVul@!*dbGnClFFFeES$`mx~>&J@9X?XeNZu5PUAY+#>a40ttgj7F>ap-Jlc{?V&7w$rKQY~(cTwv}zC&$nGlmY>R%RKVeP z;jr+Af3GT8K`K|G)e7yTdj=iK0sg=F`#6DaF{^aJzgiBzC#~TN?Dqd<{1mOhSUY0DB|^ zLceILx?iSYJ%)|=KGKu>-HYA>|HJ(XsMnZ&74Wy@Hy}ej*4zI@$v^or!`D%2Z+}Bw zZ$bQZgO&^QR)_cge-oEoKkX6J=@i4?ow^VB^k-ZTFIorn@P^l_a3q9FXmoSJGN_-v z$Fpb-@)DZmm4w6m)uS8iafUcnJ!?$tQ0T8Uprf}%uC&7kHx)VTi1tE>N5g3r65a0||)UjtC5 z&!*I8oLtO*pq^ps9SZnl59Yt{y_ovR+^x?u^$vWm&~ljkVsAaE{(d2O&eAaz^IvUj zFH1N1xlu*lxE?ZK><4-)kXN^%-F>pTy2f_4Yy+E39&mnmUqj&IzXte}!m{7Q*?XSo zpOT#D4&b@bw=Bh{`yc)u&eywg4d?55$uMEP4x} zkli=$RXj8FK9EIEWFOsrG7jhawFs@$szwsgGoG#k zyDY3nLl|zb@@}lM;rpi=je5Fv) z0IkrXXIZ~riWnGat3gSQC;3y9tJmPxgnj|Mmx6J$G+N=C9MH(x!M@M)I42Nhrg=mT zvCf!7J_3Gq)}PQ9R#G`nUjKfmX9l~vA8&wg>Y~`pk{RvsaWmM-)CZ00ugB=U)w0tO zodbL*Ynd6kIA!+>EumI9`J%L!`wOM9Bn~~Y&G82w)`47gwq?PYl)^7O2rH=4{{wvj^(tw=`KV<77h%ewz z3XAYP=e*`vUbTk$AN)z78=iX3eU1gL?+$=}{3nN#!3~5K9e^lA3Q=pUoWEQ8_o}B$ zy^7Lz1i!rgFRo7pY?-2EUPY16m_)GOqa{Xzg%c*53Jg+0#>I%esl`^v_soouD6rwu zh?ipT74%%HMs;KeqFS%*ZGTB-zE!G%|%} zM{3aiY`ekj_4+PS=%-0fJ0zd{&DqnR)}F8?f*oEtAKkn6;KAG$`&V{#5q~bAQZ{!I z*C2%1bW3a^#FME0&q}?ev$$iv)A7&X`TYc!9oJ78FEEe|Q1I0K7IN)?KX`SCEp8oc zf>h{lG&+7d{EOce>jio&?y@BuLu8t`l=NK_ZBF<7f44)2l9ED0RVwTs-x^KcZ#6_W zGnC5)e3I$4?vg5k7rCHOKX!(8M*QjBZ@J3B)-lBr!i7yMe!u7?)tdIdvdzrQ8vpqe uy+N!@@*P%aM7pyRoT-;77SUEGib5<;&o4?bHs8|syn=#&fZ$-2>VE-6^diy# literal 0 HcmV?d00001 diff --git a/examples/runtime/textures/texture_compression_astc_6x6.dds b/examples/runtime/textures/texture_compression_astc_6x6.dds new file mode 100644 index 0000000000000000000000000000000000000000..a1215b7f95daa5895dce5b333bbf8457cb914b38 GIT binary patch literal 10640 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 C$zO8- literal 0 HcmV?d00001 diff --git a/examples/runtime/textures/texture_compression_astc_8x6.dds b/examples/runtime/textures/texture_compression_astc_8x6.dds new file mode 100644 index 0000000000000000000000000000000000000000..e205b999ce5a5afef1850065e6d67da54c0798a3 GIT binary patch literal 7728 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 Crf$yw literal 0 HcmV?d00001 diff --git a/examples/runtime/textures/texture_compression_atce.dds b/examples/runtime/textures/texture_compression_atce.dds new file mode 100644 index 0000000000000000000000000000000000000000..5d1cabd07db091747bb7b04b2b20b54fb7d7fd53 GIT binary patch literal 22000 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 K>Kl$o<9`8h<`U8X literal 0 HcmV?d00001 diff --git a/include/bgfx/bgfx.h b/include/bgfx/bgfx.h index 3aa013119..93aee62cf 100644 --- a/include/bgfx/bgfx.h +++ b/include/bgfx/bgfx.h @@ -183,7 +183,7 @@ namespace bgfx ASTC8x6, //!< ASTC 8x6 2.67 BPP ASTC10x5, //!< ASTC 10x5 2.56 BPP - Unknown, // Compressed formats above. + Unknown, // Compressed formats above. R1, A8, diff --git a/src/bgfx.cpp b/src/bgfx.cpp index 1e9a0f8cb..5e2e4a0f7 100644 --- a/src/bgfx.cpp +++ b/src/bgfx.cpp @@ -1404,6 +1404,9 @@ namespace bgfx TextureFormat::PTC14A, TextureFormat::PTC22, TextureFormat::PTC24, + TextureFormat::ATC, + TextureFormat::ATCE, + TextureFormat::ATCI, TextureFormat::BGRA8, // GL doesn't support BGRA8 without extensions. TextureFormat::RGBA8, // D3D9 doesn't support RGBA8 }; @@ -4467,6 +4470,15 @@ BGFX_TEXTURE_FORMAT_BIMG(PTC12A); BGFX_TEXTURE_FORMAT_BIMG(PTC14A); BGFX_TEXTURE_FORMAT_BIMG(PTC22); BGFX_TEXTURE_FORMAT_BIMG(PTC24); +BGFX_TEXTURE_FORMAT_BIMG(ATC); +BGFX_TEXTURE_FORMAT_BIMG(ATCE); +BGFX_TEXTURE_FORMAT_BIMG(ATCI); +BGFX_TEXTURE_FORMAT_BIMG(ASTC4x4); +BGFX_TEXTURE_FORMAT_BIMG(ASTC5x5); +BGFX_TEXTURE_FORMAT_BIMG(ASTC6x6); +BGFX_TEXTURE_FORMAT_BIMG(ASTC8x5); +BGFX_TEXTURE_FORMAT_BIMG(ASTC8x6); +BGFX_TEXTURE_FORMAT_BIMG(ASTC10x5); BGFX_TEXTURE_FORMAT_BIMG(Unknown); BGFX_TEXTURE_FORMAT_BIMG(R1); BGFX_TEXTURE_FORMAT_BIMG(A8); diff --git a/src/renderer_d3d11.cpp b/src/renderer_d3d11.cpp index 373021e9a..999824265 100644 --- a/src/renderer_d3d11.cpp +++ b/src/renderer_d3d11.cpp @@ -218,7 +218,6 @@ namespace bgfx { namespace d3d11 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ASTC8x6 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ASTC10x5 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // Unknown - { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // Unknown { DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // R1 { DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // A8 { DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // R8 diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index 8c1fc7ba5..862ba5faa 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -195,7 +195,6 @@ namespace bgfx { namespace d3d12 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // PTC14A { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // PTC22 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // PTC24 - { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // PTC24 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ATC { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ATCE { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ATCI diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 609880bd5..07b6c8806 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -201,6 +201,15 @@ namespace bgfx { namespace gl { GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT, GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, GL_ZERO, false }, // PTC14A { GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG, GL_ZERO, GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG, GL_ZERO, false }, // PTC22 { GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG, GL_ZERO, GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG, GL_ZERO, false }, // PTC24 + { GL_ATC_RGB_AMD, GL_ZERO, GL_ATC_RGB_AMD, GL_ZERO, false }, // ATC + { GL_ATC_RGBA_EXPLICIT_ALPHA_AMD, GL_ZERO, GL_ATC_RGBA_EXPLICIT_ALPHA_AMD, GL_ZERO, false }, // ATCE + { GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD, GL_ZERO, GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD, GL_ZERO, false }, // ATCI + { GL_COMPRESSED_RGBA_ASTC_4x4_KHR, GL_COMPRESSED_SRGB8_ASTC_4x4_KHR, GL_COMPRESSED_RGBA_ASTC_4x4_KHR, GL_ZERO, false }, // ASTC4x4 + { GL_COMPRESSED_RGBA_ASTC_5x5_KHR, GL_COMPRESSED_SRGB8_ASTC_5x5_KHR, GL_COMPRESSED_RGBA_ASTC_5x5_KHR, GL_ZERO, false }, // ASTC5x5 + { GL_COMPRESSED_RGBA_ASTC_6x6_KHR, GL_COMPRESSED_SRGB8_ASTC_6x6_KHR, GL_COMPRESSED_RGBA_ASTC_6x6_KHR, GL_ZERO, false }, // ASTC6x6 + { GL_COMPRESSED_RGBA_ASTC_8x5_KHR, GL_COMPRESSED_SRGB8_ASTC_8x5_KHR, GL_COMPRESSED_RGBA_ASTC_8x5_KHR, GL_ZERO, false }, // ASTC8x5 + { GL_COMPRESSED_RGBA_ASTC_8x6_KHR, GL_COMPRESSED_SRGB8_ASTC_8x6_KHR, GL_COMPRESSED_RGBA_ASTC_8x6_KHR, GL_ZERO, false }, // ASTC8x6 + { GL_COMPRESSED_RGBA_ASTC_10x5_KHR, GL_COMPRESSED_SRGB8_ASTC_10x5_KHR, GL_COMPRESSED_RGBA_ASTC_10x5_KHR, GL_ZERO, false }, // ASTC10x5 { GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, false }, // Unknown { GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, false }, // ATC { GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, false }, // ATCE diff --git a/src/renderer_gl.h b/src/renderer_gl.h index 60d0f9dca..cd67208a0 100644 --- a/src/renderer_gl.h +++ b/src/renderer_gl.h @@ -457,6 +457,66 @@ typedef uint64_t GLuint64; # define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 #endif // GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT +#ifndef ATC_RGB_AMD + #define GL_ATC_RGB_AMD 0x8C92 +#endif + +#ifndef GL_ATC_RGBA_EXPLICIT_ALPHA_AMD +# define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#endif + +#ifndef ATC_RGBA_INTERPOLATED_ALPHA_AMD +# define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif + +#ifndef GL_COMPRESSED_RGBA_ASTC_4x4_KHR +# define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#endif + +#ifndef GL_COMPRESSED_RGBA_ASTC_5x5_KHR +# define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#endif + +#ifndef GL_COMPRESSED_RGBA_ASTC_6x6_KHR +# define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#endif + +#ifndef GL_COMPRESSED_RGBA_ASTC_8x5_KHR +# define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#endif + +#ifndef GL_COMPRESSED_RGBA_ASTC_8x6_KHR +# define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#endif + +#ifndef GL_COMPRESSED_RGBA_ASTC_10x5_KHR +# define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#endif + +#ifndef GL_COMPRESSED_SRGB8_ASTC_4x4_KHR +# define GL_COMPRESSED_SRGB8_ASTC_4x4_KHR 0x93D0 +#endif + +#ifndef GL_COMPRESSED_SRGB8_ASTC_5x5_KHR +# define GL_COMPRESSED_SRGB8_ASTC_5x5_KHR 0x93D2 +#endif + +#ifndef GL_COMPRESSED_SRGB8_ASTC_6x6_KHR +# define GL_COMPRESSED_SRGB8_ASTC_6x6_KHR 0x93D4 +#endif + +#ifndef GL_COMPRESSED_SRGB8_ASTC_8x5_KHR +# define GL_COMPRESSED_SRGB8_ASTC_8x5_KHR 0x93D5 +#endif + +#ifndef GL_COMPRESSED_SRGB8_ASTC_8x6_KHR +# define GL_COMPRESSED_SRGB8_ASTC_8x6_KHR 0x93D6 +#endif + +#ifndef GL_COMPRESSED_SRGB8_ASTC_10x5_KHR +# define GL_COMPRESSED_SRGB8_ASTC_10x5_KHR 0x93D8 +#endif + #ifndef GL_COMPRESSED_RGBA_BPTC_UNORM_ARB # define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C #endif // GL_COMPRESSED_RGBA_BPTC_UNORM_ARB diff --git a/src/renderer_mtl.mm b/src/renderer_mtl.mm index d4acba735..f8ba20740 100644 --- a/src/renderer_mtl.mm +++ b/src/renderer_mtl.mm @@ -262,6 +262,24 @@ namespace bgfx { namespace mtl { MTLPixelFormat(166/*PVRTC_RGBA_4BPP*/), MTLPixelFormat(167/*PVRTC_RGBA_4BPP_sRGB*/) }, // PTC14A { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // PTC22 { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // PTC24 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ATC + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ATCE + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ATCI +#if BX_PLATFORM_IOS + { MTLPixelFormatASTC_4x4_LDR, MTLPixelFormatASTC_4x4_sRGB }, // ASTC4x4 + { MTLPixelFormatASTC_5x5_LDR, MTLPixelFormatASTC_5x5_sRGB }, // ASTC5x5 + { MTLPixelFormatASTC_6x6_LDR, MTLPixelFormatASTC_6x6_sRGB }, // ASTC6x6 + { MTLPixelFormatASTC_8x5_LDR, MTLPixelFormatASTC_8x5_sRGB }, // ASTC8x5 + { MTLPixelFormatASTC_8x6_LDR, MTLPixelFormatASTC_8x6_sRGB }, // ASTC8x6 + { MTLPixelFormatASTC_10x5_LDR, MTLPixelFormatASTC_10x5_sRGB }, // ASTC10x5 +#else + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC4x4 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC5x5 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC6x6 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC8x5 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC8x6 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC10x5 +#endif { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // Unknown { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // R1 { MTLPixelFormatA8Unorm, MTLPixelFormatInvalid }, // A8