v4.4.0 #1006
MarkCallow
started this conversation in
General
v4.4.0
#1006
Replies: 2 comments 4 replies
-
|
@MarkCallow Thank you very much! 🙂 |
Beta Was this translation helpful? Give feedback.
1 reply
-
|
Hey, the assets contain tarball releases for Linux but only a NSIS installer for Windows ? To be integrate into a build pipeline, this would need to be installed or extracted via 7-zip. Is there a reason to not also publish a zip for the windows assets ? The vcpkg package would work but apprently it doesn't contain include/ktxvulkan.h or symbols for i.e. Thanks |
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
ktx compare.write functionality of libktx and includes an expanded test suite.
With the new tools and features the KTX tool suite now provides a superset of the functionality found in the legacy tools with the exception of
ktx2ktx2. The legacy tools, exceptktx2ktx2will be removed in Release 4.5. Adjust your workflows accordingly.New Features in 4.4
Command Line Tools Suite
Two tools have been added to the
ktxsuite in v4.4 and two tools have significant new functionality.ktx comparektx deflatektxscktx create--assign-texcoord-origin,--convert-texcoord-origin,--normalize,--scaletoktxktx encodektxsclibktx functions
ktxTexture2_DecodeAstcdecodes an ASTC format texture to an uncompressed format.ktxLoadOpenGLso an application can explicitly make the library load the GL function pointers, that it uses, using an application providedGetProcAddressfunction. Use of this is recommended on any platform but it is most helpful on platforms such as Fedora where generic function queries are unable to find OpenGL functions.ktxTexture2_Write*andktxTexture[12]_Destroyfunctions are now part of the public API.Notable Changes in 4.4
Alignment with KTX Specification Revision 4
Transfer function handling in
ktx createhas been revamped to support the flexibility of using almost any transfer function with non-sRGB formats that was introduced in Revision 1 of the KTX Specification.ktx createnow allows setting a primaries value of "none",KTX_DF_PRIMARIES_UNSPECIFIED, which is required for certain formats in Revision 4 of the KTX Specification.libktx now retains the values of the
bytesPlane[0-7]fields in the DFD when supercompressing files as required following alignment of KTX Specification Revision 4 with Khronos Data Format Specification version 1.4. It will load supercompressed files with either zero or non-zerobytesPlanevalues.ktx validatorwill report a warning on files with zerobytesPlanevalues.Command Line Tools Suite
The following functionality has changed.
ktx create--assign-oetf→--assign-tf*,--convert-oetf→--convert-tf.*--compare-ssimand--compare-psnrcan be used when encoding to ASTC.Non-raw input images can be resized by specifying the desired size with
--widthor--height.ktx encode--compare-ssimand--compare-psnrcan be used when encoding to ASTC.* Options renamed due to revamped functionality.
Javascript binding
The Javascript binding has been almost completely rewritten to support the read and write functionality of libktx. A test suite has been added that also serves as an example of how to use the functions.
LIBKTXtocreateKtxModule(andcreateKtxReadModule). The old name is provided as an alias. Be aware that using the alias corresponds tocreateKtxModuleso you will get the full functionality.ktxprefixes have been removed from the only existing class that had it,ktxTexture. None of the new classes have a prefix.ktcTextureis provided as an alias totexture. Recommended usage is to assign the module instance returned by the factory function towindow.ktxor otherktxvariable making the prefixes unnecessary.ktx{,_}prefixes and_esuffixes for consistency and to make it easier to recall what the JS name will be.KTX_PACK_UASTC_LEVEL_FASTESTis simplyLEVEL_FASTESTand is referenced in JS aspack_uastc_flag_bits.LEVEL_FASTEST.Java binding
The Java binding has been greatly improved by a large refactoring focussing on error handling, documentation, completeness, and usability improvements ( #886 ). This includes several breaking changes. Not all breaking changes can be listed here explicitly. But in all cases, it should be easy for clients to update their code to the new state. The most important changes for the Java Wrapper are listed below.
KtxCreateStorageclass was renamed toKtxTextureCreateStorage;KtxPackUASTCFlagBitsclass was renamed toKtxPackUastcFlagBits.IllegalArgumentExceptionwill be thrown;KtxExceptionwill be thrown.Massive thanks to @javagl for this work.
ASTC Encoder
Known Issues
Files deflated with zlib using libktx compiled with GCC and run on x86_64 may not be bit-identical with those using libktx compiled with GCC and run on arm64.
Users making Basis Universal encoded or GPU block compressed textures for WebGL must be aware of WebGL restrictions with regard to texture size and may need to resize input images appropriately before using the
ktx createtool, or use the--resizefeature of the oldtoktxtool to produce an appropriately sized texture. In general, the dimensions of block compressed textures must be a multiple of the block size in WebGL and for WebGL 1.0 textures must have power-of-two dimensions. Additional portability restrictions apply for glTF per the KHR_texture_basisu extension which can be verified using the--gltf-basisucommand-line option of the newktx validatetool.Basis Universal encoding results (both ETC1S/LZ and UASTC) are non-deterministic across platforms. Results are valid but level sizes and data will differ slightly. See issue #60 in the basis_universal repository.
UASTC RDO results differ from run to run unless multi-threading or RDO multi-threading is disabled. In
toktxuse--threads 1for the former or--uastc_rdo_mfor the latter. As with the preceeding issue results are valid but level sizes will differ slightly. See issue #151 in the basis_universal repository.Neither the Vulkan nor GL loaders support depth/stencil textures.
Changes since v4.3.2 (by part)
libktx
Fix memory leaks. (Fix memory leaks. #1003) (0f0e065) (@MarkCallow)
Fix issues with ktxLoadOpenGL documentation. (0c1922d) (@MarkCallow)
Fix incorrect data types in libktx_mainpage.md examples (Fix incorrect data types in libktx_mainpage.md examples #992) (b35a478) (@Lephar)
Set bytes planes to non-zero for supercompressed formats. (Set bytes planes to non-zero for supercompressed formats. #988) (d4cad5f) (@MarkCallow)
Fix memory leak. (Fix memory leak. #991) (e0cf193) (@MarkCallow)
Add normalise option to command create (Add normalise option to command create #977) (2f69183) (@wasimabbas-arm)
Make ktxTexture2_Write functions public. (Make ktxTexture2_Write functions public. #985) (b330a2e) (@MarkCallow)
ktx create: Update transfer function handling (ktx create: Update transfer function handling #982) (7356c0d) (@MarkCallow)
Add vkformat checks to ktxTexture2_DecodeAstc (Add vkformat checks to ktxTexture2_DecodeAstc #967) (aa6af91) (@wasimabbas-arm)
Fix ktxTexture2_DecodeAstc error returns and document them. (Fix ktxTexture2_DecodeAstc error returns and document them. #961) (b619004) (@MarkCallow)
Fix ktxTexture2_DecodeAstc documentation. (c16537c) (@MarkCallow)
Encode astc support (Encode astc support #952) (d1ad5cd) (@wasimabbas-arm)
Expose ktxTexture2_GetImageOffset. (Expose ktxTexture2_GetImageOffset. #954) (99c324f) (@MarkCallow)
JNI improvements (JNI improvements #886) (2ee4332) (@javagl)
Add clang-format support (Add clang-format support #913) (110f049) (@MathiasMagnus)
Fix issues newly flagged by Doxygen 1.11.0 (Fix issues newly flagged by Doxygen 1.11.0 #925) (19c2f75) (@MarkCallow)
docs: clarify pointer lifetimes for ktxTexture_SetImageFromMemory (docs: clarify pointer lifetimes for ktxTexture_SetImageFromMemory #917) (b2cad1a) (@mjrister)
Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV (Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV #921) (7f3adf1) (@MarkCallow)
Add JS bindings for full libktx (Add JS bindings for full libktx #874) (562509c) (@aqnuep)
Fixes for strnlen and unicode string literals (Fix for strnlen #916) (759f49d) (@rGovers)
INVALID_OPERATION if generateMipmaps set when block compressing. (e5585e3) (@MarkCallow)
Expose ktxTexture[12]_Destroy. (7132048) (@MarkCallow)
Move self-hosted dependencies to
externalfolder (Move self-hosted dependencies toexternalfolder #909) (5fc739c) (@MathiasMagnus)Fix various issues surfaced by fuzzer (Fix various issues surfaced by fuzzer #900) (6063e47) (@florczyk-fb)
Expose supercompression functions via JNI (Expose supercompression functions via JNI #879) (7abffbd) (@javagl)
Add function for app to explicitly make libktx load its GL function pointers. (Add function for app to explicitly make libktx load its GL function pointers. #894) (0bca55a) (@MarkCallow)
Miscellaneous fixes (Miscellaneous fixes #893) (e31b3e5) (@MarkCallow)
Minor documentation fixes (Minor documentation fixes #890) (e7d2d71) (@javagl)
Merge ktx compare to main (Merge ktx compare to main #868) (6fcd95a) (@aqnuep)
Tools
Add resize and scale support to create Add resize and scale support to create #999 (75d8d04) (@MarkCallow)
Update for new commands and features. (350a631) (@MarkCallow)
Set bytes planes to non-zero for supercompressed formats. (Set bytes planes to non-zero for supercompressed formats. #988) (d4cad5f) (@MarkCallow)
Add normalise option to command create (Add normalise option to command create #977) (2f69183) (@wasimabbas-arm)
ktx create: Update transfer function handling (ktx create: Update transfer function handling #982) (7356c0d) (@MarkCallow)
Add --{assign.convert}-texcoord-origin option to ktx create (Add --{assign.convert}-texcoord-origin option to ktx create #976) (91e61d6) (@MarkCallow)
fix: INSTALL_RPATH for linux using lib64 (fix: INSTALL_RPATH for linux using lib64 #975) (ba97833) (@MinGyuJung1996)
Add vkformat checks to ktxTexture2_DecodeAstc (Add vkformat checks to ktxTexture2_DecodeAstc #967) (aa6af91) (@wasimabbas-arm)
Fix crash on loading EXR 2.0 input (Fix crash on loading EXR 2.0 input #973) (7a8cd47) (@MathiasMagnus)
Encode astc support (Encode astc support #952) (d1ad5cd) (@wasimabbas-arm)
Always use same method to set language version. (Always use same method to set language version. #947) (3439daf) (@MarkCallow)
Fix: ensure ktxdiff runs on macOS and enable CTS in Linux arm64 CI. (Fix: ensure ktxdiff runs on macOS and enable CTS in Linux arm64 CI. #946) (ffb9152) (@MarkCallow)
Fixing build on Ubuntu 24.04 w/ Clang 20 (Fixing build on Ubuntu 24.04 w/ Clang 20 #936) (33813d7) (@Honeybunch)
Fix issues newly flagged by Doxygen 1.11.0 (Fix issues newly flagged by Doxygen 1.11.0 #925) (19c2f75) (@MarkCallow)
Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV (Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV #921) (7f3adf1) (@MarkCallow)
Update astc-encoder to 4.8.0 (subrepo pull). (Update astc-encoder to 4.8.0. #918) (7fb646c) (@MarkCallow)
Move self-hosted dependencies to
externalfolder (Move self-hosted dependencies toexternalfolder #909) (5fc739c) (@MathiasMagnus)Fix man page issues introduced by PR Refactor common options #817 (Fix man page issues introduced by PR #817 #903) (0d1ebc1) (@MarkCallow)
Refactor common options (Refactor common options #817) (0a16df8) (@wasimabbas-arm)
Add
ktx deflatecommand (Addktx deflatecommand #896) (da97911) (@MarkCallow)Fixes to CLI error messages (Fixes to CLI error messages #891) (eac4b98) (@aqnuep)
Minor documentation fixes (Minor documentation fixes #890) (e7d2d71) (@javagl)
Merge ktx compare to main (Merge ktx compare to main #868) (6fcd95a) (@aqnuep)
Clarify description of --format argument for create when used with --encode (Clarify description of --format argument for create when used with --encode #873) (5414bd0) (@aqnuep)
JS Bindings
Align naming (Align naming #938) (a3cf1d5) (@MarkCallow)
Remove long ago deprecated items. (Remove long ago deprecated items. #926) (b1a115f) (@MarkCallow)
Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV (Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV #921) (7f3adf1) (@MarkCallow)
Add JS bindings for full libktx (Add JS bindings for full libktx #874) (562509c) (@aqnuep)
Move self-hosted dependencies to
externalfolder (Move self-hosted dependencies toexternalfolder #909) (5fc739c) (@MathiasMagnus)Java Binding
Java swizzle and constant fixes (Java swizzle and constant fixes #972) (3038f7c) (@javagl)
Add GL upload function to Java interface (Add GL upload function to Java interface #959) (bd8ae31) (@javagl)
Fix JNI function name for
getDataSizeUncompressed(Fix JNI function name forgetDataSizeUncompressed#957) (f3902db) (@javagl)JNI improvements (JNI improvements #886) (2ee4332) (@javagl)
Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV (Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV #921) (7f3adf1) (@MarkCallow)
Expose supercompression functions via JNI (Expose supercompression functions via JNI #879) (7abffbd) (@javagl)
Properly convert Java char to C char in inputSwizzle (Properly convert Java char to C char in inputSwizzle #876) (cc56485) (@javagl)
Python Binding
Set up workflow to build just the documentation. (Set up workflow to build just the documentation. #989) (a45ffed) (@MarkCallow)
Workaround removal of Python virtualenv in Actions runner 20240929.1. (Attempt to workaround venv failure in Actions runner 20240929.1. #950) (e304057) (@MarkCallow)
Bump setuptools from 69.0.2 to 70.0.0 in /interface/python_binding (Bump setuptools from 69.0.2 to 70.0.0 in /interface/python_binding #930) (f389108) (@dependabot[bot])
Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV (Update R16G16_S10_5_NV format to R16G16_SFIXED5_NV #921) (7f3adf1) (@MarkCallow)
This discussion was created from the release v4.4.0.
Beta Was this translation helpful? Give feedback.
All reactions