Commit Graph

618 Commits

Author SHA1 Message Date
iwubcode 834f8f7b5c VideoBackends: add support to allow rendering to multiple output textures 2023-06-03 14:52:31 -05:00
Lioncash 07ed932a09 Common/LinearDiskCache: Move interface into Common namespace
Gets the interface out of the global namespace.
2023-04-19 09:14:39 -04:00
Pierre Bourdon d8fabd37fb
Merge pull request #11417 from K0bin/vk-submit-thread-cleanup
VideoBackends:Vulkan: Clean up submission thread using WorkQueueThread
2023-04-04 22:02:39 +02:00
degasus 196c684ac1 Vulkan: Enable subgroupShuffle.
It is used as workaround for the missing subgroupBroadcastDynamicId flag on SPIR-V < 1.5.
2023-03-24 21:53:23 +01:00
Robin Kertels c1be9628fc
VideoBackends:Vulkan: Use WorkQueueThread 2023-03-20 16:40:32 +01:00
Robin Kertels 9186050daa
VideoBackends:Vulkan: Clean up submission thread BlockingLoop usage 2023-03-20 16:23:35 +01:00
Admiral H. Curtiss aac9647ba2
Divide by MSAA for PerfQuery in all backends. 2023-03-14 02:13:25 +01:00
Markus Wick b381df700c
Merge pull request #11577 from JosJuice/android-armeabi-v7a
Android: Fix armeabi-v7a build
2023-02-17 17:57:38 +01:00
JosJuice 90b676d368 Android: Fix armeabi-v7a build
This very much isn't a build configuration that we're going to ship,
but I want to be able to tell people that they can build it on their
own if they really want to see how terribly it performs :)

Just like before, you'll need to edit two lines in app/build.gradle to
define ENABLE_GENERIC=ON and actually enable armeabi-v7a if you want an
armeabi-v7a build. This commit just fixes some compilations errors that
crop up if you do so.
2023-02-17 16:58:24 +01:00
Robin Kertels 2695666e6d
VideoBackends:Vulkan: Fix printing validation errors 2023-02-16 17:53:15 +01:00
Scott Mansell f37113204f
Merge pull request #11550 from iwubcode/set_common_samplers_count
VideoCommon: add constant value for maximum number of pixel samplers
2023-02-13 16:05:51 +13:00
JMC47 258151fe5a
Merge pull request #11523 from degasus/OGL_KHR_subgroup
VideoBackend/OGL: Prefer KHR_shader_subgroup over NV_shader_thread.
2023-02-10 04:47:20 -05:00
iwubcode af313f8419 VideoCommon: add constant value to set the allowed maximum number of pixel samplers 2023-02-10 00:46:11 -06:00
degasus 4b2aa948e6 VideoBackend/OGL: Prefer KHR_subgroup over NV_shader_thread.
While the NV extension is totally fine, the KHR extension should be able to support more hardware.

For NVIDIA, the hardware either supports both or neither, it just needs a driver from the last two years.
For AMD, the drivers from late 2022-12 seems to bring support for the KHR extension.
For Intel, the KHR is also supported for some years.
2023-02-09 13:27:02 +01:00
iwubcode d0c6b6c9ed VideoCommon: store the configuration used to create the AbstractPipeline on the pipeline itself, so that it's easy to duplicate pipelines with slightly altered configuration 2023-02-09 02:13:53 -06:00
Scott Mansell ccf92a3e56
Merge pull request #11522 from phire/KillRendererWithFire
Kill Renderer (with phire)
2023-02-09 19:59:16 +13:00
Scott Mansell 60f2b5af7b Apply suggestions from code review
Co-authored-by: Mai <mathew1800@gmail.com>
Co-authored-by: BhaaL <bhaalsen@gmail.com>
Co-authored-by: iwubcode <iwubcode@users.noreply.github.com>
2023-02-09 18:36:20 +13:00
Scott Mansell 31cfe8250d Lint fixes 2023-02-09 18:36:20 +13:00
Scott Mansell 11de923dcb Move xfb tracking and IR scaling out of RenderBase 2023-02-09 18:36:20 +13:00
Scott Mansell e009002411 Refactor ClearRegion
And fix bug where opengl was getting the wrong coordinates
2023-02-09 18:36:20 +13:00
Scott Mansell e98ab0784d
Merge pull request #11501 from iwubcode/abstract_texture_load_specify_layer
VideoBackends: add a way to load data into a specific level AND layer
2023-02-01 00:03:59 +13:00
Scott Mansell abfc75f362 Cleanup headers 2023-01-31 19:41:24 +13:00
Scott Mansell 3ae78b8e76 Also use events for config changed 2023-01-31 19:41:24 +13:00
Scott Mansell 8bc8e43dd6 Add virtual Initialize() to PerfQueryBase
Both DX12 and Vulkan already had one.
2023-01-31 19:41:24 +13:00
Scott Mansell 06ae08ca8b Fix misnamed local variable 2023-01-31 19:41:24 +13:00
Scott Mansell 2a2014af09 Implement AbstractGfx for Vulkan 2023-01-31 19:41:23 +13:00
Scott Mansell 0d4537d60f Move Presenting, Dumping and ImGui out of Renderer 2023-01-31 18:45:21 +13:00
Scott Mansell 606c18210d TextureCache: Refactor with smart pointers
The whole ownership model was getting a bit of a mess, with a some
of special cases to deal with. And I'm planning to make it even more
complex in the future.
So here is some upfront work to convert it over to reference counted
pointers.
2023-01-31 18:29:47 +13:00
Admiral H. Curtiss df9ba70c35
Merge pull request #11507 from phire/Wnullablitly-completeness
Ignore nullability-completeness warnings in VMA
2023-01-30 10:03:49 +01:00
Scott Mansell 6ad182edd9 Ignore nullability-completeness warnings in VMA
These cause a lot of warnings when compiling with clang.
And the example VmaUsage.h appears to disable them
2023-01-30 03:11:51 +13:00
iwubcode 7bea39b39e VideoBackends: add a way to load data into a specific level AND layer, default to layer 0 2023-01-27 18:46:53 -06:00
iwubcode 271c60781b VideoBackends: update Vulkan's 'CopyRectangleFromTexture' to copy one layer, copying more than one layer doesn't make sense given that we provide both the source/destination layer 2023-01-27 18:41:52 -06:00
Admiral H. Curtiss cb0a603c72
VideoCommon: De-globalize GeometryShaderManager class. 2022-12-29 15:33:19 +01:00
Mai 7552deeff4
Merge pull request #11388 from AdmiralCurtiss/globals-vertexshadermanager
VideoCommon: De-globalize VertexShaderManager class.
2022-12-29 04:48:24 +00:00
JMC47 82e5f438f9
Merge pull request #11219 from K0bin/android-vk-alidation
VideoBackends:Vulkan: Migrate to VK_EXT_debug_utils
2022-12-28 14:16:51 -05:00
Admiral H. Curtiss 50625728e0
VideoCommon: De-globalize VertexShaderManager class. 2022-12-28 15:52:29 +01:00
Admiral H. Curtiss 725bd64ec2
VideoCommon: De-globalize PixelShaderManager class. 2022-12-27 20:13:24 +01:00
Robin Kertels 19a4653203
VideoBackends:Vulkan: Replace debug_report with debug_utils
The former is deprecated and pretty much all modern drivers
support VK_EXT_debug_utils.
Android drivers dont support it. On those drivers,
we use the implementation provided by the validation layers.
2022-12-27 02:48:50 +01:00
Minty-Meeo 14179f7565 Follow-up on a four-year-old Android NDK workaround
Surely this is fixed by now.
2022-12-22 19:54:46 -06:00
JMC47 fb8aa9744e
Merge pull request #11286 from K0bin/vk-query-fix
VideoBackends: Query fixes and cleanups
2022-12-19 03:15:48 -05:00
Admiral H. Curtiss c9f31ad6a6
Merge pull request #11262 from K0bin/present-sync
VideoBackends:Vulkan: Synchronize presentation
2022-12-04 14:30:59 +01:00
Robin Kertels 35a6d16d9e
VideoBackends: Rename query_type to query_group 2022-11-29 23:14:23 +01:00
Robin Kertels df2e07ad29
VideoBackends:Vulkan: Fix incorrect barriers in StagingBuffer
HOST barriers need to be issued regardless of
whether the memory type is coherent
and we need to properly synchronize writes to the buffer.
2022-11-29 23:14:23 +01:00
Robin Kertels 6ba7573877
VideoBackends:Vulkan: Fix queries
Fixes both checking whether queries are done
and actually resets query pools.
2022-11-29 23:14:07 +01:00
Pokechu22 cc5640245c Fix build errors related to formatting non-scoped enums 2022-11-23 13:45:43 -08:00
Robin Kertels 3beb22ed7f
VideoBackends:Vulkan: Synchronize presentation
Synchronize with the submission thread
if the last present is not done yet.
2022-11-07 02:20:22 +01:00
Robin Kertels f5fecaf964
VideoBackends:Vulkan: Fix 0 size descriptor pools
[ VUID-VkDescriptorPoolCreateInfo-maxSets-00301 ] Object 0:
handle = 0x7f1,b8d,3cd,e70, type = VK_OBJECT_TYPE_DEVICE; |
MessageID = 0xa1,70e,236 | vkCreateDescriptorPool():
pCreateInfo->maxSets is not greater than 0.
The Vulkan spec states: maxSets must be greater than 0
2022-10-31 22:41:16 +01:00
JMC47 027e10460a
Merge pull request #10977 from tellowkrinkle/FixBackendMultithreading
VideoBackends:Vulkan: Improve backend multithreading
2022-10-25 04:14:01 -04:00
JMC47 b66793194e
Merge pull request #11028 from tellowkrinkle/MetalFixes
Various Metal renderer improvements
2022-10-24 15:22:37 -04:00
JMC47 cdcbe51b2a
Merge pull request #10890 from tellowkrinkle/VertexLineExpand
VideoCommon: Add vertex shader point/line expansion
2022-10-23 01:49:26 -04:00
Robin Kertels aa1679f2c7
VideoBackends:Vulkan: Clean up unused memory allocation code 2022-10-23 03:21:29 +02:00
Robin Kertels 1ba58e83ca
VideoBackends:Vulkan: Use VMA for stream buffer 2022-10-23 03:21:29 +02:00
Robin Kertels 0e1b7a7b35
VideoBackends:Vulkan: Use VMA for bounding box 2022-10-23 03:21:29 +02:00
Robin Kertels 0532f4a05a
VideoBackends:Vulkan: Use VMA for staging buffers 2022-10-23 03:21:14 +02:00
TellowKrinkle 3a5901d12e VideoBackends:Vulkan: Add support for vertex shader point and line expansion 2022-10-22 20:13:24 -05:00
Robin Kertels 3ffbf94b2a
VideoBackends:Vulkan: Set up VMA
Co-authored-by: iwubcode <iwubcode@users.noreply.github.com>
2022-10-23 02:54:35 +02:00
TellowKrinkle 6fd933915b VideoBackends:Vulkan: Improve backend multithreading
Makes the multiple threads actually able to run at the same time
2022-10-17 00:05:35 -05:00
Admiral H. Curtiss 10f973a87f
Merge pull request #11122 from K0bin/descriptor-overhaul
VideoBackends:Vulkan: Allocate descriptor pools as needed
2022-10-17 04:25:35 +02:00
Robin Kertels 6992b0d8e1
VideoBackends:Vulkan: Allocate descriptor pools as needed 2022-10-16 17:04:35 +02:00
Pokechu22 ae7b14887b Remove varargs support from LOG_VULKAN_ERROR
Nothing currently uses it. It could theoretically be replaced with fmt support, but I don't think the LOG_VULKAN_ERROR macro is that useful and it'd be better to replace it with regular logging instead.
2022-10-12 16:50:51 -07:00
Robin Kertels 332824f7d5
VideoBackends:Vulkan: Fix command buffer cleanup 2022-10-08 21:40:33 +02:00
TellowKrinkle 274d4679ca VideoBackends:Multiple: More GPUs with broken subgroup ops 2022-10-08 04:44:48 -05:00
Admiral H. Curtiss eea31db781
Vulkan/CommandBufferManager: Show error code in PanicAlerts. 2022-10-04 19:50:23 +02:00
JMC47 c196c47e81
Merge pull request #11090 from K0bin/submit-rework
Vulkan: Raise number of command buffers
2022-09-30 20:15:25 -04:00
Robin Kertels e5fb9c9adf
VideoBackends:Vulkan: Raise number of command buffers
Avoid waiting for earlier submissions when we flush more often.
The vertex manager will flush more often if the game accesses the EFB
on the CPU, to give the GPU a head start.
2022-10-01 01:26:04 +02:00
Robin Kertels fba7d35f94
VideoBackends:Vulkan: Associate descriptor pool with frame rather than command buffer 2022-10-01 01:26:04 +02:00
Robin Kertels ed75a58061
VideoBackends:Vulkan: Decouple available command buffers from frames in flight 2022-10-01 01:26:04 +02:00
Robin Kertels e8fa867f14
VideoBackends:Vulkan: Only synchronize with submission thread when necessary
We only need to synchronize with the submission thread
when submitting on the GPU thread or when waiting for a command buffer.
2022-10-01 01:26:04 +02:00
Robin Kertels 2e6d8d6575
VideoBackends:Vulkan: Fix validation error around surface_capabilities2 2022-10-01 01:26:03 +02:00
Robin Kertels 81c817c54d
VideoBackends:Vulkan: Workaround slow vkCmdCopyImageToBuffer on QCom driver 2022-09-30 21:13:42 +02:00
TellowKrinkle 28b31b8327 VideoBackends:Vulkan: Make dynamic vertex loader optional
Makes it easier to disable in the future if support for VK_EXT_vertex_input_dynamic_state is added
2022-09-19 16:28:24 -05:00
TellowKrinkle 936b4d5d0d VideoBackends:Vulkan: Dynamic vertex loader support 2022-09-19 16:28:24 -05:00
TellowKrinkle 99533d2840 VideoCommon: Add separate pipeline usage for UberShaders 2022-09-19 16:28:24 -05:00
TellowKrinkle 4c629c2bee VideoCommon: Add dynamic vertex loader to ubershaders 2022-09-19 16:28:23 -05:00
Pokechu22 0cced44142 Use `__VA_OPT__(, ) __VA_ARGS__` instead of `##__VA_ARGS__`
Per https://en.cppreference.com/w/cpp/preprocessor/replace#.23_and_.23.23_operators the `##` behavior is a nonstandard extension; this extension seems to be supported by all compilers we care about, but IntelliSense in visual studio doesn't correctly handle it, resulting in false errors in the IDE (but not when compiling).

Per https://en.cppreference.com/w/cpp/preprocessor/replace#Function-like_macros C++20 introduced a workaround, where `__VA_OPT__(, )` generates a comma if and only if `__VA_ARGS__` is non-empty.

This PR replaces all occurrences, with the exception of Externals, DSPSpy (which is not likely to be edited in MSVC and does not target C++20 currently), and JitArm64_Integer.cpp (which uses `Function(__VA_ARGS__)`, and thus does not ever need a comma).
2022-08-23 12:09:57 -07:00
Pokechu22 da7aded00d Vulkan: Remove unused swap chain functions
These were added in 5e29508b8f and 1f2d43c870, but were replaced with CONFIG_CHANGE_BIT_VSYNC and CONFIG_CHANGE_BIT_STEREO_MODE in e4b205c769.
2022-08-17 18:16:17 -07:00
TellowKrinkle 6559c6b8ee VideoBackends:Multiple: Grammar fixes 2022-07-21 20:44:19 -05:00
TellowKrinkle 6ee0248eab VideoBackends:Metal: MSAA support 2022-07-21 20:44:19 -05:00
TellowKrinkle 716c0980d7 VideoBackends: Add Metal renderer 2022-07-21 20:44:19 -05:00
TellowKrinkle 6ab24e6c17 VideoCommon: Better driver bug handling
Adds a pass to process driver deficiencies between UID caching and use, allowing a full view of the whole pipeline, since some bugs/workarounds involve interactions between blend modes and the pixel shader
2022-07-13 21:51:24 -05:00
JMC47 cce6133ef6
Merge pull request #10749 from tellowkrinkle/IntelUbershaders
VideoCommon: Fix ubershaders on MoltenVK Intel
2022-07-10 19:35:55 -04:00
OatmealDome 1c6a0073d2 ShaderCompiler: Use compute shader header in compute shaders 2022-07-09 19:01:58 -04:00
iwubcode dda1479ecf VideoBackends / VideoCommon: refactor Vulkan to use new SPIRV functionality 2022-06-24 18:09:53 -05:00
TellowKrinkle 26529a31ab VideoCommon: Fix SSBO layout and remove associated "bug" 2022-06-16 20:26:11 -05:00
TellowKrinkle db6e928c8d VideoCommon: Fix Intel GPUs on Metal/Vulkan locking up in ubershaders 2022-06-14 00:48:47 -05:00
OatmealDome 803a0de5a4 VKMain: Remove check for macOS 10.14 2022-06-01 22:57:56 -04:00
Admiral H. Curtiss 580c721c82
cmake: Don't use PCH with Qt6. 2022-05-22 01:19:44 +02:00
JMC47 c0488de482
Merge pull request #10251 from Pokechu22/negative-scissor
Rework scissor handling
2022-04-24 15:00:42 -04:00
Pokechu22 8e7c848425
Merge pull request #10601 from Pokechu22/vulkan-shader-compile-error
Vulkan: Improve shader compile error handling
2022-04-24 11:43:10 -07:00
JMC47 c42392c565
Merge pull request #10290 from OatmealDome/m1-earlyz-bug
DriverDetails: Add broken discard with early-Z bug on Apple Silicon GPUs
2022-04-24 13:30:04 -04:00
Pokechu22 04fdadd9d5 VideoCommon: Rename norm0/norm1/norm2 to normal/tangent/binormal 2022-04-22 16:54:36 -07:00
Pokechu22 0f92ab380e Vulkan: Include the info log in the shader compile error panic alert
The other backends do this, and it is helpful for quickly identifying errors during development.
2022-04-22 16:38:35 -07:00
Pokechu22 7ae71e643e Vulkan: Close the output stream on shader compile error before showing the panic alert
This fixes the file showing up as 0 bytes in Windows Explorer (although the file would still display properly when opened).
2022-04-22 16:37:43 -07:00
OatmealDome 259a5fc7c0 DriverDetails: Add broken discard with early-Z bug on Apple Silicon GPUs 2022-04-20 14:56:34 -04:00
OatmealDome e7f5e5172c DriverDetails: Introduce new VENDOR_APPLE for Apple GPUs 2022-04-19 10:55:27 -04:00
OatmealDome bad0283ff7 VKPipeline: Add shader blending support 2022-04-19 10:55:26 -04:00
Pokechu22 4595b89ad8 VideoCommon: Remove bSupportsOversizedViewports
I think this is a relic of D3D9.  D3D11 and D3D12 seem to work fine without it.  Plus, ViewportCorrectionMatrix just didn't work correctly (at least with the viewports being generated by the new scissor code).
2022-04-16 10:26:11 -07:00
Mai M 40cda23491
Merge pull request #10404 from iwubcode/vulkan_headers_update
Externals / Vulkan: update Vulkan headers to v1.3.204
2022-02-04 01:04:29 -05:00
JMC47 4d1e6ff76a
Merge pull request #10422 from OatmealDome/opengl-shader-crash
VideoConfig: Add flag for whether the system supports setting object names
2022-01-31 01:25:46 -05:00
OatmealDome 4c7fe45475 VKShader: Only set shader name if supported 2022-01-31 01:17:40 -05:00