- Fix race condition in PipelineCache and ShaderPools using std::mutex.
- Fix stutter in Asynchronous Shader Building by properly returning nullptr for unbuilt pipelines (pop-in behavior).
- Modify AcquireNextImage to use MasterSemaphore for safer async presentation.
Update texture descriptor comparison to include component_type, ensuring
textures with different component types are properly differentiated.
- Add ReadTextureComponentType helper function
- Include component_type in texture descriptor comparison
- Use component type when creating texture descriptors
Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Implement texture component type conversion and caching in shader
environments, with full serialization support for shader cache.
- Add ConvertSamplerComponentType using std::bitset for component tracking
- Implement ReadTextureComponentType for Graphics/Compute/File environments
- Add texture_component_types cache to all environment classes
- Update Serialize/Deserialize to include component types
- Cache component types alongside texture types for performance
Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Update SPIR-V backend to use component-specific sampled types for
textures, ensuring correct type conversions for integer and depth/stencil
textures.
- Add ComponentScalarType helper function
- Update ImageType to accept component-specific sampled types
- Add TextureColorResultType and TextureSampleResultToFloat helpers
- Update all texture sampling functions to handle component types
- Add output_s32 for signed integer outputs
- Add Flat decorations for integer inputs in fragment shaders
- Add NonWritable decoration for read-only storage buffers
Co-Authored-By: ForrestMarkX <forrestmarkx@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
MSVC likes to complain a lot but also my bad, forgot that I removed from all the other stuff. This should be last commit spam.
Signed-off-by: Collecting <collecting@noreply.localhost>
- Add 1.25X (900p/1350p) and 1.75X (1260p/1890p) resolution scales
- Fix Android resolution array value mappings (was incorrectly mapped)
- Add all resolution options (0.25X to 8X) to Android settings
- Mark experimental resolutions with [EXPERIMENTAL] tag
Signed-off-by: Zephyron <zephyron@citron-emu.org>
ASTC Settings:
- Add ANDROID_ASTC_MODE enum to IntSetting.kt
- Add setting to Zep Zone panel in SettingsFragmentPresenter.kt
- Add string resources for Auto/Native/Decompress options
- Add arrays for option names and values
CRT Shader Settings:
- Add 6 CRT float settings to FloatSetting.kt (scanline_strength, curvature, gamma, bloom, brightness, alpha)
- Add CRT_MASK_TYPE int setting for mask type selection
- Add scale factor support to SliderSetting.kt for float-to-percentage conversion
- Add conditional visibility for CRT settings (only shown when CRT filter is enabled)
- Add string resources and arrays for all CRT settings
The CRT settings section only appears in Zep Zone when the scaling filter is
set to CRTEasyMode or CRTRoyale.
Co-Authored-By: FDT <fdt@citron-emu.org>
- Add AndroidAstcMode enum to settings_enums.h (Auto/Native/Decompress)
- Add android_astc_mode setting to settings.h
- Add Adreno 7xx+ GPU detection in vulkan_device (IsAdrenoGpu, IsAdreno7xxOrNewer, SupportsNativeAstc)
- Add compressed_size_bytes field to ImageBase for accurate ASTC VRAM tracking
- Add use_compressed_eviction flag to texture cache for Android-optimized eviction
- Increase VRAM budget to 90% for Android devices with native ASTC support
- Add SupportsNativeAstc() to Vulkan and OpenGL texture cache runtimes
This improves performance on high-end Android devices by allowing more ASTC
textures to be cached when using compressed size for eviction calculations.
Co-Authored-By: FDT <fdt@citron-emu.org>
Updated description to accurately describe Off and Light options instead
of implying multiple "higher levels" that don't exist.
Signed-off-by: Zephyron <zephyron@citron-emu.org>