GithubHelp home page GithubHelp logo

alecazam / kram Goto Github PK

View Code? Open in Web Editor NEW
140.0 5.0 8.0 6.89 MB

Encode/decode/info to KTX/KTX2/DDS files with LDR/HDR and BC/ASTC/ETC2. Mac/Win C++11 too, Mac viewer, and scripts for batch processing textures.

License: MIT License

CMake 0.18% Shell 0.09% Python 0.27% C++ 77.64% Objective-C++ 1.17% C 10.17% Objective-C 1.39% Metal 0.45% POV-Ray SDL 7.58% Lua 0.01% HLSL 0.08% Rez 0.07% Swift 0.89%
ktx encoder astc bc etc2 textures scripting hdr mips sdf

kram's Introduction

The suite of kram tools below. I hope these improve your game, app, and art development.

kram-profile

Display profile traces (f.e. Perfetto) quickly in an application for optimizing memory, builds, and cpu/gpu timings https://github.com/alecazam/kram/tree/main/kram-profile

hslparser

Parses HLSL syntax and generates readable HLSL/MSL code without transpiling. DXC is then used to compile to spirv. https://github.com/alecazam/kram/tree/main/hlslparser

libkram.a, libkram-ios.a, kram.lib

C++11 library from 200 to 800KB in size depending on encoder options. Compiles for iOS (ARM), macOS (ARM/Intel), win (Intel).

kram, kram.exe

C++11 main to libkram to create CLI tool. Encode/decode/info on PNG/KTX/KTX2/DDS files with LDR/HDR and BC/ASTC/ETC2. Runs on macOS/win.

kram-thumb-win.dll

Windows thumbnailer for DDS/KTX/KTX2. Go to build or bin folder. Install with "regsvr32.exe kram-thumb-win.dll". Uninstall with "regsvr32.exe /u kram-thumb-win.dll"

https://github.com/alecazam/kram/tree/main/kram-thumb-win

kramv.app

ObjC++ viewer for PNG/KTX/KTX2/DDS supported files from kram. Uses Metal compute and shaders, eyedropper, grids, debugging, preview. Supports HDR and all texture types. Mip, face, volume, and array access. No dmg yet, just drop onto /Applications folder. Runs on macOS (arm64/x64). Generates Finder thumbnails and QuickLook previews via modern macOS app extension mechanisms.

Diagrams and screenshots can be located here: https://www.figma.com/file/bPmPSpBGTi2xTVnBDqVEq0/kram

Releases includes builds for macOS (Xcode 14.3 - arm64/x64/clang) and Windows x64 (VS 2022 - x64/clang). kramv for macOS, kram for macOS/Win, libkram for macOS/iOS/Win, win-thumb-kram for Win. Android library via NDK is possible, but f16 support is spotty on devices.

About kram

kram is a wrapper to several popular encoders. Most encoders have sources, and have been optimized to use very little memory and generate high quality encodings at all settings. All kram encoders are currently CPU-based. Some of these encoders use SSE, and a SSE to Neon layer translates those. kram was built to be small and used as a library or app. It's also designed for mobile and desktop use. The final size with all encoders is under 1MB, and disabling each encoder chops off around 200KB down to a final 200KB app size via dead-code stripping. The code should compile with C++11 or higher.

kram focuses on sending data efficiently and precisely to the encoders. kram handles srgb and premul at key points in mip generation. Source files use mmap to reduce memory, but fallback to file ops if that fails. Temp files are generated for output, and then renamed in case the app fails or is terminated. Mips are done in-place, and mip data is written out to a file to reduce memory usage. kram leaves out BC2 and etcrgb8a1 and PVRTC. Also BC6 still needs an encoder, and ASTC HDR encoding needs a bit more work to pull from half4/float4 source pixels.

Many of the encoder sources can multithread a single image, but that is unused. kram is designed to batch process one texture per core/thread via a python script or a C++11 task system inside kram. This can use more ram depending on the core count. Texture-per-process and scripted modes currently both take the same amount of CPU time, but scripted mode is best if kram ever adds GPU-accelerated encoding.

Similar to a makefile system, the script sample kramtexture.py uses modstamps to skip textures that have already been processed. If the source png/ktx/ktx2 is older than the output, then the file is skipped. Command line options are not yet compared, so if those change then use --force on the python script to rebuild all textures. Also a crc/hash could be used instead when modstamp isn't sufficient or the same data could come from different folders.

About kramv

kramv is a viewer for the BC/ASTC/ETC2 LDR/HDR KTX/KTX2/DDS textures generated by kram from LDR PNG and LDR/HDR KTX/KTX2/DDS sources. kramv decodes ASTC/ETC2 textures on macOS Intel, where the GPU doesn't support them. macOS with Apple Silicon supports all three formats, and doesn't need to decode.

kramv uses ObjC++ with the intent to port to Windows C++ as time permits. Uses menus, buttons, and keyboard handling useful for texture triage and analysis. Drag and drop folders, bundles, and click-to-launch are supported. Recently used textures/folders/bundles are listed in the menu. The app currently shows a single document at a time. Subsequent opens reuse the same document Window. With bundles and folders, kramv will attempt to pair albedo and normal maps together by filename for the preview.

Preview mode provides lighting, sdf cutoff, and mip visuals for a given texture. Multiple shapes can help identify inconsistent normal maps. The u-axis advances counterclockwise, and v-axis advances down on the shapes. +Y OpenGL normals are assumed, not -Y DirectX convention. Lighting appears up and to the right when normal maps are correctly specified.

In non-preview mode, point sampling in a pixel shader is used to show exact pixel values of a single mip, array, and face. Debug modes provide pixel analysis. KramLoader shows synchronous cpu upload to a private Metal texture, but does not yet supply the underlying KTXImage. Pinch-zoom and pan tries to keep the image from onscreen, and zoom is to the cursor so navigating feels intuitive.

Compute shaders are used to sample a single pixel sample from the gpu texture for the eyedropper. This simplifies adding more viewable formats in the future, but there is not a cpu fallback. Normal.z is reconstructed and displayed in the hud, and linear and srgb channels are shown.

Formats - R/RG/RGBA 8/16F/32F, BC/ETC2/ASTC,  RGB has limited import support
Container Types - KTX, KTX2, PNG
Content Types - Albedo, Normal, SDF, Height
Debug modes - transparent, color, non-zero, gray, +x, +y, xy >= 1
Texture Types - 1darray (no mips), 2d, 2darray, 3d (no mips), cube, cube array

⇧ decrement any advance/toggle listed below

? - show keyboard shortcuts
P - toggle preview, disables debug mode, shows lit normals, and mips and filtering are enabled
G - advance grid, none, pixel grid, block grid, atlas grid (32, 64, 128, 256),
D - advance debug mode
H - toggle hud
U - toggle ui
V - toggle vertical vs. horizontal buttons
I - show texture info in overlay
W - toggle wrap/address filter, scales uv from [0,1] to [0,2] and changes sampler to wrap/repeat
A - show all - arrays, faces, slices and mips all on-screen

1/2/3/4 - show rgba channels in isolation, alpha as grayscale
7 - toggle signed/unsigned
8 - toggle shader premul, shader does this post-sample so only correct for point-sampling not preview

R - reload from disk if changed, zoom to fit (at 1x with ⇧)
0 - fit the current mip image to 1x, or fit view.  (at 1x with ⇧).

Y - advance array 
F - advance face/slide
M - advance mip

S - advance shape mesh (plane, unit box, sphere, capsule), displays list, esc to get out of list
C - advance shape channel (depth, uv, face normal, vtx normal, tangent, bitangent, mip)
L - advance lighting mode (none, diffuse, diffuse + specular)
T - toggle tangent generation

↓ - advance bundle/folder image (can traverse zip of ktx/ktx2 files), displays list, esc to get out of list
→ - advance counterpart (can see png, then encodes if viewing folders).  Not yet finished.

Limitations

Texture processing is complex and there be dragons. Just be aware of some of the limitations of kram and encoding. Lossy compression can only solve so much. ASTC and BC4-7 are newer formats, but all formats have time and quality tradeoffs. And encoder quality and issues remain. WebGL is still often stuck with older formats due to lack of implemented extensions. And all formats need endpoints/selectors reordering and zstd compression that KTX2 offers. I added a platform called "any" to with KTX2 holding UASTC+zstd and also ETC2/ASTC/BC+zstd. The scripts bundle up textures in an archive, but these should go to resource packs and asset catalogs which get signed and can have ODR applied.

GPU - none of the encoders use the GPU, so cpu threading and multi-process is used

Rescale Filtering - 1x1 point filter
Mip filtering - 2x2 box filter that's reasonable for pow2, and a non-linear filters for non-pow2 so there is no pixel shift 
  done in linear space using half4 storage, in-place to save mem

1D array - no mip support due to hardware, no encoding
3D textures - no mip support, uses ASTC 2d slice encode used by Metal/Android, not exotic ASTC 3d format
    
BC/ETC2/ASTC - supposedly WebGL requires pow2, and some implementation need top multiple of 4 for BC/ETC2

These formats are disabled:
BC1 w/alpha - may re-enable 3 color for black + rgb
BC2 - not useful
ETC2_RGB8A1 - broken in ETC2 optimizations

BC1 - artifacts from limits of format, artifacts from encoder, use BC7 w/2x memory

ASTC LDR - rrr1, rrrg/gggr, rgb1, rgba must be followed to avoid endpoint storage, requires swizzles
ASTC HDR - encoder uses 8-bit source image, need 16f/32f passed to encoder, no hw L+A mode

R/RG/RGBA 8/16F/32F - use kram or ktx2ktx2+ktx2sc to generate supercompressed ktx2
R8/RG8/R16F - input/output rowBytes not aligned to 4 bytes to match KTX spec, code changes needed

PVRTC - unsupported, no open-source encoders, requires pow2 size

Containers
PVR/Basis/Crunch - unsupoorted 

KTX - only uncompressed, mip levels are unaligned to block size from 4 byte length at chunk 0 
  metadata/props aren't standardized or prevalent
  libkram supports only text props for display in kramv

KTX2 - works in kram and viewer, has aligned levels of mips when uncompressed, 
  libkram supports None/Zlib/Zstd supercompression for read/write
  libkram does not support UASTC/BasisLZ yet
  
DDS - works in kram and viewer, no mip compression, only BC and explicit formats, extended for ASTC/ETC
  kram/kramv only support newer DX10 style DDS format.  Can view in Preview on macOS too.
  DDSHelper provides load/save.  Pixel data ordered by chunk instead of by mips.  No metadata.
  

An example pipeline

At build:

* Lossless 8u/16F/32F KTX2 sources 2D, 2D, cube, and 2D atlas textures with zstd mips.  Editing these in Photoshop/Gimp is still an issue.
* Need to stop basing pipelines around PNG.  This is a limited source format, but supported by editors.
* Textures should be higher resolution, and checked into source control (git-lfs or p4).  
* Some sort of scripting to supply encoder preset index for textures. 

* Drop mips and encode to KTX using kram using the encoder preset
* Build 2D array or 2D atalas assets and name/uv locations for those assets.
* Convert KTX to KTX2 via ktx2ktx2 + ktx2sc as lossy encoded ETC2/BC/ASTC+zstd or UASTC+rdo+zstd
* Bundle into an Asset Catalog (macOS/iOS), or resource pack (Android) for slicing and on-demand resource loading

At runtime:

* Mmap load all KTX2 textures read-only into memory using KramLoader.  This is the backing-store.
* Decode smaller faces/slices/array and their mips and upload to staging buffer and then gpu transfer/twiddle to private texture. 
* For example, can upload all lower mips in 1/3rd the space and skip all the top mips.  Textures without mips cannot do this.

* Use sparse texturing hardware or readback to indicate what mips are accessed by the hardware.
* Purge top mips of large unused textures, but keep the bottom mips.
* Upload top mips as needed and memory allows.

Building

kram uses an explicit Xcode workspace and projects on Apple platforms. CMake can't clean, build workspaces, or handle app extensions needed for thumbnails/previews. I spent a lot of time trying to keep CMake working since it keeps kram from being tied to Xcode releases, but I also wanted to add better Finder integration. These all live in 'build2' to distinguish from the 'build' directory created for CMake. Like CMake, the cibuild.h script runs xcodebuild from the command line to generate all the libraries and apps into the bin directory. Note that Xcode has never been able to simultaneously open the same project included in different workspaces, so organize derivative workspaces carefully.

./scripts/cibuild.h

open build2/kram.xcworkspace

kram was using CMake to setup the projects and build, but it doesn't support workspaces, clean, or the thumbnail/preview extension linking. As a result, kramv.app, kram, and libkram are generated. So I'm building kramv.app and everything with a custom Xcode project now. The library can be useful in apps that want to include the decoder, or runtime compression of gpu-generated data.

For Mac, the CMake build is out-of-source, and can be built from the command line, or debugged from the xcodeproj that is built. Ninja and Makefiles can also be generated from cmake, but remember to trash the CMakeCache.txt file.

mkdir build
cmake .. -G Xcode

cmake --build . --config Release
or
open kramWorkspace.xcodeproj
or
cmake --install ../bin --config Release

For Windows, CMake is still used. CMake build libkram, kramc, and kram-thumb-win.dll. This uses the clang compiler and x64 only.

mkdir build
cmake .. -G "Visual Studio 16 2019" -T ClangCL -A x64
or
cmake .. -G "Visual Studio 17 2022" -T ClangCL -A x64

cmake --build . --config Release
or
open kramWorkspace.sln
or
# not sure if install works on Win
cmake --install ../bin --config Release

There are various CMake settings that control the various encoders. Each of these adds around 200KB. I tested with each of these turned off, so code should be isolated. The project will still show all sources.

  • -DATE=ON
  • -DASTCENC=ON
  • -DBCENC=ON
  • -DSQUISH=ON
  • -DETCTOOL=ON

Commands

  • encode - encode/decode block formats, mipmaps, fast sdf, premul, srgb, swizzles, LDR and HDR support, 16f/32f
  • decode - can convert any of the encode formats to s/rgba8 ktx files for display
  • info - dump dimensions and formats and metadata/props from png and ktx files
  • script - send a series of kram commands that are processed in a task system. Ammenable to gpu acceleration.

Sample Scripts

  • kramTextures.py - python3 example that recursively walks directories and calls kram, or accumulates command and runs as a script
  • formatSources.sh - zsh script to run clang_format on the kram source directory (excludes open source)
  • fixfinder.sh - after updating /Applications, this flushes any cached copy of kram.app from LaunchServices

To demonstrate how kram works, scripts/kramtextures.py applies platform-specific presets based on source filenames endings. The first form executes multiple kram processes with each file using a Python ThreadPoolExecutor. The second generates a script file, and then runs that in a C++ task system inside kram. The scripting system would allow gpu compute of commands, and more balanced memory and thread usage.

cd build

# this will install "click" and other python package dependencies
macOS
pip3 install -r ../scripts/requirements.txt

Win
python3.exe -m pip install -U pip
python3.exe -m pip install -r ../scripts/requirements.txt

# Gen ktx using 8 processes, and bundles the results to a zip file
../scripts/kramTextures.py --jobs 8 -p android --bundle

# this writes out a script of all commands and runs on threads in a single process
../scripts/kramTextures.py --jobs 8 -p ios --script
../scripts/kramTextures.py --jobs 8 -p mac --script --force 
../scripts/kramTextures.py --jobs 8 -p win --script --force 

# Generate ktx2 output, and then bundle them into a zip
../scripts/kramTextures.py -p any -c ktx2 --bundle
../scripts/kramTextures.py -p android -c ktx2 --bundle --check

# Generate dds output, and then bundle them into a zip
../scripts/kramTextures.py -p any -c dds --bundle
../scripts/kramTextures.py -p android -c dds --bundle --check

# Generate textures for all platforms
../scripts/kramTests.sh 

Sample Commands

To test individual encoders, there are tests cases embedded into kram. Also individual textures can be processed, or the script records these commands and executes the encodes on multiple cores.

cd build
./Release/kram -testall
./Release/kram -test 1002

# for ktx
./Release/kram encode -f astc4x4 -srgb -premul -quality 49 -mipmax 1024 -type 2d -i ../tests/src/ColorMap-a.png -o ../tests/out/ios/ColorMap-a.ktx
./Release/kram encode -f etc2rg -signed -normal -quality 49 -mipmax 1024 -type 2d -i ../tests/src/collectorbarrel-n.png -o ../tests/out/ios/collectorbarrel-n.ktx
./Release/kram encode -f etc2r -signed -sdf -quality 49 -mipmax 1024 -type 2d -i ../kram/tests/src/flipper-sdf.png -o ../tests/out/ios/flipper-sdf.ktx

# for ktx (without and with zstd compression)
./Release/kram encode -f astc4x4 -srgb -premul -quality 49 -mipmax 1024 -type 2d -i ../tests/src/ColorMap-a.png -o ../tests/out/ios/ColorMap-a.ktx2
./Release/kram encode -f astc4x4 -srgb -premul -quality 49 -mipmax 1024 -type 2d -zstd 0 -i ../tests/src/ColorMap-a.png -o ../tests/out/ios/ColorMap-a.ktx2

Open Source Encoder Usage

This app would not be possible without the open-source contributions from the following people and organizations. These people also inspired me to make this app open-source, and maybe this will encourage more great tools or game tech.

kram includes the following encoders/decoders:

Encoder Author License Encodes Decodes
BCEnc Rich Geldreich MIT BC1,3,4,5,7 same
Squish Simon Brown MIT BC1,3,4,5 same
ATE Apple no sources BC1,4,5,7 ASTC4x4,8x8 LDR LDR
Astcenc Arm Apache 2.0 ASTC4x4,5x5,6x6,8x8 LDR/HDR same
Etc2comp Google MIT ETC2r11,rg11,rgb,rgba same
Explicit Me MIT r/rg/rgba 8u/16f/32f none
Compress AMD MIT BC6 same
GTLFKit Warren Moore MIT none gltf
ATE
Simple wrapper for encode/decode around this.
Identifies encode/decode formats off version.

BCEnc
Commented out some unused code to suppress warnings
Hooked in some SIMD code.

Squish
Simplified to single folder.
Replaced sse vector with float4/a for ARM/Neon support.

Astcenc v3.4
Provide rgba8u source pixels.  Converted to 32f at tile level.
Improved 1 and 2 channel format encoding (disable now).
Avoid reading off end of arrays with padding.
Support 2d array of src pixels instead of 3d.
Force AVX and SSE path, and implement using sse2neon emlation on Neon.

Etc2comp 
Simplified to single folder.
Keep r11 and rg11 in integer space. 6x faster.
Memory reduced signficantly.  One block allocated.
Single pass encoder works on one block at a time, and does not skip blocks.
Multipass and multithread algorithm sorts vector, and split out blockPercentage from iteration count.
RGB8A1 is broken.
Optimized encodes by inlining CalcPixelError. 2x faster.
Reduced memory by 4x and passing down rgba8u instead of rgba32f.  Converted to 32f at tile level.

Open source usage

kram includes additional open-source:

Library Author License Purpose
lodepng Lode Vandevenne MIT png encode/decode
SSE2Neon John W. Ratcliff MIT sse to neon
heman Philip Rideout MIT parabola EDT for SDF
TaskSystem Sean Parent MIT C++11 work queue
tmpfileplus David Ireland Moz 2.0 fixes C tmpfile api
mmap universal Mike Frysinger Pub mmap on Windows
zstd Yann Collett (FB) BSD-2 KTX2 mip decode
miniz Rich Gelreich Unlicense bundle support via zip
gltfKit Warren Moore MIT gltf decoder/renderer

kram-thumb-win.dll addtional open-source

Library Author License Purpose
QOI thumbnails iOrange MIT win thumbnailer

Open source changes

  • lodepng - altered header paths.
  • SSE2Neon - updated to newer arm64 permute instructions.
  • heman - altered sdf calcs for mipgen off largest sdf mip
  • TaskSystem - altered to control thread count,
  • tmpfileplus - small changes to work on Mac/Win better allow extension suffix
  • mmap universal - may leak a file mapping handle on Win.
  • zstd - using single file version of zstd for decode, disabled encode paths
  • miniz - expose raw data and offset for mmap-ed zip files, disabled writer, disable read crc checks, in .cpp file
  • gltfkit - several warning fixes, changes to support kram texture loader

kram unstarted features:

  • Tile command for SVT tiling
  • Block twiddling support for consoles
  • Merge command to combine images (similar to ImageMagick)
  • Atlas command to atlas to 2D and 2D array textures. Display names, show bounds of atlases. Have -chunks arg now.
  • 3D chart flattening.
  • Motion vector direction analysis.
  • Split view comparison rendering. Move horizontal slider like ShaderToy.
  • Add GPU encoder (use compute in Metal/Vulkan)
  • Save prop with args and compare args and modstamp before rebuilding to avoid --force
  • Multichannel SDF
  • Plumb half4/float4 through to BC6 encoding. Sending 8u.
  • Run srgb conversion on endpoint data after fitting linear color point cloud
  • PSNR stats off encode + decode
  • Dump stats on BC6/7 block types, and ASTC void extent, dual-plane, etc
  • Iterate through block encoded types on source images to help artists see tradeoffs

Test Images

Some of these images like collectorbarrel-a and Toof.a look grayscale but are not. Some of the encoders turn these non-opaque, and generate alpha of 254/255.

  • color_grid-a from ktx/ktx2 samples
  • ColorMap-a from Apple's sample apps to test premultiplied alpha and srgb.
  • flipper-sdf image taken from EDT paper that inspired heman SDF.
  • collectorbarrel-n/a from Id's old GPU BC1/3 compression article.
  • Toof-a is my own artwork drawn in Figma

Timings for test suite

These are basic timings running kram encoding for all the specific platform test cases using kramTexture.py Impressive that M1 wins on the Android test case by over 2x, and is close in the others.

  • Date: 1/16/21
  • 2020 M1 13" Macbook Air, 3.4Ghz, 4+4 core M1, 8GB
  • 2019 16" Macbook Pro, 2.3Ghz, 8/16 core i9, 16GB

Timings

  • Any - Basis supercompress via ktxsc is long with UASTC + RDO
Sys macOS iOS Android Any
M1 0.643s 4.603s 6.441s
i9 0.970s 3.339s 14.617s 75.0s

Bundle Sizes

  • KTX file is compressed before archiving, but decompress entire file to disk to mmap
  • KTX2/Basis is simply stored in archive, mips already zstd compressed, can mmap as compressed backing store
Sys macOS iOS Android Any
PNG 460K
KTX 507K 517K 281K
KTX2 481K 495K 288K 471K
Format BC4/5/7 ASTC/ETC ETC2 Basis-UASTC
Compr. zstd zstd zstd RDO+zstd

Syntax

kram[encode | decode | info | script | ...]
Usage: kram encode
	 -f/ormat (bc1 | astc4x4 | etc2rgba | rgba16f)
	 [-srgb] [-signed] [-normal]
	 -i/nput <source.png | .ktx>
	 -o/utput <target.ktx | .ktxa>

	 [-type 2d|3d|..]
	 [-e/ncoder (squish | ate | etcenc | bcenc | astcenc | explicit | ..)]
	 [-resize (16x32 | pow2)]

	 [-mipnone]
	 [-mipmin size] [-mipmax size]

	 [-chunks 4x4]
	 [-swizzle rg01]
	 [-avg rxbx]
	 [-sdf]
	 [-premul]
	 [-prezero]
	 [-quality 0-100]
	 [-optopaque]
	 [-v]
   
         [-test 1002]
         [-testall]

OPTIONS
	-type 2d|3d|cube|1darray|2darray|cubearray

	-format [r|rg|rgba| 8|16f|32f]	Explicit format to build mips and for hdr.
	-format bc[1,3,4,5,7]	BC compression
	-format etc2[r|rg|rgb|rgba]	ETC2 compression - r11sn, rg11sn, rgba, rgba
	-format astc[4x4|5x5|6x6|8x8]	ASTC and block size. ETC/BC are 4x4 only.

	-encoder squish	bc[1,3,4,5]
	-encoder bcenc	bc[1,3,4,5,7]
	-encoder ate	bc[1,4,5,7]
	-encoder ate	astc[4x4,8x8]
	-encoder astcenc	astc[4x4,5x5,6x6,8x8] ldr/hdr support
	-encoder etcenc	etc2[r,rg,rgb,rgba]
	-encoder explicit	r|rg|rgba[8|16f|32f]

	-mipnone	Don't build mips even if pow2 dimensions
	-mipmin size	Only output mips >= size px
	-mipmax size	Only output mips <= size px

	-srgb	sRGB for rgb/rgba formats
	-signed	Signed r or rg for etc/bc formats, astc doesn't have signed format.
	-normal	Normal map rg storage signed for etc/bc (rg01), only unsigned astc L+A (gggr).
	-sdf	Generate single-channel SDF from a bitmap, can mip and drop large mips. Encode to r8, bc4, etc2r, astc4x4 (Unorm LLL1) to encode
	-premul	Premultiplied alpha to src pixels before output.  Disable multiply of alpha post-sampling.  In kramv, view with "Premul off".
	-prezero Premultiplied alpha only where 0, where shaders multiply alpha post-sampling.  Not true premul and black halos if alpha ramp is fast.  In kramv, view with "Premul on".
	-optopaque	Change format from bc7/3 to bc1, or etc2rgba to rgba if opaque
	
	-chunks 4x4	Specifies how many chunks to split up texture into 2darray
	-swizzle [rgba01 x4]	Specifies pre-encode swizzle pattern
	-avg [rgba]	Post-swizzle, average channels per block (f.e. normals) lrgb astc/bc3/etc2rgba
	-v	Verbose encoding output

Usage: kram info
	 -i/nput <.png | .ktx> [-o/utput info.txt] [-v]

Usage: kram decode
	 -i/nput .ktx -o/utput .ktx [-swizzle rgba01] [-v]

Usage: kram script
	 -i/nput kramscript.txt [-v] [-j/obs numJobs]

Other wrappers

These encoders have their own wrappers with different functionality.

  • Astcenc (astcenc) WML, ASTC
  • ETC2comp (etctool) WML, ETC2
  • Squish (squishpng) WML, BC
  • BCEnc - WML, BC

Other great encoder wrappers to try. Many of these require building the app from CMake, and many only supply Windows executables.

  • Cuttlefish (cuttlefish) - WML, ASTC/BC/ETC/PVRTC
  • PVRTexTool (PVRTexToolCLI) - WML, ASTC/BC/ETC/PVRTC, no BC on ML
  • Nvidia Texture Tools (nvtt) - WML, ASTC/BC/ETC/PVRTC
  • Basis Universal (basisu) - WML, ASTC/ETC1, transodes to 4x4 formats
  • KTX Software (toktx, ktx2ktx2, ktxsc) - basis as encode
  • Intel ISPC - WML, BC/ASTC
  • ICBC - Ignacio Costano's BC encoder - WML, BC
  • DirectX Texture Tools
  • AMD Compressonator

On Encoding Formats

*ASTC* 
Android and iOS, Apple M1
Requires swizzles to reduce endpoint storage (rrr1, rrrg, rgb1)
Full 8-bit channel endpoints
No HDR L+A dualplane, only RGB1
No signed format
ASTC4x4 is same size as R8Unorm explicit format.
Can change block size across all mips 4x4, 5x5, 6x6, 8x8...
Hard to store/fit endpoints to larger point clouds
Square format pixel counts ramp up quickly. 16, 25, 36, 64.
Adapts per block to L, LA, RGB, RGBA.
High encoder complexity, but getting faster
No GPU encode/decode.
Fast ISPC encoder but that doesn't pick best block types
Fixed 16 byte block size (even for HDR).  
Optimal storage depends on how much wasted on endpoints
Can fit more than 2 colors to a 4x4 block

rrr1  - 2 1-byte endpoints
rrrg  - 2 2-byte endpoints, dual plane possible in LDR
rg01  - 2 3-byte endpoints, dual plane possible, only 2 channel format in HDR
rgba1 - 2 3-byte endpoints

*ETC2*
Android and iOS, Apple M1
No GPU encode/decode
Etcpak and ETC2Comp are two encoders.   Etcpak is fast with AVX2, less for ARM.
ETC2Comp encoder slow on rgb/a due to large iteration space of each block.  
ETC2Comp multipass skips encoding blocks by treating quality as percentage which is dubious, fixed in kram.
kram breaks out quality from block percentage for multipass.

r - 4bpp, 2 11-bit endpoints, unpacks to r16f in texture cache, signed/unsigned
rg - 8bpp, 2 22-bit endpoints, unpacks to rg16f in texture cache, signed/unsigned
rgb - 4bpp, similar to ETC1, several permuations that slow encode times
rgba - 8bpp, has several permuations that slow encode times

*BC*
Desktop and consoles, Apple M1
GPU accelerated encoders
Several encoders to choose from
Can fit more than 2 unique colors to a 4x4 block with BC7, but no BC1/3
GPU accelerators 100 to 1000x faster.

BC1 - 4bpp, 565, 2-bit selector, kram doesn't support 1-bit alpha form
BC2 - not exposed
BC3 - 8bpp 565, 2-bit selector, 8-bit alpha, 3-bit selector
BC4 - 4bpp 2 8-bit endpoints, 3 bit selector, unpacks to r16f in texture cache, signed/unsigned
BC5 - 8bpp, 2 16-bit endpoints, 3 bit selector, unpacks to rg16f in texture cache, signed/unsigned
BC6 - 8bpp, not supported yet, rgb16 signed/unsigned
BC7 - 8bpp, rgba, adaptive, can pack 4 unique colors into 4x4 block via partitioning

*Basis* (not in kram)
Lots of great concepts here
Written by Rich Geldreich who also did BCenc
Transcoder format from ETC1s and UASTC storage
Can reduce storage of redundant blocks across mips
One format to rule them all
Encode once
Only 4x4 block sizes
ETC1s quality issues from 5-bit channel endpoints, and skipped block orient.
ASTC doesn't compress and RDO as tightly.

Quick chart on formats

Fmt GPU Block Size Sizes
BC Yes Fixed 4/8bpp
ASTC No Variable 2-8bpp @ 8x8
ETC No Fixed 4/8bpp
Basis No Fixed 2-8bpp

Normal map formats for 2 channels

Fmt pre post pl size comment endpoints
RG8 rg01 rg 2 2 8:e
RG16f rg01 rg 2 4 16f:e
RG32f rg01 rg 2 8 32f:e
BC1nm rg01 rg 1 0.5 used by Capcom w/BC3nm 56:2
BC3nm xgxr ag 2 1 can store block constant rb 6:2, 8:3
BC5nm rg01 rg 2 1 signed, rg16f in cache 8:3
ETCrg rg01 rg 2 1 rg11n, signed, rg16f in cache 11:3
ASTCnm gggr ag 2 1@4x4 swizzle more like BC3nm 8:3
ASTCnm rrrg ga 2 1 8:3
ASTCrg rg01 rg 2 1 2 bytes for b=0, rba + g 8:3

On mip calculations and non-power-of-two textures

With the exception of PVRTC, the block encoded formats support non-power-of-two mipmaps. But very little literature talks about how mips are calculated. OpenGL/D3D first used round-down mips, and Metal/Vulkan had to follow suit. Round down cuts out a mip level, and does a floor of the mip levels. Round-up mips generally have a better mapping to the upper with a simple box filter. kram now has reasonable cases for pow2 and non-pow2 mip generation. Odd source pixel counts have to shift weights as leftmost/rightmost pixels contribute more on the left/right sides, and avoid a shift in image pixels.

Round Down
3px  a      b      c
1px       a+b+c

Round Up
3px  a      b      c
2px    a+b     b+c 
1px      a+b+c

On memory handling in kram:

Batch processing on multiple threads can use a lot of memory. Paging can reduce performance. kram memory maps the source png/ktx, decodes the png into memory or reads ktx pixels from the mmap, pulls chunks for the slice/cube/texture, then generates mips in place, and uses a half4 type for srgb/premul to maintain higher precision, and finally writes the mip to disk. Then kram process another mip.

The rgba8u image and half4 image are stored for mips. 1gb can be used to process separate textures on 16 cores. This may be an argument for multiple cores processing a single image. Running fewer threads can reduce peak memory use. Also hyperthreaded cores share SIMD units, so using physical processor counts may be similar performance to HT counts. Alignment is maintained and memory is reduced with in-place mips, but that also means mipgen in kram is intermingled with encoding.

Dims MPix 8u MB 16f MB 32f MB
1024^2 1 4 8 16
2048^2 4 16 32 64
4096^2 16 64 128 256
8192^2 64 256 512 1024

On lossless PNG, KTX, KTX2, DDS output formats:

PNG is limited to srgb8u/8u/16u data. Most editors can work with this format. Gimp and Photoshop can maintain 16u data. There's no provision for mips, or cube, 3d, hdr, or premultiplied alpha. And most tools always set png as sRGB data. Content tools, image editors, browsers really need to replace PNG and DDS with compressed KTX2 for source and output content.

kram encourages the use of lossless and hdr source data. There are not many choices for lossless data - PNG, EXR, and Tiff to name a few. Instead, kram can input PNG files with 8u pixels, and KTX/2 files for 8u/16f/32f pixels. Let kram convert source pixels to premultiplied alpha and from srgb to linear, since ordering matters here and kram does this using half4/float4. LDR and HDR data can come in as horizontal or vertical strips, and these strips can then have mips generated for them. So cube maps, cube map arrays, 2D arrays, and 1d arrays are all handled the same.

KTX is a well-designed format, and KTX2 continues that tradition. It was also faily easy to convert between these formats. Once mips are decoded, KTX2 looks very much like KTX.

Visually validating and previewing the results is complicated. KTX/2 have few viewers, hence the need for kramv. Apple's Preview can open BC and ASTC files on macOS, but not ETC/PVRTC. And then you can't look at channels or mips, or turn on/off premultiplied alpha, or view signed/unsigned data. Preview premultiplies PNG images, but KTX files aren't. Apple's thumbnails don't work for ETC2 or PVRTC data in KTX files. Windows thumbnails don't work for KTX at all. PVRTexToolGUI 2020R2 applies sRGB incorrectly to images, and can't open BC4/5/7 files on Mac.

kram adds props to KTX/2 file to store data. Currently props store Metal and Vulkan formats. This is important since GL's ASTC LDR and HDR formats are the same constant. Also props are saved for channel content and post-swizzle. Loaders, viewers, and shaders can utilize this metadata.

Kram now supports KTX2 export. But KTX can also be converted to KTX2 and each mip supercompressed via ktx2ktx2 and ktxsc. KTX2 reverses mip ordering smallest to largest, so that streamed textures can display smaller mips before they finish fully streaming. KTX2 can also supercompress each mip with zstd and Basis for transcode. I suppose this could then be unpacked to tiles for sparse texturing. KTX2 does not store a length field inside the mip data which keeps consistent alignment.

Metal cannot load mmap mip data that isn't aligned to a multiple of the block size (8 or 16 bytes for BC/ASTC/ETC). KTX adds a 4 byte length into the mip data that breaks alignment, but KTX2 fortunately skips that. But KTX2 typically compresses the levels and needs decode/transcode to send to the GPU.

Note that textures and render textures don't necessarily use pixels or encoded blocks in the order that you specify in the KTX file. Twiddling creates serpentine patterns of pixels/blocks that are platform and hardware dependent. Hardware often writes to linear for the display system, and reads/writes twiddled layouts. It's hard for a generic tool like kram to address this. I recommend that the texture loader always upload ktx blocks to private texture surfaces, and let the API twiddle the data during the copy. This can sometimes be a source of upload timing differences.

  • KTX mmap -> Copy Level to Shared Buffer -> Blit Level to Private Tex
  • KTX2 mmap -> Decompress Level to Shared Buffer -> Blit Level To Private Tex

With sparse texture, the above becomes more involved since only parts of the decompressed level are uploaded. KTX2 is still the ideal choice, since textures are considerably smaller 2-10x and can be mmap-ed directly from the bundle.

Encoding and hardware lookup of srgb and premultiplied data.

Texture units convert srgb to linear data on the way to the texture cache.  
The texture cache typically stores 4x4 block to match encoded formats.  
Sampling is then done from that block of linear data with higher precision.

Texturing hardware does not yet support premultiplied alpha.  
kram does premul prior to mip generation.
Srgb is then re-applied to linear premul data before encoding.

kram uses half4/float4 to preserve precision when srgb or premul are specified.  
The encoders all have to encode non-linear srgb point clouds, which isn't correct.

On texture atlases and charts (TODO:)

2D atlas packing works for source textures like particle flipbooks, but suffers from many issues. Often packed by hand or algorithm, the results look great as PNG, but break down once mipped and block encoded. These are some of the complex problems:

  • Mip bleed - Solved with mip lod clamping or disabling mips.
  • Alignment bleed - Solved with padding to smallest visible mip blocks.
  • Block bleed - Solved with pow2 blocks - 4x4 scales down to 2x2 and 1x1. 6x6 scales to non-integral 3x3 and 1.5x1.5.
  • Clamp only - Solved by disabling wrap/mirror modes and uv scaling.
  • Complex pack - stb_rect_pack tightly pack images to a 2d area without accounting for bleed issues

kram will soon offer an atlas mode that uses ES3-level 2d array textures. These waste some space, but are much simpler to pack, provide a full encoded mip chain with any block type, and also avoid the 5 problems mentioned above. Named atlas entries reference a given array element, but could be repacked and remapped as used to a smaller atlas. Dropping mip levels can be done across all entries, but is a little harder for a single array element. Sparse textures work for 2d array textures, but often the min sparse size is 256x256 (64K) or 128x128 (16K) and the rest is the packed mip tail. Can draw many types of objects and particles with only a single texture array.

The idea is to copy all atlased images to a 2d vertical strip. This makes row-byte handling simpler. Then kram can already convert a vertical strip to a 2D array, and the output rectangle, array index, mip range, and altas names are tracked as well. But there is some subtlety to copy smaller textures to the smaller mips and use sampler mip clamping. Non-pow2 textures will have transparent fill around the sides.

Apps like Substance Painter use charts of unwrapped UV. These need to be gapped and aligned to block sizes to avoid the problems above. Often times the gap is too small (1px) for the mipchain, and instead the algorithms cover up the issue by dilating colors into the gutter regions, so that black outlines are not visible. thelka_atlas, xatlas, and other utilities can build these charts.

kram's People

Contributors

alecazam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

kram's Issues

DDS to KTX conversion

Currently no tool on the market provide DDS to KTX conversion but still keep the compressed format in DDS as is.
Do you think it is possible? It'd great if kram has such feature.

Fragment tangents/basis generates incorrect tangents.

  1. Hit 8 to switch to sphere shape
  2. Hit 6 switch to viewing tangent shape channel
  3. Hit T to toggle between vertex tangents/basis and fragment tangents/basis

Vertex Tangents - are nice and smooth with a seam down the middle
Fragment Tangents - no seam, and only the same in the middle of the sphere

I had to negate T in the shader to generate right-handed tangents.
It looks like the z slope and the vertical falloff throw off the calculations
Interpolated world pos, world vertex normal, and uv are passed into the call

Original shader passed -V = (worldPos - cameraPos), but with deltas the cameraPos drops out.
So passing worldPos should be the same.
The bitangents are almost identical with small banding at the top/bottom.

Vertex Tangents
image

Fragment Tangents
image

Consider using ASTCENC_FLG_SELF_DECOMPRESS_ONLY for compression

For your astcenc compressor contexts consider creating them with the ASTCENC_FLG_SELF_DECOMPRESS_ONLY flag. This allows the codec to repack the data tables with only the entries it needs for the compression configuration in use. However, it cannot reliably decompress arbitrary images as the table entries are missing for things the current compressor configuration isn't using, so only do this for compression-only contexts or cases where you are decompressing images made in the same compressor session.

Using this option for compression give 10-20% more performance, depending on block size, so is highly recommended.

2d array from multiple input files

Is it possible with the kram command line tool to generate a ktx2 texture 2d array from multiple input files?
How would the command look like?

MSL shader output comparsion of hlslparser vs. spriv-cross

This is a comparison of output from hlsparser rewriting HLSL2021 source into MSL vs. spriv-cross doing the same from spv.
The processing paths are the following steps that are found in hlslparser/buildShaders.sh. When stepping through gpu capture of MSL, the hlslparser MSL is far easier to intuit about. Note that hlslparser wraps a class around all function calls in MSL to emulate the global intputs/outputs that HLSL is notorious for.

  • HLSL2021 -> hlslparser -> MSL 2.3
  • HLSL2021 -> hlslparser -> DXC -> Spirv-1.2 -> spriv-cross -> MSL 2.3

hlslparser

#include "ShaderMSL.h"
const static constant constexpr int NUM_LIGHTS = 3;
struct SamplePSNS {
    struct LightState {
        float3 position;
        float3 direction;
        float4 color;
        float4 falloff;
        float4x4 viewProj;
    };
    struct SceneConstantBuffer {
        float4x4 model;
        float4x4 viewProj;
        float4 ambientColor;
        bool sampleShadowMap;
        LightState lights[3];
    };
    struct InputPS {
        float4 position [[position]];
        float4 worldpos;
        float2 uv;
        float3 normal;
        float3 tangent;
    };
    thread depth2d<float>& shadowMap;
    thread texture2d<half>& diffuseMap;
    thread texture2d<half>& normalMap;
    thread sampler& sampleWrap;
    thread sampler& shadowMapSampler;
        constant SceneConstantBuffer & scene
;
    half3 CalcPerPixelNormal(float2 vTexcoord, half3 vVertNormal, half3 vVertTangent) {
        // Compute tangent frame.
        vVertNormal = normalize(vVertNormal);
        vVertTangent = normalize(vVertTangent);
        half3 vVertBinormal = normalize(cross(vVertTangent, vVertNormal));
        half3x3 mTangentSpaceToWorldSpace = half3x3(vVertTangent, vVertBinormal, vVertNormal);
        // Compute per-pixel normal.
        half3 vBumpNormal = (SampleH(normalMap, sampleWrap, vTexcoord)).xyz;
        vBumpNormal = ((2.h * vBumpNormal) - 1.h);
        return mul(vBumpNormal, mTangentSpaceToWorldSpace);
    };
    half4 CalcLightingColor(float3 vLightPos, float3 vLightDir, half4 vLightColor, float4 vFalloffs, float3 vPosWorld, half3 vPerPixelNormal) {
        float3 vLightToPixelUnNormalized = vPosWorld - vLightPos;
        // Dist falloff = 0 at vFalloffs.x, 1 at vFalloffs.x - vFalloffs.y
        float fDist = length(vLightToPixelUnNormalized);
        half fDistFalloff = (half)(saturate((vFalloffs.x - fDist) / vFalloffs.y));
        // Normalize from here on.
        half3 vLightToPixelNormalized = (half3)(normalize(vLightToPixelUnNormalized));
        // Angle falloff = 0 at vFalloffs.z, 1 at vFalloffs.z - vFalloffs.w
        half3 lightDir = (half3)(normalize(vLightDir));
        half fCosAngle = dot(vLightToPixelNormalized, lightDir);
        half fAngleFalloff = saturate((fCosAngle - (half)(vFalloffs.z)) / (half)(vFalloffs.w));
        // Diffuse contribution.
        half fNDotL = saturate((-dot(vLightToPixelNormalized, vPerPixelNormal)));
        return vLightColor * ((fNDotL * fDistFalloff) * fAngleFalloff);
    };
    half CalcUnshadowedAmountPCF2x2(int lightIndex, float4 vPosWorld, float4x4 viewProj) {
        // Compute pixel position in light space.
        float4 vLightSpacePos = vPosWorld;
        vLightSpacePos = mul(vLightSpacePos, viewProj);
        // need to reject before division (assuming revZ, infZ)
        if (vLightSpacePos.z > vLightSpacePos.w) {
            return (half)(1.);
        }
        // near/w for persp, z/1 for ortho
        vLightSpacePos.xyz /= vLightSpacePos.w;
        // Use HW filtering
        return (half)(SampleCmp(shadowMap, shadowMapSampler, vLightSpacePos));
    };
    float4 SamplePS(InputPS input) {
        half4 diffuseColor = SampleH(diffuseMap, sampleWrap, input.uv);
        half3 pixelNormal = CalcPerPixelNormal(input.uv, (half3)(input.normal), (half3)(input.tangent));
        half4 totalLight = (half4)(scene.ambientColor);
        for (int i = 0; i < NUM_LIGHTS; (i++)) {
            LightState light = scene.lights[i];
            half4 lightPass = CalcLightingColor(light.position, light.direction, (half4)(light.color), light.falloff, input.worldpos.xyz, pixelNormal);
            // only single light shadow map
            if (scene.sampleShadowMap && (i == 0)) {
                lightPass *= CalcUnshadowedAmountPCF2x2(i, input.worldpos, light.viewProj);
            }
            totalLight += lightPass;
        }
        return (float4)((diffuseColor * saturate(totalLight)));
    };

    SamplePSNS(
    thread depth2d<float> & shadowMap, 
    thread texture2d<half> & diffuseMap, 
    thread texture2d<half> & normalMap, 
    thread sampler & sampleWrap, 
    thread sampler & shadowMapSampler, 
    constant SceneConstantBuffer & scene)
     : shadowMap(shadowMap), 
    diffuseMap(diffuseMap), 
    normalMap(normalMap), 
    sampleWrap(sampleWrap), 
    shadowMapSampler(shadowMapSampler), 
    scene(scene) {}
};

fragment float4 SamplePS(
SamplePSNS::InputPS input [[stage_in]], 
depth2d<float> shadowMap [[texture(0)]], 
texture2d<half> diffuseMap [[texture(1)]], 
texture2d<half> normalMap [[texture(2)]], 
sampler sampleWrap [[sampler(0)]], 
sampler shadowMapSampler [[sampler(1)]], 
constant SamplePSNS::SceneConstantBuffer & scene [[buffer(0)]]) {
    SamplePSNS SamplePS(shadowMap, 
    diffuseMap, 
    normalMap, 
    sampleWrap, 
    shadowMapSampler, 
    scene);
    return SamplePS.SamplePS(input);
}

spriv-cross

#include <metal_stdlib>
#include <simd/simd.h>

using namespace metal;

struct LightState
{
    float3 position;
    float3 direction;
    float4 color;
    float4 falloff;
    float4x4 viewProj;
};

struct type_ConstantBuffer_SceneConstantBuffer
{
    float4x4 model;
    float4x4 viewProj;
    float4 ambientColor;
    uint sampleShadowMap;
    LightState lights[3];
};

struct SamplePS_out
{
    float4 out_var_SV_Target0 [[color(0)]];
};

struct SamplePS_in
{
    float4 in_var_TEXCOORD0 [[user(locn0)]];
    float2 in_var_TEXCOORD1 [[user(locn1)]];
    float3 in_var_NORMAL [[user(locn2)]];
    float3 in_var_TANGENT [[user(locn3)]];
};

fragment SamplePS_out SamplePS(SamplePS_in in [[stage_in]], constant type_ConstantBuffer_SceneConstantBuffer& scene [[buffer(0)]], depth2d<float> shadowMap [[texture(0)]], texture2d<float> diffuseMap [[texture(1)]], texture2d<float> normalMap [[texture(2)]], sampler sampleWrap [[sampler(0)]], sampler shadowMapSampler [[sampler(1)]])
{
    SamplePS_out out = {};
    float4 _73 = diffuseMap.sample(sampleWrap, in.in_var_TEXCOORD1, int2(0));
    half3 _77 = normalize(half3(in.in_var_NORMAL));
    half3 _78 = normalize(half3(in.in_var_TANGENT));
    float4 _84 = normalMap.sample(sampleWrap, in.in_var_TEXCOORD1, int2(0));
    half3 _89 = half3x3(_78, normalize(cross(_78, _77)), _77) * ((half4(_84).xyz * half(2.0)) - half3(half(1.0)));
    half4 _94;
    _94 = half4(scene.ambientColor);
    half4 _95;
    for (int _97 = 0; _97 < 3; _94 = _95, _97++)
    {
        float3 _111 = in.in_var_TEXCOORD0.xyz - scene.lights[_97].position;
        half3 _120 = half3(fast::normalize(_111));
        half4 _136 = ((half4(scene.lights[_97].color) * clamp(-dot(_120, _89), half(0.0), half(1.0))) * half(fast::clamp(scene.lights[_97].falloff.x - (length(_111) / scene.lights[_97].falloff.y), 0.0, 1.0))) * clamp(dot(_120, half3(fast::normalize(scene.lights[_97].direction))) - (half(scene.lights[_97].falloff.z) / half(scene.lights[_97].falloff.w)), half(0.0), half(1.0));
        bool _143;
        if (scene.sampleShadowMap != 0u)
        {
            _143 = _97 == 0;
        }
        else
        {
            _143 = false;
        }
        half4 _166;
        if (_143)
        {
            half _164;
            do
            {
                float4 _148 = in.in_var_TEXCOORD0 * scene.lights[_97].viewProj;
                float _150 = _148.w;
                if (_148.z > _150)
                {
                    _164 = half(1.0);
                    break;
                }
                float3 _156 = _148.xyz / float3(_150);
                _164 = half(shadowMap.sample_compare(shadowMapSampler, _156.xy, _156.z, int2(0)));
                break;
            } while(false);
            _166 = _136 * _164;
        }
        else
        {
            _166 = _136;
        }
        _95 = _94 + _166;
    }
    out.out_var_SV_Target0 = float4(half4(_73) * clamp(_94, half4(half(0.0)), half4(half(1.0))));
    return out;
}

Accept uppercase file endings !?

Would be convenient to accept uppercase files...

My first try:

$ ./kram/kram info -i model/HONEYWELLJETWAVE_METAL.PNG.DDS
[E] Kram info only supports png, ktx, ktx2, dds inputs
Kram.cpp(1913): error:  kramAppInfo()
kram 1.0
Usage: kram info
         -i/nput <.png | .ktx | .ktx2 | .dds>
         [-o/utput info.txt]
         [-v/erbose]

Laaaaater then renamed it:

$ ./kram/kram info -i model/HONEYWELLJETWAVE_METAL.PNG.dds
file: model/HONEYWELLJETWAVE_METAL.PNG.dds
size: 0
sizm: 0.000 KB
type: 2D
dims: 4096x4096
dimm: 22.370 MP
mips: 13
fmtk: BC1

Tested on Windows.

Crash on macOS

I am getting a crash after I built a release version on macOS with cmake .. -G Xcode -DASTCENC=ON configure command.

Process:               kramv [94673]
Path:                  /Volumes/VOLUME/*/kramv.app/Contents/MacOS/kramv
Identifier:            com.ba.kramv
Version:               1.0 (1)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           kramv [94673]
User ID:               501

Date/Time:             2021-07-05 14:38:59.524 +0100
OS Version:            macOS 11.4 (20F71)
Report Version:        12
Bridge OS Version:     5.4 (18P4663)
Anonymous UUID:        738E84E4-5A75-FE7E-8F91-218EB6A980B4

Sleep/Wake UUID:       F0B56D3A-963E-49DB-BE64-7FC666AD04FD

Time Awake Since Boot: 280000 seconds
Time Since Wake:       17000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
Assertion failed: (mainBundlePath != nil), function +[NSImage _systemImageNamed:], file /System/Volumes/Data/SWE/macOS/BuildRoots/e90674e518/Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-2022.50.114/AppKit.subproj/NSImage.m, line 2707.
 

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff2056192e __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff205905bd pthread_kill + 263
2   libsystem_c.dylib             	0x00007fff204e5411 abort + 120
3   libsystem_c.dylib             	0x00007fff204e47e8 __assert_rtn + 314
4   com.apple.AppKit              	0x00007fff22e5ecad +[NSImage _systemImageNamed:] + 1306
5   com.apple.AppKit              	0x00007fff22e5e669 +[NSImage imageNamed:] + 142
6   com.apple.AppKit              	0x00007fff233cbfc0 -[NSCustomResource _loadImageWithName:symbolCatalogName:symbolConfiguration:isTemplateValue:] + 178
7   com.apple.AppKit              	0x00007fff233cc0a9 -[NSCustomResource loadImageWithName:symbolCatalogName:symbolConfiguration:isTemplateValue:] + 30
8   com.apple.AppKit              	0x00007fff22e5e53b -[NSCustomResource awakeAfterUsingCoder:] + 285
9   com.apple.Foundation          	0x00007fff213c71b9 _decodeObjectBinary + 2785
10  com.apple.Foundation          	0x00007fff213c65ac _decodeObject + 152
11  com.apple.Foundation          	0x00007fff213c6497 -[NSKeyedUnarchiver decodeObjectForKey:] + 162
12  com.apple.AppKit              	0x00007fff22eea0b0 -[NSCell initWithCoder:] + 1586
13  com.apple.AppKit              	0x00007fff23017a6f -[NSImageCell initWithCoder:] + 80
14  com.apple.Foundation          	0x00007fff213c71a6 _decodeObjectBinary + 2766
15  com.apple.Foundation          	0x00007fff213c65ac _decodeObject + 152
16  com.apple.Foundation          	0x00007fff213c6497 -[NSKeyedUnarchiver decodeObjectForKey:] + 162
17  com.apple.AppKit              	0x00007fff22ee8427 -[NSControl initWithCoder:] + 431
18  com.apple.AppKit              	0x00007fff2301794e -[NSImageView initWithCoder:] + 72
19  com.apple.AppKit              	0x00007fff22ee7db0 -[NSClassSwapper initWithCoder:] + 1143
20  com.apple.Foundation          	0x00007fff213c71a6 _decodeObjectBinary + 2766
21  com.apple.Foundation          	0x00007fff213c8c49 -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] + 850
22  com.apple.Foundation          	0x00007fff213e1003 -[NSArray(NSArray) initWithCoder:] + 161
23  com.apple.Foundation          	0x00007fff213c71a6 _decodeObjectBinary + 2766
24  com.apple.Foundation          	0x00007fff213c65ac _decodeObject + 152
25  com.apple.Foundation          	0x00007fff213c6497 -[NSKeyedUnarchiver decodeObjectForKey:] + 162
26  com.apple.AppKit              	0x00007fff22e9689c -[NSView initWithCoder:] + 1848
27  com.apple.AppKit              	0x00007fff22ee7db0 -[NSClassSwapper initWithCoder:] + 1143
28  com.apple.Foundation          	0x00007fff213c71a6 _decodeObjectBinary + 2766
29  com.apple.Foundation          	0x00007fff213c65ac _decodeObject + 152
30  com.apple.Foundation          	0x00007fff213c6497 -[NSKeyedUnarchiver decodeObjectForKey:] + 162
31  com.apple.AppKit              	0x00007fff22e97962 -[NSResponder initWithCoder:] + 115
32  com.apple.AppKit              	0x00007fff22e961b5 -[NSView initWithCoder:] + 81
33  com.apple.AppKit              	0x00007fff22ee82ad -[NSControl initWithCoder:] + 53
34  com.apple.AppKit              	0x00007fff22ee81ed -[NSButton initWithCoder:] + 49
35  com.apple.AppKit              	0x00007fff22ee7db0 -[NSClassSwapper initWithCoder:] + 1143
36  com.apple.Foundation          	0x00007fff213c71a6 _decodeObjectBinary + 2766
37  com.apple.Foundation          	0x00007fff213c65ac _decodeObject + 152
38  com.apple.Foundation          	0x00007fff213c6497 -[NSKeyedUnarchiver decodeObjectForKey:] + 162
39  com.apple.AppKit              	0x00007fff22e5cd39 -[NSNibConnector initWithCoder:] + 97
40  com.apple.AppKit              	0x00007fff22e5cc74 -[NSNibOutletConnector initWithCoder:] + 404
41  com.apple.Foundation          	0x00007fff213c71a6 _decodeObjectBinary + 2766
42  com.apple.Foundation          	0x00007fff213c8c49 -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] + 850
43  com.apple.Foundation          	0x00007fff213e1003 -[NSArray(NSArray) initWithCoder:] + 161
44  com.apple.Foundation          	0x00007fff213c71a6 _decodeObjectBinary + 2766
45  com.apple.Foundation          	0x00007fff213c65ac _decodeObject + 152
46  com.apple.Foundation          	0x00007fff213c6497 -[NSKeyedUnarchiver decodeObjectForKey:] + 162
47  com.apple.AppKit              	0x00007fff22e5b945 -[NSIBObjectData initWithCoder:] + 166
48  com.apple.Foundation          	0x00007fff213c71a6 _decodeObjectBinary + 2766
49  com.apple.Foundation          	0x00007fff213c65ac _decodeObject + 152
50  com.apple.Foundation          	0x00007fff213c6497 -[NSKeyedUnarchiver decodeObjectForKey:] + 162
51  com.apple.AppKit              	0x00007fff22e5b71d loadNib + 301
52  com.apple.AppKit              	0x00007fff22e5ad84 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:options:withZone:ownerBundle:] + 693
53  com.apple.AppKit              	0x00007fff22e5a9da -[NSBundle(NSNibLoading) loadNibNamed:owner:topLevelObjects:] + 201
54  com.apple.AppKit              	0x00007fff231eeac1 -[NSAlert init] + 137
55  com.apple.AppKit              	0x00007fff232db98b +[NSAlert alertWithError:] + 180
56  com.apple.AppKit              	0x00007fff232ed121 -[NSApplication(NSErrorPresentation) presentError:] + 146
57  com.apple.AppKit              	0x00007fff2320f248 -[NSDocumentController _finishBatchedOpeningAndPresentErrors:] + 866
58  com.apple.AppKit              	0x00007fff2320eec0 __89-[NSDocumentController _openDocumentsWithContentsOfURLs:presentErrors:completionHandler:]_block_invoke_2 + 30
59  com.apple.Foundation          	0x00007fff213f74cf __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 7
60  com.apple.Foundation          	0x00007fff213f73c7 -[NSBlockOperation main] + 98
61  com.apple.Foundation          	0x00007fff213f735a __NSOPERATION_IS_INVOKING_MAIN__ + 17
62  com.apple.Foundation          	0x00007fff213f660e -[NSOperation start] + 785
63  com.apple.Foundation          	0x00007fff213f62df __NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION__ + 17
64  com.apple.Foundation          	0x00007fff213f61b2 __NSOQSchedule_f + 182
65  libdispatch.dylib             	0x00007fff203f319e _dispatch_block_async_invoke2 + 83
66  libdispatch.dylib             	0x00007fff203e6806 _dispatch_client_callout + 8
67  libdispatch.dylib             	0x00007fff203f2b4f _dispatch_main_queue_callback_4CF + 940
68  com.apple.CoreFoundation      	0x00007fff206c65e8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
69  com.apple.CoreFoundation      	0x00007fff206887d2 __CFRunLoopRun + 2755
70  com.apple.CoreFoundation      	0x00007fff2068764c CFRunLoopRunSpecific + 563
71  com.apple.HIToolbox           	0x00007fff288c5ab3 RunCurrentEventLoopInMode + 292
72  com.apple.HIToolbox           	0x00007fff288c5815 ReceiveNextEventCommon + 587
73  com.apple.HIToolbox           	0x00007fff288c55b3 _BlockUntilNextEventMatchingListInModeWithFilter + 70
74  com.apple.AppKit              	0x00007fff22e886f2 _DPSNextEvent + 864
75  com.apple.AppKit              	0x00007fff22e86ec5 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1364
76  com.apple.AppKit              	0x00007fff22e79239 -[NSApplication run] + 586
77  com.apple.AppKit              	0x00007fff22e4d47c NSApplicationMain + 816
78  libdyld.dylib                 	0x00007fff205abf5d start + 1

Thread 1:
0   libsystem_pthread.dylib       	0x00007fff2058c420 start_wqthread + 0

Thread 2:
0   libsystem_pthread.dylib       	0x00007fff2058c420 start_wqthread + 0

Thread 3:: com.apple.NSEventThread
0   libsystem_kernel.dylib        	0x00007fff2055b2ba mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff2055b62c mach_msg + 60
2   com.apple.CoreFoundation      	0x00007fff20689b5f __CFRunLoopServiceMachPort + 316
3   com.apple.CoreFoundation      	0x00007fff2068823f __CFRunLoopRun + 1328
4   com.apple.CoreFoundation      	0x00007fff2068764c CFRunLoopRunSpecific + 563
5   com.apple.AppKit              	0x00007fff2300e68a _NSEventThread + 124
6   libsystem_pthread.dylib       	0x00007fff205908fc _pthread_start + 224
7   libsystem_pthread.dylib       	0x00007fff2058c443 thread_start + 15

Thread 4:
0   libsystem_pthread.dylib       	0x00007fff2058c420 start_wqthread + 0

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x000000010fd8de00  rcx: 0x00007ffee9866428  rdx: 0x0000000000000000
  rdi: 0x0000000000000103  rsi: 0x0000000000000006  rbp: 0x00007ffee9866450  rsp: 0x00007ffee9866428
   r8: 0x0000000000000000   r9: 0x0000000000000000  r10: 0x000000010fd8de00  r11: 0x0000000000000246
  r12: 0x0000000000000103  r13: 0x000000010a912000  r14: 0x0000000000000006  r15: 0x0000000000000016
  rip: 0x00007fff2056192e  rfl: 0x0000000000000246  cr2: 0x000000010a912000
  
Logical CPU:     0
Error Code:      0x02000148
Trap Number:     133

Thread 0 instruction stream not available.

Thread 0 last branch register state not available.


Binary Images:
       0x106395000 -        0x10655cfff  com.ba.kramv (1.0 - 1) <E391A9CF-1D5C-318C-AEF4-9692D94662F1> /Volumes/VOLUME/*/kramv.app/Contents/MacOS/kramv
       0x10a8f6000 -        0x10a905fff  libobjc-trampolines.dylib (824) <361143B8-E66E-3402-85B5-C20893AAB9C9> /usr/lib/libobjc-trampolines.dylib
       0x10fcb6000 -        0x10fd51fff  dyld (852) <1AC76561-4F9A-34B1-BA7C-4516CACEAED7> /usr/lib/dyld
    0x7fff202c8000 -     0x7fff202c9fff  libsystem_blocks.dylib (79) <48AF56A9-6E42-3A5E-A213-E6AFD8F81044> /usr/lib/system/libsystem_blocks.dylib
    0x7fff202ca000 -     0x7fff202fffff  libxpc.dylib (2038.120.1) <5751A7F5-6DC5-3090-B7F1-D90ED71BEF1F> /usr/lib/system/libxpc.dylib
    0x7fff20300000 -     0x7fff20317fff  libsystem_trace.dylib (1277.120.1) <8E243C00-BFC2-3FAA-989C-0D72314DB04D> /usr/lib/system/libsystem_trace.dylib
    0x7fff20318000 -     0x7fff203b5fff  libcorecrypto.dylib (1000.120.2) <FADB19A0-1BF3-3F47-B729-87B4FA8CA677> /usr/lib/system/libcorecrypto.dylib
    0x7fff203b6000 -     0x7fff203e2fff  libsystem_malloc.dylib (317.121.1) <CAD162A5-7367-3A30-9C15-5D036411AEDE> /usr/lib/system/libsystem_malloc.dylib
    0x7fff203e3000 -     0x7fff20427fff  libdispatch.dylib (1271.120.2) <7B229797-1F2E-3409-9D0C-060C7EEF2E12> /usr/lib/system/libdispatch.dylib
    0x7fff20428000 -     0x7fff20461fff  libobjc.A.dylib (824) <FE5AF22E-80A1-34BB-98D6-610879988BAA> /usr/lib/libobjc.A.dylib
    0x7fff20462000 -     0x7fff20464fff  libsystem_featureflags.dylib (28.60.1) <77F7F479-39BD-3111-BE3C-C74567FD120C> /usr/lib/system/libsystem_featureflags.dylib
    0x7fff20465000 -     0x7fff204edfff  libsystem_c.dylib (1439.100.3) <38F8A126-C995-349A-B909-FF831914ED2E> /usr/lib/system/libsystem_c.dylib
    0x7fff204ee000 -     0x7fff20543fff  libc++.1.dylib (905.6) <B3812B86-4FCF-3A10-8866-DF67940A974C> /usr/lib/libc++.1.dylib
    0x7fff20544000 -     0x7fff20559fff  libc++abi.dylib (905.6) <A0FE88B7-E157-3C9C-A29A-11D3BE3436B3> /usr/lib/libc++abi.dylib
    0x7fff2055a000 -     0x7fff20589fff  libsystem_kernel.dylib (7195.121.3) <A4938CF5-ABC0-397B-8A6E-B7BEEFA24D0A> /usr/lib/system/libsystem_kernel.dylib
    0x7fff2058a000 -     0x7fff20595fff  libsystem_pthread.dylib (454.120.2) <17482C9D-061E-3769-AC9E-BE1239D33098> /usr/lib/system/libsystem_pthread.dylib
    0x7fff20596000 -     0x7fff205d1fff  libdyld.dylib (852) <C10CEA28-D5A0-324F-8F07-8C7CE4805412> /usr/lib/system/libdyld.dylib
    0x7fff205d2000 -     0x7fff205dbfff  libsystem_platform.dylib (254.80.2) <8664A4CD-EE27-3C71-B5CC-06E2B1B4F394> /usr/lib/system/libsystem_platform.dylib
    0x7fff205dc000 -     0x7fff20607fff  libsystem_info.dylib (542.40.3) <EA3F9C9C-3116-3DB4-A3F1-5B03172C1E72> /usr/lib/system/libsystem_info.dylib
    0x7fff20608000 -     0x7fff20aa5fff  com.apple.CoreFoundation (6.9 - 1776.103) <01EFB7F8-BCE6-32DF-A0B8-02F9027F882C> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff20aa6000 -     0x7fff20cdafff  com.apple.LaunchServices (1122.38 - 1122.38) <241B3D82-2C9C-3F7D-88BD-AC78A689FF04> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
    0x7fff20cdb000 -     0x7fff20daefff  com.apple.gpusw.MetalTools (1.0 - 1) <03202B68-E515-3CBE-AC5A-39E80A702A6F> /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools
    0x7fff20daf000 -     0x7fff2100bfff  libBLAS.dylib (1336.120.1) <44514FE9-B994-380E-8341-4ABA30DB8895> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
    0x7fff2100c000 -     0x7fff21059fff  com.apple.Lexicon-framework (1.0 - 86.2) <F69DF515-4980-36C8-9F5D-987B67D2AFAF> /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon
    0x7fff2105a000 -     0x7fff210c8fff  libSparse.dylib (106) <E7F273C0-18F8-3688-9B63-C86DEB06740A> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib
    0x7fff210c9000 -     0x7fff21146fff  com.apple.SystemConfiguration (1.20 - 1.20) <81EDA68C-051A-3F4C-B79E-B53B365B67B1> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    0x7fff21147000 -     0x7fff2117bfff  libCRFSuite.dylib (50) <703BB228-D959-3009-AF3F-0015588F531A> /usr/lib/libCRFSuite.dylib
    0x7fff2117c000 -     0x7fff213b4fff  libmecabra.dylib (929.10) <43C2A11F-7F68-31B6-AD65-31282837DED3> /usr/lib/libmecabra.dylib
    0x7fff213b5000 -     0x7fff21713fff  com.apple.Foundation (6.9 - 1776.103) <3C3B967D-778D-30BF-A3F8-E734FAFD76F2> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x7fff21714000 -     0x7fff217fcfff  com.apple.LanguageModeling (1.0 - 247.3) <58ACD840-A17B-3CB0-B010-7E4493C5BC5C> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
    0x7fff217fd000 -     0x7fff21933fff  com.apple.CoreDisplay (237.3 - 237.3) <65322ECF-632D-362D-870D-5CE69B1B6C60> /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
    0x7fff21934000 -     0x7fff21ba4fff  com.apple.audio.AudioToolboxCore (1.0 - 1181.68) <87BA778B-6634-30D8-BF69-678C36246242> /System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore
    0x7fff21ba5000 -     0x7fff21d8afff  com.apple.CoreText (677.5.0.5 - 677.5.0.5) <C148A259-D01A-3634-9449-119EB084ABA9> /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
    0x7fff21d8b000 -     0x7fff2241bfff  com.apple.audio.CoreAudio (5.0 - 5.0) <E987DC18-3396-3AAD-A66A-2B755C8D242A> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
    0x7fff2241c000 -     0x7fff22770fff  com.apple.security (7.0 - 59754.120.12) <7C3D689E-9B3E-3F73-ACF0-F40C1297D180> /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x7fff22771000 -     0x7fff229d0fff  libicucore.A.dylib (66112) <9957A773-012E-3ABA-9587-CFF787170AE8> /usr/lib/libicucore.A.dylib
    0x7fff229d1000 -     0x7fff229dafff  libsystem_darwin.dylib (1439.100.3) <BF5B5FD8-B5A3-3035-8641-466E625A6CE8> /usr/lib/system/libsystem_darwin.dylib
    0x7fff229db000 -     0x7fff22cc6fff  com.apple.CoreServices.CarbonCore (1307.3 - 1307.3) <1C5425B5-0E8C-3691-99AB-44F17F357C81> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
    0x7fff22cc7000 -     0x7fff22d05fff  com.apple.CoreServicesInternal (476.1.1 - 476.1.1) <6CF5F363-4653-3605-A340-363C743BBEDD> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
    0x7fff22d06000 -     0x7fff22d40fff  com.apple.CSStore (1122.38 - 1122.38) <A664672F-440D-3BA8-8851-68B4C6AB1022> /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore
    0x7fff22d41000 -     0x7fff22deffff  com.apple.framework.IOKit (2.0.2 - 1845.120.6) <C6E70E82-8508-3515-ACE1-361E575D466A> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff22df0000 -     0x7fff22dfbfff  libsystem_notify.dylib (279.40.4) <7FFECC25-FA84-3B59-9CC8-4D9DC84E6EC1> /usr/lib/system/libsystem_notify.dylib
    0x7fff22dfc000 -     0x7fff22e49fff  libsandbox.1.dylib (1441.120.5) <F4FF5F3E-6533-3BD5-8EF1-D298E0C954F6> /usr/lib/libsandbox.1.dylib
    0x7fff22e4a000 -     0x7fff23b92fff  com.apple.AppKit (6.9 - 2022.50.114) <02279013-2888-3A1D-8F28-0C39A64EF5FA> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x7fff23b93000 -     0x7fff23de1fff  com.apple.UIFoundation (1.0 - 728.8) <A901F2AB-A1C3-3BDB-A2ED-33CAEC118589> /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
    0x7fff23de2000 -     0x7fff23df4fff  com.apple.UniformTypeIdentifiers (637 - 637) <8DEE5893-C380-335B-B3DA-DD49DA8FB037> /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers
    0x7fff23df5000 -     0x7fff23f7ffff  com.apple.desktopservices (1.20 - 1346.5.1) <E4F2E32A-6D94-35D5-B510-44C604236A64> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
    0x7fff23f93000 -     0x7fff241a1fff  com.apple.CoreDuet (1.0 - 1) <99A5E510-8D00-32C0-AF4B-5E1CDF48B50D> /System/Library/PrivateFrameworks/CoreDuet.framework/Versions/A/CoreDuet
    0x7fff2425f000 -     0x7fff248e5fff  libnetwork.dylib (2288.121.1) <728F736C-8AB2-30C0-8E61-A84F34642B18> /usr/lib/libnetwork.dylib
    0x7fff248e6000 -     0x7fff24d84fff  com.apple.CFNetwork (1240.0.4 - 1240.0.4) <83684BEF-A3CE-3227-8E10-A8A538CCA9AE> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
    0x7fff24d85000 -     0x7fff24d93fff  libsystem_networkextension.dylib (1295.120.5) <02486B74-EAAD-3055-AE20-F12E79B39297> /usr/lib/system/libsystem_networkextension.dylib
    0x7fff24d94000 -     0x7fff24d94fff  libenergytrace.dylib (22.100.1) <7039CE14-0DED-3FD3-A540-A01DEFC4314D> /usr/lib/libenergytrace.dylib
    0x7fff24d95000 -     0x7fff24df1fff  libMobileGestalt.dylib (978.120.1) <9FF187B8-854F-338D-BD6A-AE142C815617> /usr/lib/libMobileGestalt.dylib
    0x7fff24df2000 -     0x7fff24e08fff  libsystem_asl.dylib (385) <B3E89650-A7FE-3E93-8A1B-D88145FDD45C> /usr/lib/system/libsystem_asl.dylib
    0x7fff24e09000 -     0x7fff24e20fff  com.apple.TCC (1.0 - 1) <5D202FF3-7BD8-3384-A8AB-7D62CD14C412> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
    0x7fff24e21000 -     0x7fff25185fff  com.apple.SkyLight (1.600.0 - 588.1) <D5925B80-2468-3709-9DFD-BEAF418169EC> /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
    0x7fff25186000 -     0x7fff2580ffff  com.apple.CoreGraphics (2.0 - 1463.14.2) <8E1776B9-0046-3FCF-BF54-F76490EA4A27> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
    0x7fff25810000 -     0x7fff25906fff  com.apple.ColorSync (4.13.0 - 3473.4.3) <CB975116-61F8-330F-B111-3F0467F88BC1> /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync
    0x7fff25907000 -     0x7fff25962fff  com.apple.HIServices (1.22 - 716) <132B9E44-BF23-3B61-96F2-7678C81115AA> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
    0x7fff25a56000 -     0x7fff25c16fff  com.apple.Montreal (1.0 - 142) <745B32B7-CBED-3D9B-A95F-C10F31357AA2> /System/Library/PrivateFrameworks/Montreal.framework/Versions/A/Montreal
    0x7fff25d09000 -     0x7fff26128fff  com.apple.CoreData (120 - 1048) <D3DAFFD5-CC38-3A82-B138-015DBFD551D9> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
    0x7fff26129000 -     0x7fff2613efff  com.apple.ProtocolBuffer (1 - 285.24.10.20.1) <C92547DE-86B8-3734-A17D-D0F9B4AE1300> /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
    0x7fff2613f000 -     0x7fff262f2fff  libsqlite3.dylib (321.3) <E9324AF2-968F-3459-A0EB-2FD4E8A3BF09> /usr/lib/libsqlite3.dylib
    0x7fff262f3000 -     0x7fff2636ffff  com.apple.Accounts (113 - 113) <E31BCCDB-C1E3-3C74-9527-EF1643FF6224> /System/Library/Frameworks/Accounts.framework/Versions/A/Accounts
    0x7fff26370000 -     0x7fff26387fff  com.apple.commonutilities (8.0 - 900) <4EBBE25A-3599-3DC8-B846-F90BD23FED85> /System/Library/PrivateFrameworks/CommonUtilities.framework/Versions/A/CommonUtilities
    0x7fff26388000 -     0x7fff26407fff  com.apple.BaseBoard (526 - 526) <ECED5758-3FD9-3F09-8E55-2230E391373A> /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard
    0x7fff26408000 -     0x7fff26450fff  com.apple.RunningBoardServices (1.0 - 505.100.8) <F72D5FDE-6DC0-3068-AD08-CA8D165E574D> /System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices
    0x7fff26451000 -     0x7fff264c5fff  com.apple.AE (918.6 - 918.6) <A9B7A6D0-85CE-31CD-8926-81D3A714AF42> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
    0x7fff264c6000 -     0x7fff264ccfff  libdns_services.dylib (1310.120.71) <6F77A4C7-40B9-3062-8650-6E1E2FD07046> /usr/lib/libdns_services.dylib
    0x7fff264cd000 -     0x7fff264d4fff  libsystem_symptoms.dylib (1431.120.1) <3BEA5355-D267-39D4-8BC6-A1703845BD3F> /usr/lib/system/libsystem_symptoms.dylib
    0x7fff264d5000 -     0x7fff26660fff  com.apple.Network (1.0 - 1) <39B5F4D8-5105-37CB-9F18-2B2C36CB4B42> /System/Library/Frameworks/Network.framework/Versions/A/Network
    0x7fff26661000 -     0x7fff26690fff  com.apple.analyticsd (1.0 - 1) <2DABBC97-042F-39C7-85A5-A6F47BCAC5EC> /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics
    0x7fff26691000 -     0x7fff26693fff  libDiagnosticMessagesClient.dylib (112) <8D0655AC-218F-3AA6-9802-2444E6801067> /usr/lib/libDiagnosticMessagesClient.dylib
    0x7fff26694000 -     0x7fff266e0fff  com.apple.spotlight.metadata.utilities (1.0 - 2150.21) <7CE4BC56-65ED-3D75-8DA0-05EFE1BA2256> /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities
    0x7fff266e1000 -     0x7fff2677bfff  com.apple.Metadata (10.7.0 - 2150.21) <04F83B90-3535-326F-8897-D43F55DDE771> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
    0x7fff2677c000 -     0x7fff26782fff  com.apple.DiskArbitration (2.7 - 2.7) <97F9E5D9-0942-3AD6-8D31-65106C452CB8> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff26783000 -     0x7fff26deafff  com.apple.vImage (8.1 - 544.4) <A711FD44-1495-3D7B-BF5C-E238C17B1A79> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
    0x7fff26deb000 -     0x7fff270c7fff  com.apple.QuartzCore (1.11 - 927.21) <F384A0C0-F855-3B4D-AAD0-E0F0550E226C> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
    0x7fff270c8000 -     0x7fff27109fff  libFontRegistry.dylib (309) <5D9848B3-14C7-34A8-A981-B3C2CFD12BD9> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
    0x7fff2710a000 -     0x7fff2724afff  com.apple.coreui (2.1 - 692.1) <76D85525-8D99-3F0F-BC36-DEA342D4589D> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
    0x7fff2724b000 -     0x7fff27336fff  com.apple.ViewBridge (553.1 - 553.1) <21A4A790-5A90-3C45-979E-9CF3ED9E8092> /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge
    0x7fff27337000 -     0x7fff27342fff  com.apple.PerformanceAnalysis (1.278.3 - 278.3) <3FE8B4FD-B159-38B0-BA07-DE6722AC9F55> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
    0x7fff27343000 -     0x7fff27352fff  com.apple.OpenDirectory (11.4 - 230.40.1) <32596EC3-5500-3B18-ABCD-D92EDEDE74BF> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
    0x7fff27353000 -     0x7fff27372fff  com.apple.CFOpenDirectory (11.4 - 230.40.1) <3AA364D1-58AE-3C8D-B897-5B4AC3256BE7> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
    0x7fff27373000 -     0x7fff2737ffff  com.apple.CoreServices.FSEvents (1290.120.5 - 1290.120.5) <4C4959DF-FE61-30E8-8BBB-3BF674BE203A> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
    0x7fff27380000 -     0x7fff273a4fff  com.apple.coreservices.SharedFileList (144 - 144) <4418DDA1-CA34-3402-97F2-CE9B60019617> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
    0x7fff273a5000 -     0x7fff273a7fff  libapp_launch_measurement.dylib (14.1) <78905455-A807-3D67-AD56-FF8C22D31B16> /usr/lib/libapp_launch_measurement.dylib
    0x7fff273a8000 -     0x7fff273effff  com.apple.CoreAutoLayout (1.0 - 21.10.1) <E848DF1F-1C82-3F04-87B8-9BF0C956A587> /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout
    0x7fff273f0000 -     0x7fff274d2fff  libxml2.2.dylib (34.9) <08E7CAB2-0EED-376C-880A-E52CC01E82F3> /usr/lib/libxml2.2.dylib
    0x7fff274d3000 -     0x7fff27520fff  com.apple.CoreVideo (1.8 - 414.7) <29D4EA46-F0B6-3004-863C-0940ACD200C2> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
    0x7fff27521000 -     0x7fff27523fff  com.apple.loginsupport (1.0 - 1) <02FCC3AF-1E2D-3603-9D6F-33589ED28A00> /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
    0x7fff27524000 -     0x7fff2754bfff  com.apple.aps.framework (4.0 - 4.0) <6BF45799-EAA7-3F54-B3BB-501F40B0F62F> /System/Library/PrivateFrameworks/ApplePushService.framework/Versions/A/ApplePushService
    0x7fff2754c000 -     0x7fff27567fff  com.apple.UserManagement (1.0 - 1) <12F6D91A-C660-37CD-90E7-A0137393F080> /System/Library/PrivateFrameworks/UserManagement.framework/Versions/A/UserManagement
    0x7fff27568000 -     0x7fff276f9fff  com.apple.cloudkit.CloudKit (985 - 985) <B6A0F4FE-3993-3646-B79C-0F34D2AB7F49> /System/Library/Frameworks/CloudKit.framework/Versions/A/CloudKit
    0x7fff2777c000 -     0x7fff27b0bfff  com.apple.CoreML (1.0 - 1) <ECB60EC6-74B3-3A4D-9EA8-61A14BE1B2C0> /System/Library/Frameworks/CoreML.framework/Versions/A/CoreML
    0x7fff2845e000 -     0x7fff284dafff  com.apple.corelocation (2420.19.23 - 2420.19.23) <0D8A0FDD-86BA-30B9-B5A2-0755D880CB2F> /System/Library/Frameworks/CoreLocation.framework/Versions/A/CoreLocation
    0x7fff284db000 -     0x7fff284ebfff  libsystem_containermanager.dylib (318.100.4) <2BBFF58C-D27E-3371-968D-7DE1E53749F6> /usr/lib/system/libsystem_containermanager.dylib
    0x7fff284ec000 -     0x7fff284fdfff  com.apple.IOSurface (290.8.1 - 290.8.1) <BA97183F-8EE4-3833-8AA7-06D9B9D39BDF> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
    0x7fff284fe000 -     0x7fff28507fff  com.apple.IOAccelerator (442.9 - 442.9) <91FA0C86-BD36-373C-B91A-7360D27CA614> /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
    0x7fff28508000 -     0x7fff2862bfff  com.apple.Metal (244.201 - 244.201) <5197E017-D6CD-3611-A8B5-76A4FB901C6A> /System/Library/Frameworks/Metal.framework/Versions/A/Metal
    0x7fff2862c000 -     0x7fff28648fff  com.apple.audio.caulk (1.0 - 70) <B6AB0B5B-ED36-3567-8112-5C9DEDBFBBFA> /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk
    0x7fff28649000 -     0x7fff28733fff  com.apple.CoreMedia (1.0 - 2775.22) <9C15E6D0-245E-3A6E-BC67-C1DF67F7EB2A> /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia
    0x7fff28734000 -     0x7fff28894fff  libFontParser.dylib (305.5.0.1) <DFE3F79C-849C-3FC7-AFC0-24AB83171A36> /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib
    0x7fff28895000 -     0x7fff28b90fff  com.apple.HIToolbox (2.1.1 - 1061.11) <DFAA0674-E367-36D9-925A-4EA9A6954BB0> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
    0x7fff28b91000 -     0x7fff28ba4fff  com.apple.framework.DFRFoundation (1.0 - 266) <0B60B894-C5A5-38F0-8755-53BD217B0E36> /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation
    0x7fff28ba5000 -     0x7fff28ba8fff  com.apple.dt.XCTTargetBootstrap (1.0 - 18119.1) <8828FD40-9EE5-3E09-9DD7-8B7E34B34C26> /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap
    0x7fff28ba9000 -     0x7fff28bd2fff  com.apple.CoreSVG (1.0 - 149) <BA347BBA-DC27-3728-9728-A791957D3F59> /System/Library/PrivateFrameworks/CoreSVG.framework/Versions/A/CoreSVG
    0x7fff28bd3000 -     0x7fff28e0ffff  com.apple.ImageIO (3.3.0 - 2130.5.4) <14E0D520-1EE1-3C80-9827-4E5F513A7289> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
    0x7fff28e10000 -     0x7fff2918bfff  com.apple.CoreImage (16.3.0 - 1140.2) <4A5B2859-C1F7-3938-B4B6-DDEC972798D1> /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
    0x7fff2918c000 -     0x7fff291f2fff  com.apple.MetalPerformanceShaders.MPSCore (1.0 - 1) <20902DA8-4AAB-36C8-9224-4F9E828B465A> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore
    0x7fff291f3000 -     0x7fff291f6fff  libsystem_configuration.dylib (1109.120.1) <C7A9BD10-192B-31D3-92ED-2581A61A99F6> /usr/lib/system/libsystem_configuration.dylib
    0x7fff291f7000 -     0x7fff291fbfff  libsystem_sandbox.dylib (1441.120.5) <DC075A7C-9D4A-32D3-9022-CD47764AFDAD> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff291fc000 -     0x7fff291fdfff  com.apple.AggregateDictionary (1.0 - 1) <4394E8DB-F6D9-3F85-B894-F463378DC1B4> /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary
    0x7fff291fe000 -     0x7fff29201fff  com.apple.AppleSystemInfo (3.1.5 - 3.1.5) <1826DE1C-06B1-3140-A9A2-F7D55C1D9DB6> /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo
    0x7fff29202000 -     0x7fff29203fff  liblangid.dylib (136) <ADE3A41C-F815-39DE-A978-1B0EE456167B> /usr/lib/liblangid.dylib
    0x7fff29204000 -     0x7fff292a8fff  com.apple.CoreNLP (1.0 - 245.2) <9B1C60E4-2B36-34A7-AF43-7EEC914FA1FE> /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP
    0x7fff292a9000 -     0x7fff292affff  com.apple.LinguisticData (1.0 - 399) <48C87E01-670A-336C-9D37-723E06BE422D> /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData
    0x7fff292b0000 -     0x7fff29958fff  libBNNS.dylib (288.100.5) <48BD7046-5DBD-3F3D-AD81-376AD24FA45D> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
    0x7fff29959000 -     0x7fff29b2bfff  libvDSP.dylib (760.100.3) <372AD8C6-F390-3257-A886-D3B545AAB98C> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
    0x7fff29b2c000 -     0x7fff29b3dfff  com.apple.CoreEmoji (1.0 - 128.4) <677784E7-E4E6-3405-AC53-DD66197C4821> /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
    0x7fff29b3e000 -     0x7fff29b48fff  com.apple.IOMobileFramebuffer (343.0.0 - 343.0.0) <A57347A7-1354-3F54-B9EC-E5F83A200AAF> /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer
    0x7fff29b49000 -     0x7fff29c1bfff  com.apple.framework.CoreWLAN (16.0 - 1657) <42166AAE-D9EF-3EE6-A0F3-8B3E320BB39E> /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
    0x7fff29c1c000 -     0x7fff29e1dfff  com.apple.CoreUtils (6.6 - 660.37) <D3F3801B-EC48-3C0B-9438-0C12C4A0BA87> /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils
    0x7fff29e1e000 -     0x7fff29e40fff  com.apple.MobileKeyBag (2.0 - 1.0) <1FCEE156-0810-3425-88FC-E7EA6B38ACA7> /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag
    0x7fff29e41000 -     0x7fff29e51fff  com.apple.AssertionServices (1.0 - 505.100.8) <E691B254-0792-348B-BC13-2B1A490174C4> /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices
    0x7fff29e52000 -     0x7fff29eddfff  com.apple.securityfoundation (6.0 - 55240.40.4) <AD930CCB-A3F5-3C2C-A2CD-9963A63560F5> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
    0x7fff29ede000 -     0x7fff29ee7fff  com.apple.coreservices.BackgroundTaskManagement (1.0 - 104) <4B88024D-62DB-3E5D-BCA2-076663214608> /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement
    0x7fff29ee8000 -     0x7fff29eecfff  com.apple.xpc.ServiceManagement (1.0 - 1) <7E760B22-944C-387A-903F-C9184CE788B9> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
    0x7fff29eed000 -     0x7fff29eeffff  libquarantine.dylib (119.40.2) <4611645F-5817-3A80-8382-2DB03A8C0141> /usr/lib/system/libquarantine.dylib
    0x7fff29ef0000 -     0x7fff29efbfff  libCheckFix.dylib (31) <33CE141E-48F5-3974-BD63-1F63558BB452> /usr/lib/libCheckFix.dylib
    0x7fff29efc000 -     0x7fff29f13fff  libcoretls.dylib (169.100.1) <68726723-2EA1-3007-89ED-F66725A6AA7E> /usr/lib/libcoretls.dylib
    0x7fff29f14000 -     0x7fff29f24fff  libbsm.0.dylib (68.40.1) <77DF90DF-D5C2-3178-AAA7-96FC6D9F2312> /usr/lib/libbsm.0.dylib
    0x7fff29f25000 -     0x7fff29f6efff  libmecab.dylib (929.10) <48F1EC4F-7D85-347F-B20C-7225AF2499A4> /usr/lib/libmecab.dylib
    0x7fff29f6f000 -     0x7fff29f74fff  libgermantok.dylib (24) <171A100F-C862-3CA2-A308-5AA9EF24B690> /usr/lib/libgermantok.dylib
    0x7fff29f75000 -     0x7fff29f8afff  libLinearAlgebra.dylib (1336.120.1) <09738E52-FA24-3239-895D-F762C920F03C> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
    0x7fff29f8b000 -     0x7fff2a1a9fff  com.apple.MetalPerformanceShaders.MPSNeuralNetwork (1.0 - 1) <C515FA90-1022-308E-A513-0EA9831FE712> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork
    0x7fff2a1aa000 -     0x7fff2a1f9fff  com.apple.MetalPerformanceShaders.MPSRayIntersector (1.0 - 1) <1C3D9332-2C1D-3B52-A679-35BC37A3E8F0> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector
    0x7fff2a1fa000 -     0x7fff2a35bfff  com.apple.MLCompute (1.0 - 1) <0B7ADB41-62BE-32EE-821A-BB7141DE8B42> /System/Library/Frameworks/MLCompute.framework/Versions/A/MLCompute
    0x7fff2a35c000 -     0x7fff2a392fff  com.apple.MetalPerformanceShaders.MPSMatrix (1.0 - 1) <D5B2AEEE-3973-35A5-9FF9-1C7C031B7125> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix
    0x7fff2a393000 -     0x7fff2a3e9fff  com.apple.MetalPerformanceShaders.MPSNDArray (1.0 - 1) <0E99566D-A21A-304F-AF1A-A9530AED8A92> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray
    0x7fff2a3ea000 -     0x7fff2a47afff  com.apple.MetalPerformanceShaders.MPSImage (1.0 - 1) <1C395A17-2F98-35A5-B768-F22A714100D0> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage
    0x7fff2a47b000 -     0x7fff2a48afff  com.apple.AppleFSCompression (125 - 1.0) <6BD3FF9C-BCEE-3AB9-AC52-71A75D1C54AD> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
    0x7fff2a48b000 -     0x7fff2a497fff  libbz2.1.0.dylib (44) <CA69420A-25E7-344C-852F-808F09AD43D0> /usr/lib/libbz2.1.0.dylib
    0x7fff2a498000 -     0x7fff2a49cfff  libsystem_coreservices.dylib (127.1) <1E2DA16B-D528-3D43-86C2-2BB9127954A0> /usr/lib/system/libsystem_coreservices.dylib
    0x7fff2a49d000 -     0x7fff2a4cafff  com.apple.CoreServices.OSServices (1122.38 - 1122.38) <D02BE0AC-0544-3D1F-9E79-37715E231214> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
    0x7fff2a4cb000 -     0x7fff2a5fafff  com.apple.AuthKit (1.0 - 1) <C35AA029-1F96-3F5F-B71C-EF55E59F8F0D> /System/Library/PrivateFrameworks/AuthKit.framework/Versions/A/AuthKit
    0x7fff2a699000 -     0x7fff2a6abfff  libz.1.dylib (76) <C1E6CE87-167E-39EC-8B8F-2C3213A0208E> /usr/lib/libz.1.dylib
    0x7fff2a6ac000 -     0x7fff2a6f3fff  libsystem_m.dylib (3186.100.3) <21949128-D4E6-3179-B248-41B05C1CE102> /usr/lib/system/libsystem_m.dylib
    0x7fff2a6f4000 -     0x7fff2a6f4fff  libcharset.1.dylib (59) <4B3453D8-277A-38D3-862D-28DF71F3E285> /usr/lib/libcharset.1.dylib
    0x7fff2a6f5000 -     0x7fff2a6fafff  libmacho.dylib (980) <3677B3B7-03E8-3804-B2FE-5640B18FE40E> /usr/lib/system/libmacho.dylib
    0x7fff2a6fb000 -     0x7fff2a716fff  libkxld.dylib (7195.121.3) <A83BCE3F-35C1-34DD-B1C5-B4FDFB33B250> /usr/lib/system/libkxld.dylib
    0x7fff2a717000 -     0x7fff2a722fff  libcommonCrypto.dylib (60178.120.3) <BBA72D86-B9C1-3123-AE59-D629DE278695> /usr/lib/system/libcommonCrypto.dylib
    0x7fff2a723000 -     0x7fff2a72dfff  libunwind.dylib (201) <3149D79A-911B-39ED-9C93-6C7E6B0860C7> /usr/lib/system/libunwind.dylib
    0x7fff2a72e000 -     0x7fff2a735fff  liboah.dylib (203.46) <0A17EAFC-15E9-37FE-8EE2-DE0F7F220AD8> /usr/lib/liboah.dylib
    0x7fff2a736000 -     0x7fff2a740fff  libcopyfile.dylib (173.40.2) <7304CA0D-E93C-367F-9BEE-AC56B873F06C> /usr/lib/system/libcopyfile.dylib
    0x7fff2a741000 -     0x7fff2a748fff  libcompiler_rt.dylib (102.2) <0DB1902E-C79C-3E26-BE51-F70960ECF0B9> /usr/lib/system/libcompiler_rt.dylib
    0x7fff2a749000 -     0x7fff2a74bfff  libsystem_collections.dylib (1439.100.3) <E180C04A-9CFB-3C8E-9C2B-978D23A99F2A> /usr/lib/system/libsystem_collections.dylib
    0x7fff2a74c000 -     0x7fff2a74efff  libsystem_secinit.dylib (87.60.1) <8C33D323-C11C-34CB-9295-4D7C98B8AFD6> /usr/lib/system/libsystem_secinit.dylib
    0x7fff2a74f000 -     0x7fff2a751fff  libremovefile.dylib (49.120.1) <6DEAEEC9-2A65-3C7B-A9CE-23245772FD07> /usr/lib/system/libremovefile.dylib
    0x7fff2a752000 -     0x7fff2a752fff  libkeymgr.dylib (31) <FD167835-3829-3FFD-B13E-D18113E271AB> /usr/lib/system/libkeymgr.dylib
    0x7fff2a753000 -     0x7fff2a75afff  libsystem_dnssd.dylib (1310.120.71) <7BB607FE-EF79-3144-8BD0-A66792FF1443> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff2a75b000 -     0x7fff2a760fff  libcache.dylib (83) <8B201058-2C34-3C12-9A7A-898CB0AAD150> /usr/lib/system/libcache.dylib
    0x7fff2a761000 -     0x7fff2a762fff  libSystem.B.dylib (1292.120.1) <A8309074-31CC-31F0-A143-81DF019F7A86> /usr/lib/libSystem.B.dylib
    0x7fff2a763000 -     0x7fff2a766fff  libfakelink.dylib (3) <CF7D19AF-D162-369D-9501-0BEAC4D1188E> /usr/lib/libfakelink.dylib
    0x7fff2a767000 -     0x7fff2a767fff  com.apple.SoftLinking (1.0 - 1) <6C04D3E0-BFE0-32E2-A098-46D726F9B429> /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking
    0x7fff2a768000 -     0x7fff2a79ffff  libpcap.A.dylib (98.100.3) <87B9769E-D88E-37F9-BB83-B327527AE79C> /usr/lib/libpcap.A.dylib
    0x7fff2a7a0000 -     0x7fff2a890fff  libiconv.2.dylib (59) <B9FD3BC7-6001-3E60-A7FB-CE8AAE07C805> /usr/lib/libiconv.2.dylib
    0x7fff2a891000 -     0x7fff2a8a2fff  libcmph.dylib (8) <AE1C3A87-5C44-3833-9DE1-31062A878138> /usr/lib/libcmph.dylib
    0x7fff2a8a3000 -     0x7fff2a914fff  libarchive.2.dylib (83.100.2) <5DF98631-FBAC-3F17-B4D1-0115CE6C009B> /usr/lib/libarchive.2.dylib
    0x7fff2a915000 -     0x7fff2a97cfff  com.apple.SearchKit (1.4.1 - 1.4.1) <FBAB58C4-1B62-39E8-9241-93966CC2C9C0> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
    0x7fff2a97d000 -     0x7fff2a97efff  libThaiTokenizer.dylib (3) <1D735582-F932-3279-9F47-D10EAD1CA9A2> /usr/lib/libThaiTokenizer.dylib
    0x7fff2a97f000 -     0x7fff2a9a1fff  com.apple.applesauce (1.0 - 16.28) <F07DA929-24FA-36D3-A356-05C9565AC397> /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce
    0x7fff2a9a2000 -     0x7fff2a9b9fff  libapple_nghttp2.dylib (1.41) <303C40AC-4212-3B20-ABF6-91F46A79B78B> /usr/lib/libapple_nghttp2.dylib
    0x7fff2a9ba000 -     0x7fff2a9d0fff  libSparseBLAS.dylib (1336.120.1) <3C4D290C-13A4-3A3D-B7C9-3BA0A4C9C7A5> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
    0x7fff2a9d1000 -     0x7fff2a9d2fff  com.apple.MetalPerformanceShaders.MetalPerformanceShaders (1.0 - 1) <9D78B798-7218-3327-8E50-CF321EDB22B1> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
    0x7fff2a9d3000 -     0x7fff2a9d7fff  libpam.2.dylib (28.40.1) <A04A5DD4-34DE-3BFB-BB17-BD66F7FBA1B6> /usr/lib/libpam.2.dylib
    0x7fff2a9d8000 -     0x7fff2a9f7fff  libcompression.dylib (96.120.1) <591F0E34-3C41-3D94-98BA-9BB50E608787> /usr/lib/libcompression.dylib
    0x7fff2a9f8000 -     0x7fff2a9fdfff  libQuadrature.dylib (7) <FD523210-15BE-3EE7-B2E2-892A7E198542> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
    0x7fff2a9fe000 -     0x7fff2ad9bfff  libLAPACK.dylib (1336.120.1) <3F036666-341C-3570-8136-CDF170C02DE7> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
    0x7fff2ad9c000 -     0x7fff2adebfff  com.apple.DictionaryServices (1.2 - 341) <3EC1918E-0345-3EC6-BAE0-04B94A0B6809> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
    0x7fff2adec000 -     0x7fff2ae04fff  liblzma.5.dylib (16) <10B7343A-0322-3A1F-B6AE-06FC709F1BDE> /usr/lib/liblzma.5.dylib
    0x7fff2ae05000 -     0x7fff2ae06fff  libcoretls_cfhelpers.dylib (169.100.1) <BACFE067-CAAB-3906-AAE5-A5E78CD22C6D> /usr/lib/libcoretls_cfhelpers.dylib
    0x7fff2ae07000 -     0x7fff2af02fff  com.apple.APFS (1677.120.9 - 1677.120.9) <599AAB82-F105-3ACC-BBFA-2D3D276A312C> /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS
    0x7fff2af03000 -     0x7fff2af10fff  libxar.1.dylib (452) <C5B63994-6F92-395D-9431-1574D6E1D89F> /usr/lib/libxar.1.dylib
    0x7fff2af11000 -     0x7fff2af14fff  libutil.dylib (58.40.2) <4D8FD41B-89A5-31DA-BB0E-7F13C3B1652F> /usr/lib/libutil.dylib
    0x7fff2af15000 -     0x7fff2af3dfff  libxslt.1.dylib (17.4) <CADFABB2-F66B-39FF-B43A-17315815F664> /usr/lib/libxslt.1.dylib
    0x7fff2af3e000 -     0x7fff2af48fff  libChineseTokenizer.dylib (37.1) <44E1A716-E405-3E54-874F-C5011146B318> /usr/lib/libChineseTokenizer.dylib
    0x7fff2af49000 -     0x7fff2b006fff  libvMisc.dylib (760.100.3) <E92C2BF3-02A5-31D1-BF6A-56BBA624CA90> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
    0x7fff2b007000 -     0x7fff2b09efff  libate.dylib (3.0.6) <C73DF462-D92F-366F-ADBE-B140698DEBAF> /usr/lib/libate.dylib
    0x7fff2b09f000 -     0x7fff2b0a6fff  libIOReport.dylib (64.100.1) <E7BCECCB-2F51-3A07-9C56-4EF4AFD59C80> /usr/lib/libIOReport.dylib
    0x7fff2b0a7000 -     0x7fff2b0bafff  com.apple.CrashReporterSupport (10.13 - 15053) <14AF971D-F684-32BD-8BB6-BE9C4A01DDA5> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
    0x7fff2b0d2000 -     0x7fff2b14ffff  com.apple.CVNLP (1.0 - 119) <6C2411EA-C79C-3C9B-BEF2-77EB43D0D746> /System/Library/PrivateFrameworks/CVNLP.framework/Versions/A/CVNLP
    0x7fff2b171000 -     0x7fff2b1a7fff  com.apple.pluginkit.framework (1.0 - 1) <3ED3DACF-9CDA-30F0-8AF6-C44C6EEEC77B> /System/Library/PrivateFrameworks/PlugInKit.framework/Versions/A/PlugInKit
    0x7fff2b1a8000 -     0x7fff2b1affff  libMatch.1.dylib (38) <121C98B5-D188-3E02-890D-F4F2CD91D2F2> /usr/lib/libMatch.1.dylib
    0x7fff2b1b0000 -     0x7fff2b23bfff  libCoreStorage.dylib (554) <3888A24D-7E72-3B58-A252-85373AFF3CE4> /usr/lib/libCoreStorage.dylib
    0x7fff2b23c000 -     0x7fff2b28ffff  com.apple.AppleVAFramework (6.1.3 - 6.1.3) <D39DBE46-4BEB-316F-BAFA-8E2B03BED772> /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA
    0x7fff2b290000 -     0x7fff2b2a8fff  libexpat.1.dylib (26) <C0213844-67CA-38E7-A586-456A645E0BD0> /usr/lib/libexpat.1.dylib
    0x7fff2b2a9000 -     0x7fff2b2b2fff  libheimdal-asn1.dylib (597.121.1) <493CC99B-8939-3F7E-852C-9AB59B0DDC11> /usr/lib/libheimdal-asn1.dylib
    0x7fff2b2b3000 -     0x7fff2b2c7fff  com.apple.IconFoundation (479.4 - 479.4) <C0C5765F-6A1F-3D89-9AEE-5D49520CAAFD> /System/Library/PrivateFrameworks/IconFoundation.framework/Versions/A/IconFoundation
    0x7fff2b2c8000 -     0x7fff2b334fff  com.apple.IconServices (479.4 - 479.4) <8D31CC1A-C609-30EC-BCC3-251F7E4CDC10> /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
    0x7fff2b335000 -     0x7fff2b3d3fff  com.apple.MediaExperience (1.0 - 1) <29CF7489-BA27-3789-95A2-F94CC6F09E7A> /System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience
    0x7fff2b3d4000 -     0x7fff2b3fcfff  com.apple.persistentconnection (1.0 - 1.0) <5E4A9EC5-2E54-3EFF-A330-52C0D42B26AA> /System/Library/PrivateFrameworks/PersistentConnection.framework/Versions/A/PersistentConnection
    0x7fff2b3fd000 -     0x7fff2b40bfff  com.apple.GraphVisualizer (1.0 - 100.1) <FFB7E9D0-F1D6-38E9-8BAD-759C3BFEE379> /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer
    0x7fff2b40c000 -     0x7fff2b827fff  com.apple.vision.FaceCore (4.3.2 - 4.3.2) <5A226A22-20F0-3196-915F-5DF94E1B3070> /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
    0x7fff2b828000 -     0x7fff2b86ffff  com.apple.OTSVG (1.0 - 677.5.0.5) <2E8C5AAB-E14B-3FC4-8872-332690419934> /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG
    0x7fff2b870000 -     0x7fff2b876fff  com.apple.xpc.AppServerSupport (1.0 - 2038.120.1) <256FB87D-3DD1-3B42-B095-B2E5FC3A755B> /System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport
    0x7fff2b877000 -     0x7fff2b889fff  libhvf.dylib (1.0 - $[CURRENT_PROJECT_VERSION]) <C97DAB60-EA72-3822-A5F7-AF29C05DC1DD> /System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib
    0x7fff2b88a000 -     0x7fff2b88cfff  libspindump.dylib (295.2) <63167B4A-D7D5-3146-86B6-988FC0AD4F14> /usr/lib/libspindump.dylib
    0x7fff2b88d000 -     0x7fff2b94dfff  com.apple.Heimdal (4.0 - 2.0) <B7D2D628-4503-3229-BFB4-FF60066104C1> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
    0x7fff2b969000 -     0x7fff2ba40fff  com.apple.corebrightness (1.0 - 1) <9C50B8D6-68C1-3289-8E72-818908DBECCB> /System/Library/PrivateFrameworks/CoreBrightness.framework/Versions/A/CoreBrightness
    0x7fff2baed000 -     0x7fff2bb29fff  com.apple.bom (14.0 - 235) <B6D5DB5C-7E5B-3D1A-993B-06EDA9728BD9> /System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom
    0x7fff2bb2a000 -     0x7fff2bb73fff  com.apple.AppleJPEG (1.0 - 1) <BE3058DB-0D49-3331-87A7-36D4651F143B> /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
    0x7fff2bb74000 -     0x7fff2bc53fff  libJP2.dylib (2130.5.4) <E1F1DA3E-2EC4-3AC9-8171-E4777A9F5DBD> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
    0x7fff2bc54000 -     0x7fff2bc57fff  com.apple.WatchdogClient.framework (1.0 - 98.120.2) <DE7F64ED-82D2-325D-A031-0E805D52514C> /System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient
    0x7fff2bc58000 -     0x7fff2bc8efff  com.apple.MultitouchSupport.framework (4440.3 - 4440.3) <C22A0497-19D3-3365-8F59-9190C510F4BE> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
    0x7fff2bc8f000 -     0x7fff2bdedfff  com.apple.VideoToolbox (1.0 - 2775.22) <88A013B6-FAB1-3BF9-A5C0-A92D8951E9E3> /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox
    0x7fff2bdee000 -     0x7fff2be21fff  libAudioToolboxUtility.dylib (1181.68) <2AF3BF70-DCEC-3884-A75A-DDEF1F304964> /usr/lib/libAudioToolboxUtility.dylib
    0x7fff2be22000 -     0x7fff2be48fff  libPng.dylib (2130.5.4) <3D6AEF53-5D8E-3F8B-B80E-71D848BFD35F> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
    0x7fff2be49000 -     0x7fff2bea8fff  libTIFF.dylib (2130.5.4) <F4B52A0F-2EF6-30BE-9870-CD2E8B5C3318> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
    0x7fff2bea9000 -     0x7fff2bec5fff  com.apple.IOPresentment (58 - 37) <994E2AE6-D25E-32D5-9ABA-5A1979A659FE> /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
    0x7fff2bec6000 -     0x7fff2becdfff  com.apple.GPUWrangler (6.3.3 - 6.3.3) <768299B7-C4B5-307D-A413-52DA0C269A9D> /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler
    0x7fff2bece000 -     0x7fff2bed1fff  libRadiance.dylib (2130.5.4) <5C83C72F-9F7B-341D-ADD7-DA12A728C9EA> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
    0x7fff2bed2000 -     0x7fff2bed7fff  com.apple.DSExternalDisplay (3.1 - 380) <AA11B104-262F-33B2-8564-EF47D24AC2B6> /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay
    0x7fff2bed8000 -     0x7fff2befcfff  libJPEG.dylib (2130.5.4) <70213D93-137E-39CE-82C9-BC238226AC05> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
    0x7fff2befd000 -     0x7fff2bf2cfff  com.apple.ATSUI (1.0 - 1) <63C289D7-9FD8-370D-9DFB-9C2B50E7978A> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI
    0x7fff2bf2d000 -     0x7fff2bf31fff  libGIF.dylib (2130.5.4) <961F6A97-AF22-3A45-BDCF-A425C23CA01A> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
    0x7fff2bf32000 -     0x7fff2bf3bfff  com.apple.CMCaptureCore (1.0 - 82.6) <694884AA-070C-3EE5-B86C-F09ABB93A7D7> /System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore
    0x7fff2bf3c000 -     0x7fff2bf83fff  com.apple.print.framework.PrintCore (16.1 - 531.1) <9D0760A9-DAE8-3BB5-AE31-4D945BA39D48> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
    0x7fff2bf84000 -     0x7fff2c051fff  com.apple.TextureIO (3.10.9 - 3.10.9) <B68C877B-2BE2-3338-AACA-52DDD955017A> /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO
    0x7fff2c052000 -     0x7fff2c05afff  com.apple.InternationalSupport (1.0 - 61.1) <0C4AFFAF-D59F-3B3E-A433-CE03BDE567A8> /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport
    0x7fff2c05b000 -     0x7fff2c0d5fff  com.apple.datadetectorscore (8.0 - 674) <2FC62BC9-F63C-30DB-BFEE-3CB8399D7F18> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
    0x7fff2c0d6000 -     0x7fff2c133fff  com.apple.UserActivity (439 - 439) <2C4D4B39-FA93-3ED5-8417-ACBE6C39BB92> /System/Library/PrivateFrameworks/UserActivity.framework/Versions/A/UserActivity
    0x7fff2c134000 -     0x7fff2c8cefff  com.apple.MediaToolbox (1.0 - 2775.22) <F5CC3EEC-294B-3B88-BEF1-63BEF846EFF0> /System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox
    0x7fff2cd76000 -     0x7fff2cd9efff  com.apple.locationsupport (2420.19.23 - 2420.19.23) <E303FCD8-5B5D-3367-B7B3-144FA7002E24> /System/Library/PrivateFrameworks/LocationSupport.framework/Versions/A/LocationSupport
    0x7fff2cd9f000 -     0x7fff2cdd0fff  libSessionUtility.dylib (76.69) <143B9D4F-FDB1-3366-A20C-4B09A05FE862> /System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib
    0x7fff2cdd1000 -     0x7fff2cf05fff  com.apple.audio.toolbox.AudioToolbox (1.14 - 1.14) <1ABFDEA2-FB20-3E05-B4CC-84A2A796D089> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
    0x7fff2cf06000 -     0x7fff2cf6bfff  com.apple.audio.AudioSession (1.0 - 76.69) <8D52DAFF-EBE7-3631-A645-E5CD509591A0> /System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession
    0x7fff2cf6c000 -     0x7fff2cf7efff  libAudioStatistics.dylib (27.64) <0EF059FC-B386-3595-8BB5-57F0CADAA75F> /usr/lib/libAudioStatistics.dylib
    0x7fff2cf7f000 -     0x7fff2cf8efff  com.apple.speech.synthesis.framework (9.0.65 - 9.0.65) <4E88057A-948F-335D-9675-AAEC73F7DE6A> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
    0x7fff2cf8f000 -     0x7fff2cffbfff  com.apple.ApplicationServices.ATS (377 - 516) <9DFEBC18-3BA6-3588-A5C5-6D974DF284A2> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
    0x7fff2cffc000 -     0x7fff2d014fff  libresolv.9.dylib (68) <0E0E7298-2781-3D72-B40F-5FF7DE7DF068> /usr/lib/libresolv.9.dylib
    0x7fff2d0e2000 -     0x7fff2d146fff  com.apple.CoreMediaIO (1000.0 - 5325) <BD292385-E0B4-3BB9-9D4A-894C4AC6560B> /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/CoreMediaIO
    0x7fff2d147000 -     0x7fff2d226fff  libSMC.dylib (20) <7B4581C7-3E3F-33F7-AC74-BFC57A2991C4> /usr/lib/libSMC.dylib
    0x7fff2d227000 -     0x7fff2d286fff  libcups.2.dylib (494.1) <C96214CD-19F2-334A-95A0-25BA714D984A> /usr/lib/libcups.2.dylib
    0x7fff2d287000 -     0x7fff2d296fff  com.apple.LangAnalysis (1.7.0 - 254) <C53922F5-BD54-3594-9DCF-DF6D0379B40D> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
    0x7fff2d297000 -     0x7fff2d2a1fff  com.apple.NetAuth (6.2 - 6.2) <32C039EF-D063-3F2B-B4AC-3103593A7D4E> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
    0x7fff2d2a2000 -     0x7fff2d2a9fff  com.apple.ColorSyncLegacy (4.13.0 - 1) <6B94034B-8D84-3700-96D3-7A3208231BE9> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy
    0x7fff2d2aa000 -     0x7fff2d2b5fff  com.apple.QD (4.0 - 416) <AA06F3E8-FC88-3501-B05C-F2D0C4F56272> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
    0x7fff2d2b6000 -     0x7fff2d90afff  com.apple.audio.AudioResourceArbitration (1.0 - 1) <21EB0A40-BA39-3423-AA4F-2E2A771157C1> /System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration
    0x7fff2d90b000 -     0x7fff2d916fff  com.apple.perfdata (1.0 - 67.40.1) <9D1542E2-52D5-3372-8F2B-B71E27E8050B> /System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata
    0x7fff2d917000 -     0x7fff2d925fff  libperfcheck.dylib (41) <AE0793DA-378F-343E-82AC-EEFBE0FF1818> /usr/lib/libperfcheck.dylib
    0x7fff2d926000 -     0x7fff2d935fff  com.apple.Kerberos (3.0 - 1) <6D0BA11B-3659-36F0-983E-5D0E51B25912> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
    0x7fff2d936000 -     0x7fff2d986fff  com.apple.GSS (4.0 - 2.0) <398B2978-DB62-3D24-A5DA-36599C401D7F> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
    0x7fff2d987000 -     0x7fff2d997fff  com.apple.CommonAuth (4.0 - 2.0) <A48CDBF5-8251-35AF-90F8-6FD9D64DA2D8> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
    0x7fff2d9ed000 -     0x7fff2da0cfff  com.apple.security.KeychainCircle.KeychainCircle (1.0 - 1) <8493160A-57F2-37E2-8482-FE1619630B59> /System/Library/PrivateFrameworks/KeychainCircle.framework/Versions/A/KeychainCircle
    0x7fff2da0d000 -     0x7fff2da15fff  com.apple.CorePhoneNumbers (1.0 - 1) <514729CE-5C41-3B60-888B-C7267C51B11F> /System/Library/PrivateFrameworks/CorePhoneNumbers.framework/Versions/A/CorePhoneNumbers
    0x7fff2da16000 -     0x7fff2da9ffff  libTelephonyUtilDynamic.dylib (5359.1) <7DA1E30C-A458-31FA-842D-873FDE65FEF9> /usr/lib/libTelephonyUtilDynamic.dylib
    0x7fff2db68000 -     0x7fff2db68fff  liblaunch.dylib (2038.120.1) <FB6430FC-AACB-3AFF-8763-4C5AFABEF40E> /usr/lib/system/liblaunch.dylib
    0x7fff2e34a000 -     0x7fff2e495fff  com.apple.Sharing (1622.1 - 1622.1) <B931F6D8-4831-34ED-A909-BEB824ADF533> /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing
    0x7fff2e496000 -     0x7fff2e5b7fff  com.apple.Bluetooth (8.0.5 - 8.0.5d7) <7630620F-575C-37A6-ACAA-3B9443127E88> /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
    0x7fff2e5d1000 -     0x7fff2e62afff  com.apple.ProtectedCloudStorage (1.0 - 1) <56DAAA40-66D4-3551-B196-B39604874CAA> /System/Library/PrivateFrameworks/ProtectedCloudStorage.framework/Versions/A/ProtectedCloudStorage
    0x7fff2e62b000 -     0x7fff2e68afff  com.apple.QuickLookFramework (5.0 - 928.3) <25339711-C495-35F7-B3C4-9DF7C727E2C5> /System/Library/Frameworks/QuickLook.framework/Versions/A/QuickLook
    0x7fff2e68b000 -     0x7fff2e6a6fff  com.apple.MetalKit (147.1 - 147.1) <0CDAEB1F-E05B-332B-A7D8-2F3F66DFFE06> /System/Library/Frameworks/MetalKit.framework/Versions/A/MetalKit
    0x7fff2e88a000 -     0x7fff2fd7dfff  com.apple.GeoServices (1.0 - 1757.25.3.15.4) <4507DDFE-EFF6-324D-A2BE-7D3FC044C58F> /System/Library/PrivateFrameworks/GeoServices.framework/Versions/A/GeoServices
    0x7fff2fd8a000 -     0x7fff2fdb1fff  com.apple.RemoteViewServices (2.0 - 163) <2D91746F-1F8B-3D03-BED1-C1BD7FA14453> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
    0x7fff2fdb2000 -     0x7fff2fdc1fff  com.apple.SpeechRecognitionCore (6.1.24 - 6.1.24) <4FD3C300-7679-3E30-BC40-5DC933BC287E> /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
    0x7fff2fdc2000 -     0x7fff2fdc9fff  com.apple.speech.recognition.framework (6.0.3 - 6.0.3) <F2C2E4FC-0EE0-38CC-AC0F-8F412A2859EE> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
    0x7fff2fff7000 -     0x7fff2fff7fff  libsystem_product_info_filter.dylib (8.40.1) <D5194AB1-61C4-3C8D-9E3C-C65702BAB859> /usr/lib/system/libsystem_product_info_filter.dylib
    0x7fff300cf000 -     0x7fff300cffff  com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) <E0B5CB04-F282-3BF0-8D14-BE6E3ED7C0A2> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff300f5000 -     0x7fff300f5fff  com.apple.CoreServices (1122.38 - 1122.38) <FEC6CD87-0909-3554-B8F5-CE65A5BB032C> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x7fff302b1000 -     0x7fff302b1fff  com.apple.Accelerate (1.11 - Accelerate 1.11) <2BCB5475-FDEF-379A-BB0E-B1A3AA7F5B83> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
    0x7fff302f2000 -     0x7fff302fdfff  com.apple.MediaAccessibility (1.0 - 130) <F8E31637-2B5F-3D89-94FA-BD4AF8A46BD6> /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility
    0x7fff302fe000 -     0x7fff3031dfff  com.apple.networking.AlgosScoreFramework (1.0 - 1) <C14EC551-82CD-3A04-91F3-C35D48B5B583> /System/Library/PrivateFrameworks/AlgosScoreFramework.framework/Versions/A/AlgosScoreFramework
    0x7fff3031e000 -     0x7fff30322fff  com.apple.AppleSRP (5.0 - 1) <F9D14131-8FEA-3BBF-902E-16754ABE537F> /System/Library/PrivateFrameworks/AppleSRP.framework/Versions/A/AppleSRP
    0x7fff30323000 -     0x7fff3032efff  com.apple.frameworks.CoreDaemon (1.3 - 1.3) <36002664-194B-3D03-8EFC-94AA3857B08B> /System/Library/PrivateFrameworks/CoreDaemon.framework/Versions/B/CoreDaemon
    0x7fff30af3000 -     0x7fff30b58fff  com.apple.CoreBluetooth (1.0 - 1) <AB95AA98-5CDC-3D4D-8478-C6595447837F> /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
    0x7fff30b59000 -     0x7fff30b62fff  com.apple.SymptomDiagnosticReporter (1.0 - 79.120.1) <99674A3B-7319-30F1-922E-D665D01794AF> /System/Library/PrivateFrameworks/SymptomDiagnosticReporter.framework/Versions/A/SymptomDiagnosticReporter
    0x7fff30b63000 -     0x7fff30b75fff  com.apple.PowerLog (1.0 - 1) <0C0F10A0-0079-3C88-8CBC-B052E6023ED4> /System/Library/PrivateFrameworks/PowerLog.framework/Versions/A/PowerLog
    0x7fff30b76000 -     0x7fff30b82fff  com.apple.AppleIDAuthSupport (1.0 - 1) <079E30CC-40B7-3363-9A41-F9A0DE9ED742> /System/Library/PrivateFrameworks/AppleIDAuthSupport.framework/Versions/A/AppleIDAuthSupport
    0x7fff30b83000 -     0x7fff30c2bfff  com.apple.DiscRecording (9.0.3 - 9030.4.5) <55DD9802-821D-35F6-B21B-C96371FE46B4> /System/Library/Frameworks/DiscRecording.framework/Versions/A/DiscRecording
    0x7fff30c2c000 -     0x7fff30c5ffff  com.apple.MediaKit (16 - 927.40.2) <72F9BA2E-AF51-3E05-8DE4-00377CC79609> /System/Library/PrivateFrameworks/MediaKit.framework/Versions/A/MediaKit
    0x7fff30c60000 -     0x7fff30d4bfff  com.apple.DiskManagement (14.0 - 1733.100.4) <6EAC9935-9B5A-3758-92D4-9E13CF570D3A> /System/Library/PrivateFrameworks/DiskManagement.framework/Versions/A/DiskManagement
    0x7fff30d4c000 -     0x7fff31106fff  com.apple.CoreAUC (326.2.0 - 326.2.0) <A03BBCB7-69FA-3E37-AD91-734771D91045> /System/Library/PrivateFrameworks/CoreAUC.framework/Versions/A/CoreAUC
    0x7fff31107000 -     0x7fff3110afff  com.apple.Mangrove (1.0 - 25) <06E20B3A-83F6-36A3-96B8-9185D1B0A42D> /System/Library/PrivateFrameworks/Mangrove.framework/Versions/A/Mangrove
    0x7fff3110b000 -     0x7fff31138fff  com.apple.CoreAVCHD (6.1.0 - 6100.4.1) <B7888146-5DE1-306C-8C9C-E98E763E3A4E> /System/Library/PrivateFrameworks/CoreAVCHD.framework/Versions/A/CoreAVCHD
    0x7fff31139000 -     0x7fff31288fff  com.apple.FileProvider (348.8 - 348.8) <34DFD3C5-B489-3A7A-9EC2-3A1E2970F74D> /System/Library/Frameworks/FileProvider.framework/Versions/A/FileProvider
    0x7fff31289000 -     0x7fff312abfff  com.apple.GenerationalStorage (2.0 - 323) <AF8A2D39-41B5-3229-B780-86622DB977FC> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
    0x7fff31621000 -     0x7fff316effff  com.apple.CoreTelephony (113 - 8260) <6002B10B-0B59-3BC0-B391-7576291865D4> /System/Library/Frameworks/CoreTelephony.framework/Versions/A/CoreTelephony
    0x7fff31714000 -     0x7fff318a8fff  com.apple.AVFCore (1.0 - 2015.22.4.1) <74A21338-3085-30C2-B847-115DE68E2C88> /System/Library/PrivateFrameworks/AVFCore.framework/Versions/A/AVFCore
    0x7fff318a9000 -     0x7fff31918fff  com.apple.FrontBoardServices (703.16 - 703.16) <2EC33C3E-5E19-39D0-A68B-49AEBA793A51> /System/Library/PrivateFrameworks/FrontBoardServices.framework/Versions/A/FrontBoardServices
    0x7fff31919000 -     0x7fff31942fff  com.apple.BoardServices (1.0 - 526) <E3782FD7-8D04-3554-BEDF-EB5A95EFCB2F> /System/Library/PrivateFrameworks/BoardServices.framework/Versions/A/BoardServices
    0x7fff31af5000 -     0x7fff31b34fff  com.apple.AppleVPAFramework (3.26.1 - 3.26.1) <32F14A37-1FAB-3216-B3FD-D1FA9E4790DC> /System/Library/PrivateFrameworks/AppleVPA.framework/Versions/A/AppleVPA
    0x7fff31be7000 -     0x7fff31c22fff  com.apple.DebugSymbols (195.1 - 195.1) <A8313A86-04C7-37DC-A5D7-FF54EE39BC70> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
    0x7fff31c23000 -     0x7fff31cd8fff  com.apple.CoreSymbolication (12.5 - 64544.69.1) <8D4E5AA8-8C09-31A7-AABE-AA9421781821> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
    0x7fff31cd9000 -     0x7fff31ce2fff  com.apple.CoreTime (284.0.4) <A9351B53-5048-39AD-BC68-170474CAB8CB> /System/Library/PrivateFrameworks/CoreTime.framework/Versions/A/CoreTime
    0x7fff31ce3000 -     0x7fff31d58fff  com.apple.Rapport (2.5.0 - 250.5) <BF029957-E942-3D6C-8BC6-65A495DF8930> /System/Library/PrivateFrameworks/Rapport.framework/Versions/A/Rapport
    0x7fff32611000 -     0x7fff3265dfff  com.apple.coreduetcontext (1.0 - 1) <4787141A-0DFB-3198-91F8-ECEACD6E48A8> /System/Library/PrivateFrameworks/CoreDuetContext.framework/Versions/A/CoreDuetContext
    0x7fff3265e000 -     0x7fff32bcafff  com.apple.Intents (1.0 - 1) <D94DC04B-C226-3471-987C-098B6177A978> /System/Library/Frameworks/Intents.framework/Versions/A/Intents
    0x7fff32bcb000 -     0x7fff32c2efff  com.apple.framework.Apple80211 (17.0 - 1728) <6C1C9532-AD79-3E68-BFBB-2279AC8EA776> /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211
    0x7fff32c2f000 -     0x7fff32d80fff  com.apple.CoreWiFi (3.0 - 341) <E1A3027C-0657-3609-8F5C-D89BF6B4B422> /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi
    0x7fff32d81000 -     0x7fff32d9bfff  com.apple.BackBoardServices (1.0 - 1.0) <9CDA42E0-5F41-3647-866A-D3C265B21A57> /System/Library/PrivateFrameworks/BackBoardServices.framework/Versions/A/BackBoardServices
    0x7fff32ff1000 -     0x7fff33000fff  com.apple.RemoteServiceDiscovery (1.0 - 1.120.1) <00009125-85E9-3214-9CA3-EC1AB4EF8D77> /System/Library/PrivateFrameworks/RemoteServiceDiscovery.framework/Versions/A/RemoteServiceDiscovery
    0x7fff3305e000 -     0x7fff33061fff  com.apple.help (1.3.8 - 71) <F8B97715-17C5-3789-8B89-5F08EFB70709> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
    0x7fff33062000 -     0x7fff33069fff  com.apple.EFILogin (2.0 - 2) <32EC4CD5-A6BD-31E9-BE52-BF79845F9EDB> /System/Library/PrivateFrameworks/EFILogin.framework/Versions/A/EFILogin
    0x7fff3306a000 -     0x7fff33075fff  libcsfde.dylib (554) <D4C66851-FDFC-3B94-8B21-DCA76BDFE724> /usr/lib/libcsfde.dylib
    0x7fff332b4000 -     0x7fff332b4fff  com.apple.ApplicationServices (48 - 50) <374F91E8-9983-363E-B1E1-85CEB46A5D1E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
    0x7fff335c9000 -     0x7fff335c9fff  libHeimdalProxy.dylib (79) <68F67BFE-F1E8-341C-A065-08954EF3F684> /System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib
    0x7fff3367c000 -     0x7fff3367cfff  com.apple.audio.units.AudioUnit (1.14 - 1.14) <CD5DF240-D8F7-3349-88DC-423962E5A289> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
    0x7fff336e4000 -     0x7fff33702fff  com.apple.DuetActivityScheduler (1.0 - 1) <9FF58D0E-56F1-38EB-96C6-D1BA55BE1EBE> /System/Library/PrivateFrameworks/DuetActivityScheduler.framework/Versions/A/DuetActivityScheduler
    0x7fff33717000 -     0x7fff33723fff  com.apple.IntentsFoundation (1.0 - 1) <A8E0A941-62E9-3C44-AC27-4735C31E76B6> /System/Library/PrivateFrameworks/IntentsFoundation.framework/Versions/A/IntentsFoundation
    0x7fff33724000 -     0x7fff33729fff  com.apple.PushKit (1.0 - 1) <03F9CDE4-B5D7-3B6B-A87F-710ED5419A82> /System/Library/Frameworks/PushKit.framework/Versions/A/PushKit
    0x7fff3372a000 -     0x7fff3375dfff  com.apple.C2 (1.3 - 573) <06D74CE3-4E9E-3BD6-A8F2-139BAE23437A> /System/Library/PrivateFrameworks/C2.framework/Versions/A/C2
    0x7fff3375e000 -     0x7fff3378efff  com.apple.QuickLookThumbnailing (1.0 - 135.5) <9442BCC8-9ED9-360E-82FA-648E6E37E993> /System/Library/Frameworks/QuickLookThumbnailing.framework/Versions/A/QuickLookThumbnailing
    0x7fff3378f000 -     0x7fff33f90fff  com.apple.vision.EspressoFramework (1.0 - 256.4.4) <2EBDF634-79CA-3977-9475-F972111CD0D8> /System/Library/PrivateFrameworks/Espresso.framework/Versions/A/Espresso
    0x7fff33f91000 -     0x7fff33fa8fff  com.apple.ANEServices (4.75 - 4.75) <B9463BEA-1D41-3752-9B6B-23030C33E91D> /System/Library/PrivateFrameworks/ANEServices.framework/Versions/A/ANEServices
    0x7fff340bd000 -     0x7fff340bffff  com.apple.CoreDuetDebugLogging (1.0 - 1) <5F33048C-F4E2-331E-8FCE-3EA938BEFBA3> /System/Library/PrivateFrameworks/CoreDuetDebugLogging.framework/Versions/A/CoreDuetDebugLogging
    0x7fff340c0000 -     0x7fff340ccfff  com.apple.CoreDuetDaemonProtocol (1.0 - 1) <F29DAB6C-45E3-3C08-91C4-82AC67BB3E91> /System/Library/PrivateFrameworks/CoreDuetDaemonProtocol.framework/Versions/A/CoreDuetDaemonProtocol
    0x7fff3464b000 -     0x7fff3469bfff  com.apple.ChunkingLibrary (334.1 - 334.1) <27ED7D22-A3D4-3161-A5DF-485711DB2F48> /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
    0x7fff34f0f000 -     0x7fff34f24fff  com.apple.CoreML.AppleNeuralEngine (1.0 - 1) <45EF4CAF-6202-303F-BB4F-8CC0EC8AE20B> /System/Library/PrivateFrameworks/AppleNeuralEngine.framework/Versions/A/AppleNeuralEngine
    0x7fff350a7000 -     0x7fff350aafff  com.apple.Cocoa (6.11 - 23) <2686C6E1-1182-34AA-9A3A-F7BC19DED4CB> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
    0x7fff35c6a000 -     0x7fff35c71fff  com.apple.DisplayServicesFW (3.1 - 380) <188826AE-34D8-39C6-B58B-10EFEB683DA7> /System/Library/PrivateFrameworks/DisplayServices.framework/Versions/A/DisplayServices
    0x7fff364e3000 -     0x7fff36503fff  com.apple.MarkupUI (1.0 - 383.6) <283E1B55-1E46-3FC1-9DC3-48C07B432FAC> /System/Library/PrivateFrameworks/MarkupUI.framework/Versions/A/MarkupUI
    0x7fff36518000 -     0x7fff3653bfff  com.apple.openscripting (1.7 - 190) <9EAC55CC-0ECC-3B41-BF97-53C32496C689> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
    0x7fff3653c000 -     0x7fff3653ffff  com.apple.securityhi (9.0 - 55008) <56A728F6-162E-31DE-9C29-FB1BE44C6B89> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
    0x7fff36540000 -     0x7fff36543fff  com.apple.ink.framework (10.15 - 227) <65FAEF94-F18C-30E0-8129-952DE19A5FAF> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
    0x7fff36544000 -     0x7fff36547fff  com.apple.CommonPanels (1.2.6 - 101) <45DFDB05-1408-34B4-A2AD-5416C5176C26> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
    0x7fff36548000 -     0x7fff3654ffff  com.apple.ImageCapture (1711.5.2 - 1711.5.2) <E3BCD3B4-4792-390D-890B-B7A860088A4C> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
    0x7fff36550000 -     0x7fff3773cfff  com.apple.JavaScriptCore (16611 - 16611.2.7.1.4) <DFBCB49C-2D23-3C51-BAD0-54C1B67585BA> /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore
    0x7fff377a8000 -     0x7fff378bafff  com.apple.AVFCapture (1.0 - 82.6) <30FBE4F0-8C28-3C34-9F0E-C4B6BF0A631B> /System/Library/PrivateFrameworks/AVFCapture.framework/Versions/A/AVFCapture
    0x7fff378bb000 -     0x7fff3794efff  com.apple.Quagga (47 - 47) <B3799C11-61CD-3312-8B52-3437352F819F> /System/Library/PrivateFrameworks/Quagga.framework/Versions/A/Quagga
    0x7fff3794f000 -     0x7fff37b99fff  com.apple.CMCapture (1.0 - 82.6) <C539C9A9-C030-36BA-B0CD-4FBDA9B8EFEF> /System/Library/PrivateFrameworks/CMCapture.framework/Versions/A/CMCapture
    0x7fff38595000 -     0x7fff385a4fff  com.apple.HID (1.0 - 1) <8D5F9ECE-C388-3B08-B402-99C6BD6B4453> /System/Library/PrivateFrameworks/HID.framework/Versions/A/HID
    0x7fff385a5000 -     0x7fff386ccfff  com.apple.QuickLookUIFramework (5.0 - 928.3) <BEA1EAD5-A855-360B-A150-AB884F5E6790> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuickLookUI.framework/Versions/A/QuickLookUI
    0x7fff3936d000 -     0x7fff39374fff  com.apple.URLFormatting (146 - 146.22) <B8FC8B2F-B9E3-39E0-A1EE-2949B171A29F> /System/Library/PrivateFrameworks/URLFormatting.framework/Versions/A/URLFormatting
    0x7fff3bdbe000 -     0x7fff3bde0fff  com.apple.quicklook.QuickLookSupport (1.0 - 135.5) <F80D39B4-AB88-3B66-982D-BECDEE76F3F5> /System/Library/PrivateFrameworks/QuickLookSupport.framework/Versions/A/QuickLookSupport
    0x7fff3bde1000 -     0x7fff3be78fff  com.apple.AirPlaySync (1.0 - 2775.22) <40966FF0-FE78-3C88-A842-AA3340DE5F21> /System/Library/PrivateFrameworks/AirPlaySync.framework/Versions/A/AirPlaySync
    0x7fff3ca05000 -     0x7fff3ca88fff  com.apple.CorePDF (4.0 - 529) <4080F36F-C11B-3851-AB20-D6791E8E19FE> /System/Library/PrivateFrameworks/CorePDF.framework/Versions/A/CorePDF
    0x7fff3ca89000 -     0x7fff3ca8cfff  com.apple.print.framework.Print (15 - 271) <5A0FE511-37C2-3065-9066-34F8F9EA23E5> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
    0x7fff3ca8d000 -     0x7fff3ca90fff  com.apple.Carbon (160 - 164) <967F26C3-8582-3A33-945F-DDA8F103B2E2> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
    0x7fff3cb89000 -     0x7fff3cb89fff  com.apple.avfoundation (2.0 - 2015.22.4.1) <8605C616-EB49-3FCE-9489-6CA5CFCDD006> /System/Library/Frameworks/AVFoundation.framework/Versions/A/AVFoundation
    0x7fff3cd43000 -     0x7fff3cd62fff  com.apple.private.SystemPolicy (1.0 - 1) <CAB3E8CD-1F31-343F-ABC1-9448543F211F> /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy
    0x7fff3cf06000 -     0x7fff3cf23fff  com.apple.sidecar-core (1.0 - 231) <D36E1746-161B-3A32-A962-617389DE34AA> /System/Library/PrivateFrameworks/SidecarCore.framework/Versions/A/SidecarCore
    0x7fff3cf24000 -     0x7fff3cf27fff  com.apple.QuickLookNonBaseSystem (1.0 - 1) <432514FB-F146-3B2D-A2D6-42717A181EEF> /System/Library/PrivateFrameworks/QuickLookNonBaseSystem.framework/Versions/A/QuickLookNonBaseSystem
    0x7fff3d4b6000 -     0x7fff3d4cdfff  com.apple.SafariServices.framework (16611 - 16611.2.7.1.4) <6C92702E-89B9-3572-B4FC-736D2041F3F1> /System/Library/Frameworks/SafariServices.framework/Versions/A/SafariServices
    0x7fff3d67d000 -     0x7fff3d688fff  com.apple.MallocStackLogging (1.0 - 1) <394E6F65-386E-3488-BD68-1D3C2418694B> /System/Library/PrivateFrameworks/MallocStackLogging.framework/Versions/A/MallocStackLogging
    0x7fff3d69d000 -     0x7fff3d6affff  libmis.dylib (274.120.2) <1DE29019-5ECB-3BE2-8492-2385ED241950> /usr/lib/libmis.dylib
    0x7fff3d6cc000 -     0x7fff3d83bfff  com.apple.CoreHandwriting (161 - 1.2) <89ADBC17-A8F8-37E4-AE0E-5533272CA19A> /System/Library/PrivateFrameworks/CoreHandwriting.framework/Versions/A/CoreHandwriting
    0x7fff3d83c000 -     0x7fff3da97fff  com.apple.imageKit (3.0 - 1100) <6990E5BB-D8F0-349F-84F7-2EABB7A1FDDB> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/ImageKit.framework/Versions/A/ImageKit
    0x7fff3da98000 -     0x7fff3dbaefff  com.apple.PencilKit (1.0 - 1) <DADEFB75-EEE0-3B2A-A5B4-310E6E176136> /System/Library/Frameworks/PencilKit.framework/Versions/A/PencilKit
    0x7fff3dbaf000 -     0x7fff3dbc0fff  com.apple.sidecar-ui (1.0 - 231) <70E26CB2-6C08-3F1A-A79F-66D13B8BF78F> /System/Library/PrivateFrameworks/SidecarUI.framework/Versions/A/SidecarUI
    0x7fff3e1e3000 -     0x7fff3e245fff  com.apple.ImageCaptureCore (1711.5.2 - 1711.5.2) <78B6D62A-A83A-3F64-BAB1-A495534AEC18> /System/Library/Frameworks/ImageCaptureCore.framework/Versions/A/ImageCaptureCore
    0x7fff3e246000 -     0x7fff3e26bfff  com.apple.quartzfilters (1.10.0 - 98) <8A99BBE1-9979-35CF-8054-33DF7E259E85> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzFilters.framework/Versions/A/QuartzFilters
    0x7fff3e927000 -     0x7fff3ea53fff  com.apple.AnnotationKit (1.0 - 383.6) <7170CD9B-2447-3EDA-A705-6A9FF08175C9> /System/Library/PrivateFrameworks/AnnotationKit.framework/Versions/A/AnnotationKit
    0x7fff3ea54000 -     0x7fff3eef4fff  com.apple.QuartzComposer (5.1 - 383) <D24E9DF5-2FEB-36ED-81DB-0E11D32EEFF5> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzComposer.framework/Versions/A/QuartzComposer
    0x7fff3eef5000 -     0x7fff3efddfff  com.apple.PDFKit (1.0 - 950.40.3) <EE136A8A-EB2E-343C-8ADB-F574A510EFDF> /System/Library/Frameworks/PDFKit.framework/Versions/A/PDFKit
    0x7fff40f37000 -     0x7fff40f3afff  com.apple.quartzframework (1.5 - 25) <60A5AD3A-4B26-35E5-824B-70AF8DF69D79> /System/Library/Frameworks/Quartz.framework/Versions/A/Quartz
    0x7fff4135f000 -     0x7fff4137dfff  libCGInterfaces.dylib (544.4) <02C89930-F64D-354E-8C18-F3DDB419DC8D> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/Libraries/libCGInterfaces.dylib
    0x7fff47a82000 -     0x7fff47ac2fff  com.apple.osanalytics.OSAnalytics (1.0 - 1) <96B8D855-E10D-3E40-884F-DA0BBAE9F48F> /System/Library/PrivateFrameworks/OSAnalytics.framework/Versions/A/OSAnalytics
    0x7fff48a3e000 -     0x7fff494a7fff  com.apple.ModelIO (246.5 - 246.5) <F0707E2F-C0FE-3770-BCCB-D7FA8A5F6325> /System/Library/Frameworks/ModelIO.framework/Versions/A/ModelIO
    0x7fff51722000 -     0x7fff517c1fff  com.apple.Symbolication (12.5 - 64544.70.1) <B57534E5-43D5-38CA-9A8C-A66EBDFB820A> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
    0x7fff6bb9d000 -     0x7fff6bba3fff  libCoreFSCache.dylib (200.9) <12A2A7E7-39F7-30A5-AC0B-E09947417D3E> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
    0x7fff6bba4000 -     0x7fff6bba8fff  libCoreVMClient.dylib (200.9) <F8C4D017-075A-37B2-AE8D-8CEB5FE1BC9B> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
    0x7fff6bba9000 -     0x7fff6bbb8fff  com.apple.opengl (18.5.9 - 18.5.9) <1422D0CA-C3E2-3309-8897-018E651CB74E> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
    0x7fff6bbb9000 -     0x7fff6bbbbfff  libCVMSPluginSupport.dylib (18.5.9) <AC7D4088-7CA8-3A0B-9B55-08427083C382> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
    0x7fff6bbbc000 -     0x7fff6bbc4fff  libGFXShared.dylib (18.5.9) <76ABDB4A-3687-39E0-B8FB-125717742431> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
    0x7fff6bbc5000 -     0x7fff6bbf8fff  libGLImage.dylib (18.5.9) <750C938A-9F4F-3BAD-8D3F-03EF619F28AD> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
    0x7fff6bbf9000 -     0x7fff6bc35fff  libGLU.dylib (18.5.9) <4A77F717-2BBC-3439-AE10-694E82C0A184> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
    0x7fff6bdca000 -     0x7fff6bdd4fff  libGL.dylib (18.5.9) <95D5C72E-9352-39EC-83B1-6BB295A83462> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
    0x7fff6d214000 -     0x7fff6d26cfff  com.apple.opencl (4.6 - 4.6) <769BB23D-09E5-3A3A-B2EA-310157AA206D> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
    0x7fff6e31e000 -     0x7fff6e405fff  com.apple.audio.AVFAudio (1.0 - 477.87) <B762E01A-23A5-3F51-A1BE-EDDD5A2FDE4B> /System/Library/Frameworks/AVFAudio.framework/Versions/A/AVFAudio
    0x7fff6f983000 -     0x7fff6f995fff  com.apple.CMImaging (1.0 - 82.6) <AACD534A-7769-3B70-9C43-5F53FD726895> /System/Library/PrivateFrameworks/CMImaging.framework/Versions/A/CMImaging
    0x7fff77a12000 -     0x7fff77a19fff  libRosetta.dylib (203.46) <0A17EAFC-15E9-37FE-8EE2-DE0F7F220AD8> /usr/lib/libRosetta.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 5
    thread_create: 0
    thread_set_state: 954

VM Region Summary:
ReadOnly portion of Libraries: Total=803.1M resident=0K(0%) swapped_out_or_unallocated=803.1M(100%)
Writable regions: Total=1.2G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.2G(100%)
 
                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Activity Tracing                   256K        1 
CG backing stores                 5760K        6 
CoreGraphics                         4K        1 
CoreServices                       120K        1 
Foundation                          16K        1 
Kernel Alloc Once                    8K        1 
MALLOC                           256.4M       46 
MALLOC guard page                   48K       10 
MALLOC_MEDIUM (reserved)         600.0M        5         reserved VM address space (unallocated)
MALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)
STACK GUARD                       56.0M        5 
Stack                             10.0M        5 
VM_ALLOCATE                         68K       15 
__DATA                            17.3M      367 
__DATA_CONST                      18.9M      221 
__DATA_DIRTY                      1098K      143 
__FONT_DATA                          4K        1 
__LINKEDIT                       499.9M        7 
__OBJC_RO                         70.2M        1 
__OBJC_RW                         2480K        2 
__TEXT                           303.3M      372 
__UNICODE                          588K        1 
mapped file                       93.3M       27 
shared memory                      760K       15 
===========                     =======  ======= 
TOTAL                              2.3G     1255 
TOTAL, minus reserved VM space     1.3G     1255 

Model: iMacPro1,1, BootROM 1554.120.19.0.0 (iBridge: 18.16.14663.0.0,0), 8 processors, 8-Core Intel Xeon W, 3.2 GHz, 32 GB, SMC 
Graphics: kHW_AMDRadeonProVega56Item, Radeon Pro Vega 56, spdisplays_pcie_device, 8 GB
Memory Module: NODE 1/CPU1_DIMM_A0, 8 GB, DDR4, 2666 MHz, Hynix, HMA81GR7AFR8N-VK
Memory Module: NODE 1/CPU1_DIMM_B0, 8 GB, DDR4, 2666 MHz, Hynix, HMA81GR7AFR8N-VK
Memory Module: NODE 1/CPU1_DIMM_C0, 8 GB, DDR4, 2666 MHz, Hynix, HMA81GR7AFR8N-VK
Memory Module: NODE 1/CPU1_DIMM_D0, 8 GB, DDR4, 2666 MHz, Hynix, HMA81GR7AFR8N-VK
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x7BF), wl0: Feb 16 2021 02:10:42 version 9.30.444.10.32.5.67 FWID 01-a00c1314
Bluetooth: Version 8.0.5d7, 3 services, 27 devices, 1 incoming serial ports
Network Service: Ethernet, Ethernet, en0
Network Service: Wi-Fi, AirPort, en1
USB Device: USB 3.0 Bus
USB Device: Extreme 55AE
USB Device: Apple T2 Bus
USB Device: Headset
USB Device: Ambient Light Sensor
USB Device: FaceTime HD Camera (Built-in)
USB Device: Apple T2 Controller
Thunderbolt Bus: iMac Pro, Apple Inc., 41.5
Thunderbolt Bus: iMac Pro, Apple Inc., 41.5

kramv crashes opening most .ktx2 files

I've tried several .ktx2 files from my test corpus. kramv crashed opening all of them except for a uastc/zstd compressed cubemap which it reported being unable to open (fair enough you don't claim to support uastc/zstd yet) and an etc2_rgba8 file which it opened successfully. One case which points to an issue with your KTX v2 handling is that when opening a BC2-compressed .ktx file kramv said it was unable to open it. When opening the exactly equivalent .ktx2 file, it crashed.

I will remove kramv from our Tools Guide until these issues are fixed.

Do you plan to support BasisU compressed .ktx2 files, that is ETC1S/BasisLZ and UASTC/zstd compressed files. Do you plan to support zstd compression on other texture formats where it makes sense, e.g, ASTC?

Support legacy DDS format?

It seems all the DDS files I have do not support the DX10 extension and so I cannot use them with kram. Do you have any plans to add support for what I believe is the 'legacy' DDS format without the DX10 extension?

Option -mipmax without effect

Apparently the option -mipmax 1024 is without effect.

I was converting a 4k texture with the following command:
./kram encode -f bc7 -mipmax 1024 -i arc_basecolor.png -o arc_basecolor.ktx2

But the resulting ktx2 file still shows a 4k texture in the largest mipmap.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.