Commit Graph

7176 Commits

Author SHA1 Message Date
swurl 83cf9774e1 switch dynamic state to a slider
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 12:08:01 -04:00
swurl 1949e7c438 Add dynamic state extension configs
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-23 20:57:53 -04:00
JPikachu c64c404a2f Enable ExtendedDynamicState 3 2025-04-23 19:01:56 +01:00
edendev e96383615b Fixed typo 2025-04-22 21:02:48 -07:00
edendev 8823f12f18 Enable ExtendedDynamicState 2 and other features 2025-04-22 20:59:02 -07:00
edendev 5080513a5e Enable ExtendedDynamicState 1 across platforms 2025-04-22 18:22:25 -07:00
JPikachu fc1a3b6310 shader compiler: Ensure all clip distances are initialized when used
Thank you to Ryujinx (riperiperi specifically) for the pointer towards clip distances
Huge thanks to crueter for finding where the code works and Camille for giving pointers along the way.
2025-04-21 13:34:24 -04:00
Zephyron 728de0406e vulkan: Improve memory allocation robustness
Enhances the Vulkan memory allocator with better OOM handling and memory
alignment:

* Add memory recovery by cleaning up empty allocations before failing
* Implement proper fallback to non-device-local memory
* Simplify memory alignment handling for different vendors
* Add better error logging for allocation failures
* Add IsEmpty() helper to track unused allocations
* Fix alignment requirements for Adreno (4KB) vs other vendors

These changes improve the robustness of memory allocation, particularly
in low-memory situations, and streamline vendor-specific alignment
requirements.
2025-04-19 17:19:16 -03:00
MrPurple666 19d28cf97b Fix linux build 2025-04-15 01:03:41 -03:00
Zephyron 389327d3f0 vulkan: Add Samsung driver workarounds
Add workarounds for Samsung Xclipse GPUs:

- Disable extendedDynamicState3ColorBlendEquation as it is broken in Samsung
  drivers, similar to AMD drivers
- Add Samsung's proprietary driver to the validated driver list for clock
  boosting
- Fix log message to indicate both AMD and Samsung drivers have broken
  color blend equation support

Remove stray logical OR operator from validated_driver condition.
2025-04-14 12:17:19 -03:00
MrPurple666 73d973dad6 Based on CamilleLaVey code, fix MSAA and Depth Stencil 2025-04-13 17:19:59 -03:00
MrPurple666 e26a256a44 Fix Zephyron commits 2025-04-13 00:23:18 -03:00
Zephyron 777111dfb4 feat(video_core): Fix Linux compilation issues in Hybrid Memory Manager
- Added missing <thread> header for std::thread usage
- Added <fcntl.h> for O_CLOEXEC and O_NONBLOCK definitions
- Fixed struct initialization order in uffdio_copy to match declaration order

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:42:39 -03:00
Zephyron 34693001aa Add Windows support to Hybrid Memory Manager
This commit adds Windows-specific implementation of the fault-managed memory
system, providing similar functionality to the existing Linux/Android implementation.

Key changes:
- Added Windows-specific memory management using VirtualAlloc/VirtualFree
- Implemented Windows vectored exception handler for page fault handling
- Added proper memory protection and page fault handling on Windows
- Updated memory snapshot functionality to work on Windows
- Added proper cleanup of Windows-specific resources
- Fixed type conversion issues in memory management code
- Added proper error handling for Windows memory operations
- Fixed VRAM Memory Layout Mode to allow up to 12Gb

The implementation uses Windows-specific APIs:
- VirtualAlloc/VirtualFree for memory management
- AddVectoredExceptionHandler for page fault handling
- VirtualProtect for memory protection management

This change maintains feature parity with the Linux/Android implementation
while using Windows-native APIs for better performance and reliability.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:42:24 -03:00
Zephyron 9615e910f9 feat(video_core): Implement HybridMemory for advanced Vulkan memory management
Adds a new cross-platform memory management system with enhanced capabilities:
- Fault-managed memory allocation for Linux/Android platforms
- Memory snapshot and differential snapshot support
- Predictive memory reuse tracking for optimized access patterns
- Vulkan compute buffer integration
- User-configurable settings for enabling features

The system integrates with the existing Vulkan renderer to provide more
efficient memory handling, especially for compute-intensive workloads.

Co-authored-by: boss.sfc <boss.sfc@citron-emu.org>
Co-committed-by: boss.sfc <boss.sfc@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:41:26 -03:00
Zephyron 0c5659a198 video_core: Enhance Vulkan shader compilation with async threading system
Implement a robust asynchronous shader compilation system inspired by commit
1fd5fefcb17fe7fe65faed1c991fb41db782ab0f. This enhancement provides:

- True multi-threaded shader compilation with atomic status tracking
- Persistent disk caching for faster shader loading
- Command queue system for background processing
- Integration with Citron's scheduler for better resource management
- Parallel shader loading to reduce startup times
- Improved error handling and recovery mechanisms

These changes significantly reduce shader compilation stuttering and improve
overall performance when using asynchronous shaders. The implementation
maintains compatibility with Citron's existing architecture while adding
more robust threading capabilities.

Co-authored-by: boss.sfc <boss.sfc@citron-emu.org>
Co-committed-by: boss.sfc <boss.sfc@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:39:24 -03:00
Zephyron b550c6e3cc feat(vulkan): implement enhanced texture and shader management
This commit adds improved Vulkan functionality to the Citron emulator:

- Add thread-safe texture management with automatic error recovery
- Implement shader caching with validation support
- Add robust error handling for Vulkan operations
- Implement platform-specific initialization for Windows, Linux, and Android

These enhancements improve stability when handling texture loading errors
and provide better recovery mechanisms for Vulkan failures.

Co-authored-by: boss.sfc <boss.sfc@citron-emu.org>
Co-committed-by: boss.sfc <boss.sfc@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:39:19 -03:00
Zephyron 991770b84f build: fix linux compilation
- Removes unnecessary \ from Copyright Line Causing Linux Builds To Fail

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:37:27 -03:00
Zephyron c57a5fef92 WIP: Enhance shader compilation performance and control
This commit adds new settings and optimizations for shader compilation:

- Add new settings:
  - use_enhanced_shader_building: Enable enhanced shader compilation
  - shader_compilation_priority: Control shader compilation priority

- Improve shader compilation performance:
  - Optimize worker thread allocation based on CPU cores
  - Add smarter async shader compilation heuristics
  - Prioritize vertex and fragment shader compilation
  - Add performance tracking and logging

- Add performance monitoring:
  - Track shader compilation times
  - Log slow shader compilations
  - Monitor async shader compilation statistics

This is a work in progress commit. Further optimizations and refinements
will be needed based on testing and feedback.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:37:11 -03:00
MrPurple666 ce1a1912ae RenderVulkan Experiments: DO-NOT-MERGE: Only recreate when necessary and NEAREST 2025-04-12 22:54:32 -03:00
MrPurple666 2a793d610d RenderVulkan Experiments: DO-NOT-MERGE: Introduce functionality to frame interpolation
The functionality acts much more like a real-time downscale since the FSR1 used by Yuzu is not compatible with a real interpolation and is just upscale and downscale.
2025-04-12 22:54:32 -03:00
Pavel Barabanov 38737f26e5 Optimize SpiriV output 2025-04-12 22:54:32 -03:00
Pavel Barabanov be2e838f0d FRAME_SKIPPING and FRAME_INTERPOLATION only android and delete "enable" 2025-04-12 22:54:32 -03:00
Pavel Barabanov d25bea5762 Android: add FRAME_SKIPPING and FRAME_INTERPOLATION 2025-04-12 22:54:32 -03:00
Zephyron 45683a4034 video_core/vulkan: Improve texture format conversion handling
Refactors and improves the texture format conversion system in the Vulkan
renderer:

- Adds proper sRGB to linear conversion for depth formats
- Improves shader accuracy for ABGR8 SRGB to D24S8 conversion
- Adds gamma correction and proper depth range clamping
- Moves GetSupportedFormat implementation to header
- Cleans up format conversion switch statement
- Removes redundant format conversion paths

The changes improve accuracy when converting between color and depth
formats, particularly for sRGB sources. The shader improvements ensure
proper gamma correction and depth range handling.

Technical changes:
- Improves sRGB to linear conversion in fragment shader
- Adds proper depth value clamping
- Consolidates format conversion logic
- Removes duplicate GetSupportedFormat implementation
2025-04-11 17:05:41 -03:00
Zephyron 3e835ac3aa video_core: Add new shader format conversion pipelines
Adds several new shader-based format conversion pipelines to support additional
texture formats and operations:

- RGBA8 to BGRA8 conversion
- YUV420/RGB conversions
- BC7 to RGBA8 decompression
- ASTC HDR to RGBA16F decompression
- RGBA16F to RGBA8 conversion
- Temporal dithering
- Dynamic resolution scaling

Updates the texture cache runtime to handle these new conversion paths and adds
helper functions to check format compatibility for dithering and scaling
operations.

The changes include:
- New shader files and CMake entries
- Additional conversion pipeline setup in BlitImageHelper
- Extended format conversion logic in TextureCacheRuntime
- New format compatibility check helpers
2025-04-11 17:05:30 -03:00
Zephyron 5cb3153f15 video_core: Add sRGB to D24S8 depth-stencil conversion support
Implements conversion from sRGB color formats to D24S8 depth-stencil format
in the Vulkan renderer. This change includes:

- New fragment shader convert_abgr8_srgb_to_d24s8.frag that handles proper
  sRGB to linear conversion before depth calculation
- Added shader to CMake build system
- Extended BlitImageHelper with new conversion pipeline and methods
- Updated texture cache to handle sRGB to D24S8 format conversion paths

The conversion properly handles sRGB color space by first converting to
linear space before calculating luminance values for the depth component,
while preserving alpha channel data for the stencil component.
2025-04-11 17:05:20 -03:00
crueter 9cef9f5dce Update fmt to allow for v11
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-10 01:11:22 +02:00
JPikachu 52eab40fc8 Implement LogicOP Workaround for Vulkan on AMD GPUs
This fixes black sewers in Paper Mario: TTYD
Credit: Antique - [Sudachi] Dev (https://sudachi.emuplace.app/)
2025-04-08 19:17:28 +02:00
MrPurple666 2d2e9208d2 Unified torzu and sudachi friend.cpp + fix android build on dma_pusher 2025-04-04 03:40:49 +02:00
Zephyron 0071e980b8 video_core: Enforce safe memory reads for compute dispatch
- Modify DmaPusher to use safe memory reads when handling compute
  operations at High GPU accuracy
- Prevent potential memory corruption issues that could lead to
  invalid dispatch parameters
- Previously, unsafe reads could result in corrupted launch_description
  data in KeplerCompute::ProcessLaunch, causing invalid vkCmdDispatch
  calls
- By enforcing safe reads specifically for compute operations, we
  maintain performance for other GPU tasks while ensuring compute
  dispatch stability

This change requires >= High GPU accuracy level to take effect.
2025-04-04 03:40:49 +02:00
darktux 492d3856e8 Vulkan validation error fix.
Different image usage flags between image creation and image view
creation.
2025-04-04 03:40:48 +02:00
darktux edff3d4adb Radeon gpu profiler detection support 2025-04-04 03:40:47 +02:00
darktux 2032d035a3 Removed telemetry and anonymized SCM (git) strings 2025-04-04 03:40:47 +02:00
darktux 616619c8f7 Port changes from Early Access 2025-04-04 03:40:46 +02:00
Briar 4bb6e633e0 externals: Downgrade dynarmic to `ae99622` and xbyak to `0d67fd15`; modify ABI parameter handling in macro_jit_x64.cpp 2025-04-04 03:23:32 +02:00
voidanix d60cf76e2d Fix GCC builds with Debug build type 2025-04-01 18:31:44 +02:00
yuzubot f2aa821f94 "Merge Tagged PR 13178" 2024-03-03 13:02:49 +00:00
liamwhite 3a31129447 Merge pull request #13171 from liamwhite/fake-address
texture_cache: do not track invalid addresses
2024-02-27 09:42:46 -05:00
liamwhite 5f2369bba6 general: workarounds for SMMU syncing issues (#12749) 2024-02-27 15:42:15 +01:00
liamwhite a918ce6fe9 vk_rasterizer: flip scissor y on lower left origin mode (#13122) 2024-02-27 15:40:33 +01:00
liamwhite c98e01cee8 buffer_cache: avoid overflow in usage tracker (#13166) 2024-02-27 15:39:11 +01:00
liamwhite df3712ad06 texture_cache: use two-pass collection for costly load resources (#13096) 2024-02-27 15:38:14 +01:00
Narr the Reg 325e577eec Merge pull request #13172 from liamwhite/gl-streams
renderer_opengl: declare geometry stream support in profile
2024-02-26 11:51:25 -06:00
Liam 71a6d3596a renderer_opengl: declare geometry stream support in profile 2024-02-26 11:18:30 -05:00
Liam 9db29b4e20 settings: remove global override for smash on amdvlk 2024-02-26 11:16:18 -05:00
Liam e15b1021a4 video_core: make gpu context aware of rendering program 2024-02-26 11:16:14 -05:00
Liam afb3516d43 texture_cache: do not track invalid addresses 2024-02-26 10:26:27 -05:00
Narr the Reg 615cc06ca4 Merge pull request #13001 from liamwhite/scaled-availability
vulkan_device: don't use fixed cap for memory limits
2024-02-22 11:31:17 -06:00
Narr the Reg 091abdc5cb Merge pull request #13075 from liamwhite/mali-having-a-bad-time
shader_recompiler: throw on missing geometry streams in geometry shaders
2024-02-22 11:30:26 -06:00
Matías Locatti 40497ab00f Merge pull request #10529 from liamwhite/critical-spacing
caches: make critical reclamation less eager and possible in more cases
2024-02-20 23:19:27 -03:00
FearlessTobi 4d55e58ee4 scope_exit: Make constexpr
Allows the use of the macro in constexpr-contexts.
Also avoids some potential problems when nesting braces inside it.
2024-02-19 16:00:46 +01:00
Liam 749f0564ae shader_recompiler: throw on missing geometry streams in geometry shaders 2024-02-19 00:34:00 -05:00
Liam a956f0f4f8 vulkan_device: don't use fixed cap for memory limits 2024-02-18 18:59:13 -05:00
Liam 02430ed002 buffer_cache: use mapped range with large vertex buffer size 2024-02-13 08:27:33 -05:00
liamwhite c741b765dd Merge pull request #12975 from FernandoS27/keep-your-own-vodoo-doll-away-from-gf
Texture Cache: Fix untracking on GPU remap
2024-02-13 08:17:59 -05:00
Narr the Reg e29b241a5a Merge pull request #12756 from liamwhite/applet-multiprocess-hwc
general: applet multiprocess
2024-02-11 20:58:28 -06:00
Liam 25f5a651a9 texture_cache: tweak iteration tracking change 2024-02-11 13:41:13 -05:00
Liam 9a10c66e40 texture_cache: avoid overestimation of ASTC texture sizes 2024-02-11 13:41:13 -05:00
Liam e882f6c1c3 caches: make critical reclamation less eager and possible in more cases 2024-02-11 13:41:13 -05:00
Liam 47eeb0008b host_shaders: add vendor workaround for adreno drivers 2024-02-10 12:02:37 -05:00
Fernando Sahmkow 75847f0e8b Texture Cache: Fix untracking on GPU remap 2024-02-10 14:49:49 +01:00
Liam ba17a8c2b8 gpu: dependency-inject scaling/antialiasing filter state for capture layers 2024-02-09 09:20:53 -05:00
Liam ce72818075 nvnflinger/gpu: implement applet capture 2024-02-09 09:20:53 -05:00
Liam 1c32e4157c nvnflinger/gpu: implement blending 2024-02-09 09:20:53 -05:00
Liam 85abd0243e video_core: defensively program around unmapped device pointers 2024-02-09 09:20:53 -05:00
liamwhite d26c4a5090 Merge pull request #12914 from FernandoS27/vc-refactor
VideoCore Refactor Part 1.
2024-02-08 10:59:59 -05:00
liamwhite 9e83fdcde3 Merge pull request #12883 from FernandoS27/memory_manager_mem
MemoryManager: Reduce the page table size based on last big page address.
2024-02-06 10:25:03 -05:00
Fernando Sahmkow 758d895408 Common: Rename SplitRangeSet to OverlapRangeSet 2024-02-05 23:01:17 +01:00
Fernando Sahmkow 80d505b5cf Buffer Cache: Refactor to use Range sets instead 2024-02-05 11:06:52 +01:00
Fernando Sahmkow 4d97c54676 VideoCore: Move Slot Vector to Common 2024-02-04 20:01:47 +01:00
liamwhite 3868b44440 Merge pull request #12885 from Moonlacer/eclipse-fix
structured_control_flow: Add Samsung Proprietary Driver ID to Reorder Pass
2024-02-02 09:08:54 -05:00
Fernando S 9162ecd960 Merge pull request #12761 from liamwhite/mp-composite
video_core: rewrite presentation for layer composition
2024-02-02 15:08:06 +01:00
Moonlacer 309ca2bd3b Clang Fix 2024-02-01 18:15:21 -06:00
Moonlacer 31200d0c7a Add Samsung Proprietary Driver ID to Reorder Pass
For RDNA-based Samsung Xclipse GPUs
2024-02-01 17:53:26 -06:00
Fernando Sahmkow 4d65645d80 MemoryManager: Reduce the page table size based on last big page address. 2024-02-01 13:00:36 +01:00
Fernando Sahmkow 4c68fc6ea7 SwBlitter: Fix Pitch linear reading/writting 2024-01-31 23:02:10 +01:00
Liam 5ec76db392 nvnflinger/gpu: implement layer stack composition 2024-01-31 11:27:21 -05:00
Liam d2f98ce312 renderer_opengl: implement layer stack composition 2024-01-31 11:27:21 -05:00
Liam f727f13cb9 renderer_vulkan: implement layer stack composition 2024-01-31 11:27:21 -05:00
Liam 2a314f9e2e renderer_opengl: split up blit screen resources into antialias and window adapt passes 2024-01-31 11:27:21 -05:00
Liam 64eb14d45a renderer_opengl: move out ownership of FSR resources 2024-01-31 11:27:21 -05:00
Liam cc8493ea2e renderer_vulkan: convert FSR to graphics pipeline 2024-01-31 11:27:21 -05:00
Liam dbcfa26891 renderer_opengl: move out FSR shader source construction 2024-01-31 11:27:20 -05:00
Liam bd9c228844 renderer_opengl: split out FXAA 2024-01-31 11:27:20 -05:00
Liam 5d9ae38249 renderer_opengl: split out SMAA 2024-01-31 11:27:20 -05:00
Liam 86bfa837fc renderer_vulkan: split up blit screen resources into separate antialias and window adapt passes 2024-01-31 11:27:20 -05:00
Liam f50296ab23 renderer_vulkan: isolate FXAA from blit screen 2024-01-31 11:27:20 -05:00
Liam e8fa898313 renderer_opengl: isolate core presentation code 2024-01-31 11:27:20 -05:00
Liam cd8049a5e2 video_core: consistently account for resolution scaling when rendering 2024-01-31 11:27:20 -05:00
Liam 84678c7014 video_core: simplify accelerated surface fetch and crop handling between APIs 2024-01-31 11:27:20 -05:00
Fernando Sahmkow 352f6d22e3 Texture Cache: make sparse texture table per channel 2024-01-31 16:38:51 +01:00
liamwhite 9b07313a94 Merge pull request #12814 from Kelebek1/time_new_ipc
Move time services to new IPC and add debug printing
2024-01-29 09:08:46 -05:00
liamwhite bc857b4b5a Merge pull request #12439 from FireBurn/vkresult
Simplify VkResult lookup
2024-01-29 09:08:32 -05:00
Kelebek1 05afa94a3b Move time services to new IPC.
Add some fixes/improvements to usage with the new IPC
2024-01-27 03:30:09 +00:00
liamwhite 0ab550c726 Merge pull request #12499 from Kelebek1/time
Rework time services
2024-01-25 14:19:01 -05:00
Matías Locatti fa47a39052 Demote Mesa dozen to the bottom of the device list 2024-01-24 23:36:14 -03:00
Kelebek1 52c35521bd Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
liamwhite 5a6b3a0125 Merge pull request #12579 from FernandoS27/smmu
Core: Implement Device Mapping & GPU SMMU
2024-01-22 10:55:39 -05:00
Mike Lothian 0a3c09f2f6 Simplify VkResult lookup 2024-01-22 03:10:43 +00:00
Mike Lothian 2348a5bdab Add Vulkan-Utility-Libraries dependency 2024-01-22 01:30:44 +00:00
Fernando Sahmkow 241c64e43b Core: Eliminate core/memory dependancies. 2024-01-18 21:12:30 -05:00
Fernando Sahmkow eda09c091a SMMU: Fix 8Gb layout. 2024-01-18 21:12:30 -05:00
Fernando Sahmkow b206089ea7 Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
Fernando Sahmkow 43de47538a SMMU: Simplify and remove old code. 2024-01-18 21:12:30 -05:00
Fernando Sahmkow 355bbea52d SMMU: Add Android compatibility 2024-01-18 21:12:30 -05:00
Fernando Sahmkow ff6cd1c212 GPU-SMMU: Estimate game leak and preallocate device region. 2024-01-18 21:12:30 -05:00
Fernando Sahmkow bb7b14acd5 GPU SMMU: Expand to 34 bits 2024-01-18 21:12:30 -05:00
Fernando Sahmkow f11218a03e SMMU: Implement physical memory mirroring 2024-01-18 21:12:30 -05:00
Fernando Sahmkow 9db159da71 SMMU: Initial adaptation to video_core. 2024-01-18 21:12:30 -05:00
Fernando Sahmkow d0329a2c00 SMMU: Implement backing CPU page protect/unprotect 2024-01-18 21:12:30 -05:00
Fernando Sahmkow eb4f7f35ea NVDRV: Implement sessions and initial implementation of SMMU 2024-01-18 21:12:30 -05:00
Fernando Sahmkow 04b4af6044 Core: Initial implementation of device memory mapping 2024-01-18 21:12:30 -05:00
Liam be2a32b041 renderer_vulkan: recreate swapchain when frame size changes 2024-01-16 16:09:39 -05:00
Viktor Szépe 897ff8a95c Fix one more typo 2024-01-15 23:34:11 +00:00
Viktor Szépe e895ebb546 Fix typos in video_core 2024-01-07 22:44:55 +00:00
liamwhite 8da33ba38a Merge pull request #12437 from ameerj/gl-amd-fixes
OpenGL: Fixes and workaround updates for AMD
2024-01-04 15:53:44 -05:00
Fernando Sahmkow d9b2778306 Vulkan: Only recreate swapchain if the frame is bigger than the swap image. 2023-12-31 21:03:46 +01:00
Fernando Sahmkow a81686eff8 MaxwellDMA: Don't flush the outputs of a dma copy. 2023-12-31 21:00:01 +01:00
Fernando S 64dd40ee88 Merge pull request #12479 from GPUCode/linear-bcn
video_core: Fix buffer_row_length for linear compressed textures
2023-12-30 06:56:08 +01:00
liamwhite aec8115476 Merge pull request #12449 from liamwhite/debug-utils
renderer_vulkan: skip SetObjectNameEXT on unsupported driver
2023-12-26 11:45:39 -05:00
liamwhite fd035bfd90 Merge pull request #12448 from liamwhite/format-assert
renderer_vulkan: demote format assert to error log
2023-12-26 11:45:33 -05:00
liamwhite 8502b07266 Merge pull request #12415 from ameerj/ogl-draw-auto
gl_rasterizer: Implement DrawTransformFeedback macro
2023-12-26 11:45:25 -05:00
GPUCode 1bc4b6c75d video_core: Fix buffer_row_length computation for linear compressed textures 2023-12-26 16:33:03 +02:00
Liam 072c63ec91 renderer_vulkan: skip SetObjectNameEXT on unsupported driver 2023-12-23 11:08:02 -05:00
Liam 188916635a renderer_vulkan: demote format assert to error log 2023-12-23 11:04:02 -05:00
liamwhite 84a1054801 Merge pull request #12412 from ameerj/gl-query-prims
OpenGL: Add GL_PRIMITIVES_GENERATED and GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN queries
2023-12-22 11:42:05 -05:00
Fernando S d73d8e8471 Merge pull request #12410 from liamwhite/more-mali-null
renderer_vulkan: don't pass null view when nullDescriptor is not supported
2023-12-22 17:40:47 +01:00
Liam a952270b5c shader_recompiler: use float image operations on load/store when required 2023-12-21 14:34:46 -05:00
Ameer J b09ab3540d gl_device: Remove AMD blacklists that are no longer applicable 2023-12-20 18:19:15 -05:00
liamwhite 154009b915 Merge pull request #12414 from jbeich/vk274
externals: update Vulkan-Headers to v1.3.274
2023-12-20 12:46:50 -05:00
liamwhite 3db4ff982c Merge pull request #12400 from ameerj/vk-query-prefix-fix
vk_query_cache: Fix prefix sum max_accumulation_limit logic
2023-12-20 12:46:41 -05:00
Fernando S 18b7ed6453 Merge pull request #12403 from liamwhite/clipdistance
shader_recompiler: use minimal clip distance array
2023-12-20 18:45:20 +01:00
Fernando S 33f38c09aa Merge pull request #12390 from liamwhite/binding-insanity
renderer_vulkan: work around turnip binding bug in a610
2023-12-20 18:44:47 +01:00
Ameer J ecd92c9b2b gl_rasterizer: Less spammy log for unimplemented resets 2023-12-20 11:51:44 -05:00
Ameer J 2fc6f3fcfd gl_rasterizer: Implement DrawTransformFeedback macro 2023-12-19 19:54:57 -05:00
Jan Beich af5d54b6c8 vulkan_common: unbreak build with Vulkan-Headers 1.3.274
src/video_core/vulkan_common/vulkan_wrapper.cpp:293:13: error: enumeration value 'VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR' not handled in switch [-Werror,-Wswitch]
    switch (result) {
            ^~~~~~
2023-12-20 01:12:41 +01:00
Ameer J d5b1a5f27d OpenGL: Add GL_PRIMITIVES_GENERATED and GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN queries 2023-12-19 17:32:31 -05:00
Ameer J 5fea802712 gl_rasterizer: Silence spammy logs 2023-12-19 17:13:23 -05:00
Ameer J 86b262e42d gl_buffer_cache: Reintroduce NV_vertex_buffer_unified_memory
Workaround Nvidia drivers complaining when a buffer is bound as both a vertex buffer and transform feedback buffer
2023-12-19 17:13:23 -05:00
Liam 6687915b0f renderer_vulkan: don't pass null view when nullDescriptor is not supported 2023-12-19 15:13:10 -05:00
Fernando S 0f928af7ab Merge pull request #12382 from liamwhite/image-limit
renderer_vulkan: allow up to 7 swapchain images
2023-12-19 16:15:40 +01:00
Liam 6611ba122b shader_recompiler: ignore clip distances beyond driver support level 2023-12-18 22:25:14 -05:00
Ameer J 8a2c42c6e8 vk_query_cache: Fix prefix sum max_accumulation_limit logic 2023-12-18 12:37:55 -05:00
liamwhite 4504ee7f28 Revert "video_core: use interval map for page count tracking" 2023-12-17 18:59:49 -05:00
Liam 47429e716c renderer_vulkan: work around turnip binding bug in a610 2023-12-17 15:45:09 -05:00
Liam 273b4b9576 renderer_vulkan: allow up to 7 swapchain images 2023-12-16 18:59:44 -05:00
liamwhite 4611a37b83 Merge pull request #12377 from ameerj/tfb-batch-oopsie
gl_buffer_cache: Fix tfb binding typo
2023-12-16 13:58:06 -05:00
liamwhite 68b1037350 Merge pull request #12345 from liamwhite/a-flock-of-seagulls
renderer_vulkan: cap async presentation frame count
2023-12-16 13:58:00 -05:00
Ameer J ede1dd9d8b gl_buffer_cache: Fix tfb binding typo 2023-12-16 12:48:21 -05:00
Liam eb6a042654 video_core: lock interval map update 2023-12-14 22:10:21 -05:00
Liam 7fa76caf80 video_core: use interval map for page count tracking 2023-12-14 21:54:36 -05:00
Liam 03d73e14a8 renderer_vulkan: bound async presentation queue growth 2023-12-14 15:54:56 -05:00
liamwhite 2c8dc35bf4 Merge pull request #12274 from liamwhite/srgb-nonsense
renderer_vulkan: do not recreate swapchain for srgb
2023-12-08 12:26:13 -05:00
lat9nq c7e0ee60cd codec: Update to use av frame flags
Resolves Clang -Wdeprecated-declarations warning from interlaced_frame
2023-12-05 21:10:38 -05:00
liamwhite a92e0194a2 Merge pull request #12235 from liamwhite/flip-clip
renderer_vulkan: adjust window origin and swizzle independently
2023-12-03 21:59:11 -05:00
Liam 63ceff87b0 texture_cache: fix max_element comparison function 2023-12-03 18:40:19 -05:00
Liam eb10ce6fdd renderer_opengl: remove srgb conversion logic 2023-12-03 17:08:25 -05:00
Liam 8a97178a89 renderer_vulkan: do not recreate swapchain for srgb 2023-12-03 16:43:54 -05:00
liamwhite 46ab4ee5a5 Merge pull request #12094 from ameerj/gl-buffer-cache-batch-vtx
gl_buffer_cache: Batch vertex/tfb buffer binding
2023-12-03 16:27:22 -05:00
liamwhite 8c522bf3a7 Merge pull request #12261 from liamwhite/fruit-company
texture_cache: use pedantic type names
2023-12-02 09:28:43 -05:00
Liam 9014e6783f texture_cache: use pedantic type names 2023-12-01 22:46:33 -05:00
GPUCode 8188d923c8 vk_blit_screen: Use correct format for fxaa renderpass 2023-12-01 22:55:50 +02:00
liamwhite c84e8ce6b7 Merge pull request #12056 from ameerj/opengl-neglect
OpenGL: Implement async downloads in buffer and texture caches
2023-12-01 09:16:56 -05:00
Liam 9d2c18b72d renderer_vulkan: adjust window origin and swizzle independently 2023-11-30 12:33:26 -05:00
Liam 2ccd547309 renderer_vulkan: exclude more qcom drivers from extensions 2023-11-29 21:06:06 -05:00
liamwhite 95ad671ce9 Merge pull request #12194 from liamwhite/fruit-company
video_core: fix mac compile
2023-11-29 12:33:41 -05:00
liamwhite f6c13b4dad Merge pull request #12154 from liamwhite/more-drivers
vulkan_device: add names for more driverID enumeration values
2023-11-29 12:33:34 -05:00
Ameer J a9e011c9c2 Merge branch 'master' into ssbo-align 2023-11-26 21:08:53 -05:00
Liam bd250e303f video_core: fix mac compile 2023-11-26 20:04:06 -05:00
Fernando S 896ae72dbf Merge pull request #11535 from GPUCode/upload_cmdbuf
renderer_vulkan: Introduce separate cmd buffer for uploads
2023-11-26 18:33:05 +01:00
liamwhite 1474bd4eff Merge pull request #12153 from liamwhite/deck2
renderer_vulkan: exclude steam deck oled from force max clock setting
2023-11-25 10:17:18 -05:00
liamwhite f50189075b Merge pull request #12110 from liamwhite/mali-nullview
vk_texture_cache: add workaround for nullDescriptor on Mali
2023-11-25 10:17:00 -05:00
Liam a0ed6c0653 vulkan_device: add names for more driverID enumeration values 2023-11-24 12:00:41 -05:00
Liam 86d9651d5d renderer_vulkan: exclude steam deck oled from force max clock setting 2023-11-24 11:38:39 -05:00
Liam 1e62aaf305 query_cache: demote report synced unreachable to assert 2023-11-23 09:33:02 -05:00
liamwhite 7783363cfc Merge pull request #12045 from liamwhite/codec-refactor
video_core: refactor video frame and packet parsing
2023-11-21 09:19:26 -05:00
Liam 3efaed605c vk_texture_cache: add workaround for nullDescriptor on Mali 2023-11-20 20:09:12 -05:00
Ameer J 9c3cc36abc gl_buffer_cache: Batch vertex/tfb buffer binding 2023-11-19 17:17:16 -05:00
Liam a41e57d968 renderer_vulkan: ignore viewport stores on non-supporting drivers 2023-11-19 11:27:12 -05:00
liamwhite d0d6abbc21 Merge pull request #12081 from FernandoS27/check-out-on-your-broke-crypto-friends
Vulkan: Be more generous with pipeline workers for Android
2023-11-19 11:16:19 -05:00
liamwhite aa609d5dad Merge pull request #12036 from FernandoS27/you-should-have-more-than-one-towel
Query Cache: Disable write syncing on Android
2023-11-19 09:52:22 -05:00
liamwhite 34eac6afde Merge pull request #12068 from ameerj/glasm-xfb-fixes
gl_graphics_pipeline: GLASM: Fix transform feedback attribs buffer mode
2023-11-19 09:49:38 -05:00
Fernando Sahmkow c6330ca05f Vulkan: Be more generous with pipeline workers for Android 2023-11-19 14:54:15 +01:00
Fernando Sahmkow 6bf827f4e9 Buffer Cache: Eliminate clears on Indirect buffers 2023-11-18 19:26:14 +01:00
Ameer J abd400e04f shader_recompiler: Fix spelling of "derivate" (#12067) 2023-11-18 13:39:47 +01:00
Ameer J a3ba9c64d7 gl_graphics_pipeline: GLASM: Fix transform feedback attribs buffer mode
GL_SEPARATE_ATTRIBS only applies when multiple buffers are being used, else GL_INTERLEAVED_ATTRIBS handles the cases for a single buffer with potentially more than one attribute
2023-11-18 00:44:05 -05:00
Liam 767b024755 video_core: refactor video frame and packet parsing 2023-11-16 17:01:38 -05:00
Fernando Sahmkow dbb9e0c5fe Query Cache: Disable write syncing on Android 2023-11-15 02:23:39 +01:00
Fernando Sahmkow 1918f97dea Vulkan: Add a final barrier to the upload command buffer 2023-11-12 20:58:30 +01:00
GPUCode 4b853ff5cf renderer_vulkan: Introduce separate cmd buffer for uploads 2023-11-12 20:27:39 +01:00
Fernando Sahmkow ce3c3c0038 Memory: Fix invalidation handling from the CPU/Services 2023-11-12 14:10:40 +01:00
Fernando Sahmkow b9087d53d5 Revert "renderer_vulkan: add locks to avoid scheduler flushes from CPU"
This reverts commit 1bd99c1d65.
2023-11-10 15:40:48 +01:00
liamwhite 694cbdefec Merge pull request #11896 from liamwhite/crop
renderer_vulkan: fix cropping for presentation
2023-11-06 12:08:03 -05:00
liamwhite 9c1b9171ae renderer_vulkan: render on bottom of surface clip when flipped (#11894) 2023-11-05 21:47:35 +01:00
Liam 6f74c988ba renderer_null: fix 2023-11-03 20:54:38 -04:00
Liam fe9cd5c92f renderer_vulkan: minimize transform feedback support log 2023-11-01 20:47:08 -04:00
Ameer J b49639e786 shader_recompiler: Align SSBO offsets in GlobalMemory functions 2023-10-31 20:14:18 -04:00
Ameer J f4848349b5 buffer_cache: Apply storage buffer alignment only to the offset 2023-10-31 20:10:54 -04:00
Ameer J e538b932de shader_recompiler: Align SSBO offsets to meet host requirements
Co-Authored-By: Billy Laws <blaws05@gmail.com>
2023-10-31 20:10:54 -04:00