* Implement Area sampler for scaling the internal resolution
* Move resampling to before RmlUi instead of inside it
Allows non-Bilinear resampling to work regardless of RmlUi being init
Getting a *lot* of crashes in Sentry that seem to be this function allocating invalid render textures? So let's add a guard so we maybe can catch it in the act.
* begin work on integration
* draw null tex when tex handle is null, switch to immediates for geometry translation
* fix window resizing and texture loads, switch to dynamic ubo
* remove immediate usage
* Add initial rmlui public API
* Use proper dimensions; fix texture resolution
* Remove unnecessary SetDimensions
* Cleanup & add clip mask support
* Implement blur and shadow filters
---------
Co-authored-by: Luke Street <luke@street.dev>
This is a breaking change: `GXSetViewport`, `GXSetScissor`, `GXSetTexCopySrc`, `GXSetTexCopyDst` now accept logical coords relative to the `VIConfigure` EFB size.
`GXSetViewportRender` and `GXSetScissorRender` are used to override the scaled viewport/scissor from the logical coords.
* Set up dawn cache
Massively speeds up pipeline compilation on the second go around, especially for D3D12.
Currently, uses SQLite for the cache. SQLite is committed in as the "amalgam" blob, but I'm open for better ways to fetch it.
* Compress cache contents with zstd
More significantly for Vulkan, less so for D3D12.
* Store cache keys as XXH128 instead
This reduces the size of the D3D12 cache by a ridiculous amount
* Stop using exceptions for error handling
* FetchContent for sqlite; cleanup & make zstd optional
---------
Co-authored-by: Luke Street <luke@street.dev>
* Add functionality to lock GX framebuffer aspect ratio
This leaves the imgui (so including OS) framebuffer alone.
AuroraWindowSize now has new fields for the native framebuffer, the aspect ratio controls modify the existing fields.
* Fix from merge
* fix gx_test_stubs.cpp
- Removes special sampling logic from the GX shader in favor of performing conversions using separate draw calls and swizzling
- Simplifies texture bindings
- Much more accurate EFB copy handling (still incomplete but better)
- Handle copy clears appropriately (color, alpha, depth) + GXSetDstAlpha copies
- Re-enables code for buffered texture uploads
- Adds `lastTextureUploadSize` to AuroraStats
- Use RG8 + swizzle for IA4/IA8