Rich Geldreich
374a04d54d
Merge pull request #134 from cwoffenden/transcoder-xcode
...
Xcode 11 transcoder warnings removed
2020-05-06 19:59:59 -04:00
Rich Geldreich
525458ae82
Merge pull request #137 from ondys/patch-2
...
Fixed undefined behavior in BASISU_OFFSETOF
2020-05-06 19:56:56 -04:00
richgel999
a1689504ea
Huffman encoder fixes for very large streams
...
Allowing Huffman decoder to use different fast bits table sizes
Adding NV and AMD BC1 decoders
2020-05-05 23:10:21 -04:00
richgel999
bb64ec604c
Renaming USE_UNALIGNED_WORD_READS to BASISD_USE_UNALIGNED_WORD_READS.
...
Setting BASISD_USE_UNALIGNED_WORD_READS to 0 for WebAssembly builds.
Renaming IS_BIG_ENDIAN to BASISD_IS_BIG_ENDIAN.
2020-05-05 22:40:40 -04:00
Ondrej Stava
57ca9acadd
Fixed undefined behavior in BASISU_OFFSETOF
...
The original implementation was dereferencing a nullptr which is an undefined behavior according to the C++ spec. It was triggering some automatic errors during our sanitizer tests (asan with nullptr check).
The fix replaces the offset with standard implementation of offsetof that uses compiler built in instructions when available (avoiding the undefined behavior).
2020-04-28 11:11:10 -07:00
Carl Woffenden
5c11484595
Xcode 11 transcoder warnings removed
...
With the default Xcode 11 settings, these non-functional changes remove warnings when building for iOS and Mac, notably:
Possible misuse of comma operator here
Implicit conversion loses integer precision: 'long' to 'int'
2020-04-21 19:11:10 +02:00
Carl Woffenden
ec00f06e81
Removed unused macro around now commented 'max_bits' vars
2020-03-21 12:05:38 +01:00
Carl Woffenden
a8bbc031f1
Revert "Removed unused macro around now commented 'max_bits' vars"
...
This reverts commit 0a7098a231 .
2020-03-21 12:04:33 +01:00
Carl Woffenden
0a7098a231
Removed unused macro around now commented 'max_bits' vars
2020-03-21 12:03:47 +01:00
Carl Woffenden
5b2d795617
Merge branch 'master' into single-file-transcoder
2020-03-21 11:48:33 +01:00
Aaron Franke
2a58642381
Make file formatting comply with POSIX and Unix standards
...
UTF-8, LF, no BOM, and newlines at end of files
2020-03-21 02:44:10 -04:00
Carl Woffenden
3953f6099a
Merge branch 'master' into single-file-transcoder
2020-03-20 19:40:30 +01:00
Rich Geldreich
5b6eb565e4
- Adding UASTC support to encoder, transcoder, .basis file format
...
- Removing BC7 mode 6 support from transcoder (will alway use the much smaller mode 5 tables now)
- Adding BMP support
- Adding -bench mode, for development
- CMakeLists.txt file now compatible with Visual Studio 2019 (MSVC)
2020-03-20 02:00:34 -04:00
Rich Geldreich
93fc3a8fc6
new files
2020-03-20 01:57:23 -04:00
Carl Woffenden
0cc6736a3e
Merge remote-tracking branch 'upstream/master' into single-file-transcoder
2020-01-05 13:16:03 +01:00
richgel999
82eee2eda7
Fixing BASISD_SUPPORT_ATC so if it's set to 0 we check to make sure PVRTC2 is also set to 0
2020-01-03 20:50:43 -08:00
Vladimír Vondruš
176df98c3e
Don't require the huge BC7m6 tables if this format is disabled.
...
The 1.3 MB file might be considered excessive when bundling the
transcoder sources in another project, don't require it to be present
when not needed.
2019-11-01 17:26:41 +01:00
Carl Woffenden
a5c36a5291
-x included error if used
...
The -x include files error if used (saying they were excluded). Changed the trancoder to surround the BC7 mode 6 include with guards.
2019-09-30 15:15:13 +02:00
Carl Woffenden
b48087bab8
Merge remote-tracking branch 'upstream/master' into single-file-transcoder
2019-09-30 11:46:21 +02:00
richgel999
01d391cc2a
PVRTC1 apparently always use wrap addressing when fetching the adjacent block colors (even when clamp texture addressing is being used), so we don't need the wrap vs. clamp option anymore. It's always wrap and that's that.
2019-09-29 19:34:00 -07:00
Carl Woffenden
ac73849b0e
Fixes more -Wunused-parameter warnings
...
These unused params occur when disabling various transcode options.
2019-09-28 07:04:29 +02:00
Carl Woffenden
a6bd48a16c
Minor Clang fixes
...
Minor fixes so that Clang doesn't trip with `-Werror` and `-Wextra`.
2019-09-28 07:04:29 +02:00
richgel999
11f46d74af
New files
2019-09-26 23:36:54 -07:00
richgel999
54304fa014
- Adding PVRTC2 RGB/RGBA and ETC2 EAC R11 and RG11
...
- Renaming -no_auto_global_sel_pal to -auto_global_sel_pal, disabling global selector palette usage by default to speed up compression on small images
- Renaming texture format enums
- Fixing uninitialized memory issue in front end - it wouldn't have affected the correctness of the output, or output quality
- Bumping command line tool up to v1.10
2019-09-26 22:35:14 -07:00
richgel999
c2869ffecc
Adding uncompressed pixel support to transcoder wrappers in webgl/transcoder/basis_wrappers.cpp. Note uncompressed hasn't been tested yet, but I've verified that compressed still works.
2019-09-19 21:39:57 -07:00
richgel999
33bf902b01
Development message fixes
2019-09-19 20:00:54 -07:00
richgel999
36676e29eb
When BASISD_SUPPORT_BC7 is defined and set to 0, we disable all the BC7 modes so the WebAssembly/Javascript transcoder doesn't get bloated. I'm going to disable BC7 mode 6 by default in the next minor update.
2019-09-19 13:42:51 -07:00
richgel999
b67956e5b7
Adding new files
2019-09-19 13:17:57 -07:00
richgel999
3629438d43
Transcoder update: ASTC 4x4 RGB/RGBA, ATC RGB/RGBA, BC7 mode 5 RGBA, PVRTC1 4bpp RGBA, and uncompressed raster formats.
2019-09-19 12:29:44 -07:00
Squareys
2df7937bbf
Add BASISU_NO_ITERATOR_DEBUG_LEVEL symbol to avoid debug level mismatches
...
Signed-off-by: Squareys <squareys@googlemail.com >
2019-07-07 22:48:27 +02:00
Brad Davis
fccfdd93ef
Properly disable copy ctor and assignment operator
2019-06-15 10:31:21 -07:00
Rich Geldreich
7d784c7288
Correcting the copyright date, as all of the Basis Universal code was written during/after April '19.
2019-06-09 18:29:41 -07:00
richgel999
ab722fa2e1
- Adding support for skip blocks, i-frames and p-frames to the backend and transcoder, for texture video use.
...
- For PVRTC1, we now memset() any extra blocks after the blocks we know will be transcoded into. This is done because in GL there is padding that occurs on textures smaller than 8x8.
- Removing all OpenMP usage and replacing it with a basis C++11 job system.
- Fixing TSVQ class so it can split very long "thin" clusters that before weren't being split. This improves endpoint quantization on videos and complex 2D textures.
- More frontend perf. optimizations.
Tested on OSX, Linux with gcc/clang, and Win using MSVC 2019.
2019-06-07 20:35:38 -07:00
Rich Geldreich
c180a087b9
Minor transcoder update: Adding support for arbitrary output texture row pitches, for usage with the Vulkan rendering API.
2019-05-28 15:41:16 -07:00
Arseny Kapoulkine
f5d502912d
Make codec options externally configurable and remove BC7 support
...
This change makes it possible to exclude formats using compile time
options. BC7 is *never* exposed on the web and it has an absolutely huge
coding table which means we're just wasting space.
basis_transcoder.js 58707
basis_transcoder.wasm 224404
2019-05-22 20:57:17 -07:00
Arseny Kapoulkine
af8f9f8bc4
Remove assert(x) hack in favor of NDEBUG
...
basis_transcoder.js 140999
basis_transcoder.wasm 832985
2019-05-22 20:51:29 -07:00
Rich Geldreich
1afb8e714b
Fixing BASISU_DEVEL_MESSAGES for MSVC.
2019-05-10 22:33:52 -07:00
Rich Geldreich
81464a6d6b
Changing the ETC1S->BC4 and ETC1S->ETC2 EAC transcoders so they convert from the source red channel, not source green. Source red makes more sense when transcoding to BC4/BC5, especially when the source texture only has color slices. BC4 is red, and BC5 is red/green. This change makes no difference if the source texture slices are grayscale.
2019-05-10 22:04:48 -07:00
Rich Geldreich
4f08db6525
Adding more checks to canonical Huffman decoder's table initialization function. They don't seem necessary, as I didn't discover them during fuzzing. These fixes are precautionary.
2019-05-10 16:30:25 -07:00
Rich Geldreich
878f523522
Adding check to make sure codelength Huffman table was actually created successfully.
2019-05-09 22:14:23 -07:00
Rich Geldreich
ce9aeb9cc8
Refining the last Huffman fix found through fuzz testing
2019-05-09 22:00:59 -07:00
Rich Geldreich
9af44e629f
Another fuzz testing fix
2019-05-09 21:49:07 -07:00
Rich Geldreich
6da5bf05a6
Another bugfix found during fuzz testing
2019-05-09 20:40:41 -07:00
Rich Geldreich
f83ee300a3
Adding more header checks
2019-05-09 18:09:47 -07:00
Rich Geldreich
85f4651def
Fixing mipmap bug introduced from a fuzz test fix
2019-05-09 17:57:14 -07:00
Rich Geldreich
3347b17393
Another fuzz testing fix
2019-05-09 15:05:12 -07:00
Rich Geldreich
78e22234bd
More transcoder fixes found during fuzz testing (I disabled all header/data CRC checking by setting BASISU_NO_HEADER_OR_DATA_CRC16_CHECKS to 1).
2019-05-09 14:43:13 -07:00
Rich Geldreich
d7b22fc404
Adding -fuzz_testing command line option, which disables the file data CRC16 check used by the -validate command. To fuzz testing using zzuf on Linux:
...
zzuf -d -c -s 1000000:2000000 ./basisu -validate -fuzz_testing kodim23.basis
2019-05-09 12:43:59 -07:00
Rich Geldreich
c7e14a97fa
- Fixing minor block artifacts on pure 2 color B&W blocks when transcoding to BC1/BC7. This was caused by the ETC1S blocks using extreme ETC1S settings: codetable 7 (the one with the largest intensity deltas), using blocks with selectors that took up the full range (0-3), but the blocks only actually used the two outlier colors (0 and 3 only). The ETC1S->BC1/BC7 table based format conversion system doesn't realize that only the outlie colors were going to be used (i.e. not all 4 colors, just the outer 2), and so the quality of the transcoded block suffered because pure black could not be mapped. In BC7 mode, we now switch to pure BCT (block truncation coding) for any blocks with <= 2 unique colors, independent of their selectors.
...
- Adding -csv_file option, to generate .csv files for mass benchmarking/testing
- Adding -no_ktx option, to avoid writing large .KTX files while unpacking
- Fixing printf() format issue when one of the -multifile options wasn't correct
Rebuilt compiled javascript transcoder
2019-05-09 10:44:38 -07:00
Rich Geldreich
d699c819f7
Moving g_hamming_dist[] array from transcoder to encoder (it's never used by the transcoder).
...
Adding remarks to basisu_file_header.h
2019-05-08 20:01:35 -07:00