Skip to content
Vitaly Murashov edited this page Oct 3, 2026 · 1 revision

GUI

SLTextureDecoderGUI.exe is the Qt 6 Widgets front end. It does the same work as the command line tool, through the same batch engine, with a window instead of a log file.

.\build\bin\SLTextureDecoderGUI.exe

The window

+------------------------------------------------------------------+
| Cache and output                                                 |
|   Cache folder  [ D:\FS Cache\texturecache            ] [Browse] |
|   Output folder [ D:\textures                         ] [Browse] |
|   196700 records, 54825 decodable textures, encoder KDU v8.4.1   |
+------------------------------------------------------------------+
| Options                                                          |
|   [ ] Complete records only   [ ] Overwrite existing files       |
|   [ ] Verbose log                       Threads: [ 4]  Limit: [all] |
+------------------------------------------------------------------+
| [Start conversion] [Cancel] [Open output folder]       [Clear log] |
| [===============================                    ]             |
| 120 of 300 converted - 118 written (83 best effort), ...          |
+------------------------------------------------------------------+
| results list (uuid.png, size, components) | preview of the PNG    |
|                                           |                       |
+------------------------------------------------------------------+
| log view (coloured: info / verbose / warning / error)             |
+------------------------------------------------------------------+
| Ready                      Educational use only - not affiliated  |
+------------------------------------------------------------------+
Field Meaning
Cache folder the directory holding texture.entries, texture.cache and the 0..f shards; the tooltip repeats the usual %APPDATA%\SecondLife_x64\texturecache location
Output folder empty means <cache>/png; picking a cache folder fills it with <cache>/png if it is still empty
cache info line after a cache is chosen (or the path is edited): N records, M decodable textures, encoder ..., or Not a usable cache: <reason>
Complete records only --complete-only: skip the records whose cached codestream is truncated
Overwrite existing files --overwrite; without it a texture whose PNG is already there is skipped, which is how a run is resumed
Verbose log log every texture instead of only warnings and errors
Threads worker threads, 0 shown as auto = one per logical CPU (the default)
Limit convert at most this many textures, 0 shown as all

Buttons: Start conversion (browse folders, then go), Cancel (stops the run after the textures currently being decoded - the status line says "Cancelling..."), Open output folder (enabled after a run), Clear log.

The results list keeps the first 2000 textures of a run as <uuid>.png 512x512 3 comp 1.2 MiB, with (partial) for best effort results. Selecting an entry previews the PNG (scaled to at most 512x512) on the right.

Settings

Everything you set is remembered in QSettings("SLTextureDecoder", "GUI"), i.e. the registry key:

HKCU\Software\SLTextureDecoder\GUI
    cacheDir, outputDir, completeOnly, overwrite, verbose, jobs, limit

Settings are written when a run starts, when the window closes and when a path field is finished editing. Delete the key to get the defaults back.

Closing the window while a run is active

Closing asks the worker to stop and waits up to 15 seconds for the texture that is currently being decoded. If it is still busy, the window stays open and tells you to close it again in a moment - that way no half written PNG is left behind.

Headless mode

The same binary converts without a window, which is what makes it suitable for a scheduled task:

SLTextureDecoderGUI.exe --batch --jobs 4 --cache-dir "D:\FS Cache\texturecache" --out-dir D:\textures
  • --batch never creates a QApplication window and attaches to the console of the calling shell (--batch > run.log still works).
  • All CLI options are accepted (--limit, --complete-only, --id, --index, -v, ...) plus --jobs <n> / --jobs=<n>, where 0 (the default) means one worker per logical CPU.
  • Exit codes are those of Usage.
  • --version prints the version plus the educational-use and no-affiliation line, --help appends the two GUI-only options to the CLI help.

Legal reminder in the window

The status bar keeps a permanent label

Educational use only - not affiliated with Linden Lab or the Firestorm project

with a tooltip explaining that the cache is opened read-only, that no network access happens and that the rights in the textures stay with their creators. The same text is available from the command line through --help / --version, and the full notice is in NOTICE.md

Clone this wiki locally