TellowKrinkle
1eb3aaa548
VideoCommon: Use std::array in PortableVertexDeclaration
2022-09-19 16:28:24 -05: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
dae56a24b8
VideoBackends:D3D12: Dynamic vertex loader support
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
7edc8b4e79
VideoBackends:Metal: Don't set primitive on ubershaders
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
d3dae1cd7e
VideoBackends:Metal: Dynamic vertex loader support
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
2dfe91336a
Merge pull request #10549 from Pokechu22/sw-tev-enum-map
...
Refactor various bits of graphics code for readability
2022-09-08 09:42:12 -07:00
Merry
362167fde5
MTLObjectCache: Correct signature of equality operator
...
Not doing so produces a warning in clang:
ISO C++20 considers use of overloaded operator '!=' (with operand types
'Metal::DepthStencilSelector' and 'Metal::DepthStencilSelector') to be
ambiguous despite there being a unique best viable function with
non-reversed arguments
The underlying reason for this warning is an incorrect method signature.
2022-08-29 21:23:23 +01:00
Pokechu22
5ef8a7973e
BPMemory: Make TevKSel more clear
...
It stores both the konst selection value for alpha and color channels (for two tev stages per ksel), and half of a swap table row (there are 4 total swap tables, which can be used for swizzling the rasterized color and the texture color, and indices selecting which tables to use are stored per tev stage in the alpha combiner). Since these are indexed very differently, the old code was hard to follow.
2022-08-29 11:10:05 -07:00
Pokechu22
4206ac243b
SW/Rasterizer: Use RAS1_IREF::getTexCoord and getTexMap
2022-08-29 11:10:05 -07:00
Pokechu22
ae0fcd9a9f
SW/Tev: Replace Tev::SetRegColor with Tev::SetKonstColors
2022-08-29 11:10:05 -07:00
Pokechu22
3b9a048291
SW/Tev: Use std::clamp for Clamp255 and Clamp1024
2022-08-29 11:10:05 -07:00
Pokechu22
bae0f21f74
SW/Tev: Remove Tev::Init
2022-08-29 11:10:05 -07:00
Pokechu22
c9936f8c1c
SW/Tev: Use EnumMap for scale/bias tables
2022-08-29 11:10:05 -07:00
Pokechu22
b02992548e
SW/Tev: Use EnumMap for Reg
2022-08-29 11:10:03 -07:00
Pokechu22
2db7569463
SW/Tev: Use TevColorRef/TevAlphaRef instead of raw s16 pointers
2022-08-29 11:05:10 -07:00
Pokechu22
e04d23e086
SW/Rasterizer: Fix indirect stage using texture coordinates/maps >= 4
...
The masking was incorrect. This affects the main menu of The Last Avatar, though that menu also relies on copy filter functionality that is not correctly handled in the software renderer so the difference is not obvious; that game shuffles textures across all indices for some reason, so this issue would presumably result in subtle flickering.
2022-08-28 12:19:36 -07: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
3c38f5c1d2
D3DCommon: Remove unused swap chain functions
...
These were added in ea15080d8f
(which added D3DCommon), but never were used.
2022-08-17 18:16:50 -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
OatmealDome
700162b8bd
MTLUtil: Include TargetConditionals
2022-07-23 17:22:11 -04:00
OatmealDome
77f44f1600
MTLMain: Include TargetConditionals
2022-07-23 17:22:11 -04:00
OatmealDome
b32b27ae9a
MTLMain: Only compile NSView manipulation code on macOS
2022-07-23 17:22:04 -04:00
OatmealDome
8ad7fa0313
MTLUtil: Return invalid for non-supported texture formats on non-macOS platforms
2022-07-23 13:53:31 -04:00
OatmealDome
7edd3aff75
MTLUtil: Don't attempt to get all GPUs on non-macOS platforms
2022-07-23 13:53:22 -04:00
OatmealDome
50d3ad58df
CMakeLists: Link videometal with Foundation
2022-07-23 13:53:15 -04:00
TellowKrinkle
6559c6b8ee
VideoBackends:Multiple: Grammar fixes
2022-07-21 20:44:19 -05:00
TellowKrinkle
a41345127f
VideoBackends:Metal: Remove unified memory config
...
Not worth the extra code
2022-07-21 20:44:19 -05:00
TellowKrinkle
5065767abd
VideoBackends:Metal: Avoid submitting draw calls with no vertices/indices
2022-07-21 20:44:19 -05:00
TellowKrinkle
ee3f2b8fcb
VideoBackends:Metal: Implement PerfQuery
2022-07-21 20:44:19 -05:00
TellowKrinkle
c48035908c
VideoBackends:Metal: Use unified memory path by default on all GPUs
2022-07-21 20:44:19 -05:00
TellowKrinkle
6ee0248eab
VideoBackends:Metal: MSAA support
2022-07-21 20:44:19 -05:00
TellowKrinkle
c0fd128171
VideoBackends:Metal: Use base vertex
2022-07-21 20:44:19 -05:00
TellowKrinkle
5742ccf8de
VideoBackends:Metal: Cache pipelines
...
Metal pipelines hold less stuff than Dolphin pipelines, so duplicates will appear
2022-07-21 20:44:19 -05:00
TellowKrinkle
e32213d031
VideoBackends:Metal: Create samplers on demand
2022-07-21 20:44:19 -05:00
TellowKrinkle
61705b05da
VideoBackends:Metal: FBFetch for Intel GPUs
2022-07-21 20:44:19 -05:00
TellowKrinkle
a5ef9dfd53
VideoBackends:Metal: Use DriverDetails for bugs
2022-07-21 20:44:19 -05:00
TellowKrinkle
716c0980d7
VideoBackends: Add Metal renderer
2022-07-21 20:44:19 -05:00
JMC47
70b0b03c3c
Merge pull request #10747 from tellowkrinkle/LateUIDFixup
...
Add a post-cache shader UID fixup pass
2022-07-17 00:43:16 -04:00
Pokechu22
2f43889141
Software: Use hardware-verified numbers for RGB->YUV conversion
2022-07-16 00:07:10 -07:00
Pokechu22
791bd16b28
Restructure parameters to TetxureConverterShaderGen/TextureConversionShader
...
This will be used for later refactoring for increased accuracy.
2022-07-16 00:07:10 -07: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
JosJuice
6e09b13ce3
Merge pull request #10829 from AdmiralCurtiss/spirv-cross-cmake-fix
...
Fix CMake Windows build after #10673 (HLSL from SPIRV).
2022-07-10 09:08:24 +02:00
OatmealDome
1c6a0073d2
ShaderCompiler: Use compute shader header in compute shaders
2022-07-09 19:01:58 -04:00
Admiral H. Curtiss
cdd3571491
D3DCommon: Add glslang include directories in CMake.
2022-07-10 00:59:32 +02:00
JMC47
828afc6735
Merge pull request #10673 from iwubcode/spirv-backends
...
D3D: Generate HLSL from SPIRV*
2022-07-08 15:29:58 -04:00
Minty-Meeo
69e32dea52
Resolve GCC Warnings
2022-06-30 15:26:48 -05:00
iwubcode
dda1479ecf
VideoBackends / VideoCommon: refactor Vulkan to use new SPIRV functionality
2022-06-24 18:09:53 -05:00
iwubcode
0eb9352579
D3D: update BoundingBox to match generated shader code
2022-06-24 18:09:53 -05:00
iwubcode
5dd2704416
D3D / VideoCommon: generate HLSL from SPIRV
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
Pokechu22
8df55b492c
Show a panic alert if the CP matrix indices don't match the XF matrix indices
...
This almost certainly never happens, but if it does we want to know.
2022-05-18 14:43:14 -07: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
784079853d
VideoCommon: Add comment explaining why only the first normal gets normalized
...
Co-authored-by: Scott Mansell <phiren@gmail.com>
2022-04-22 16:54:38 -07:00
Pokechu22
2a5c77f43f
VideoCommon: Handle emboss texgen with only a single normal
...
Fixes a large number of effects in Rogue Squadron 2 and 3.
2022-04-22 16:54:38 -07: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
4d1e1db3c5
Software: Fix scissor rectangle always being block-aligned
2022-04-16 12:35:00 -07:00
Pokechu22
8745d84949
Software: Disable clipping based on xfmem
...
This fixes https://bugs.dolphin-emu.org/issues/12562 , and is also needed for a hardware test of mine.
2022-04-16 12:35:00 -07:00
Pokechu22
925ceab82f
Software: Use new scissor logic
...
Unlike the hardware backends, the software renderer can use multiple scissor rectangles (though this will result in extra rasterization).
2022-04-16 12:34:58 -07:00
Pokechu22
076392a0f6
VideoCommon: Rework scissor handling
...
This increases accuracy, fixing the white rendering in Major Minor's Majestic March. However, the hardware backends can only have one viewport and scissor rectangle at a time, while sometimes multiple are needed to accurately emulate what is happening. If possible, this will need to be fixed later.
2022-04-16 10:26:11 -07: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
Pokechu22
59f299d5d6
Software: Fix zfreeze with CullMode::All
2022-04-08 20:05:32 -07:00
Pokechu22
164e0f742d
Software: Store offset in Slope
...
This is needed since we need a separate offset for zfreeze to work correctly. It also makes the code a bit less jank.
2022-04-08 20:05:32 -07:00
Pokechu22
3a742e99bb
Software: Remove config to disable ZComploc and ZFreeze
...
These aren't particularly useful, and make the code a bit more confusing. If for some reason someone wants to test what happens when these functions are disabled, it's easier to just edit the code that implements them. They aren't exposed in the UI, so one would need to restart Dolphin to do it anyways.
2022-04-08 20:05:32 -07:00
Pokechu22
af316f7bfe
Software: Implement pixel engine alpha read mode
2022-03-29 15:34:43 -07:00
iwubcode
69e79045a3
VideoBackends: fix opengl object label which was given an invalid enumeration as the identifier parameter. Most implementations will warn in this case but there is an implementation that will crash (ANGLE)
2022-03-24 00:25:59 -05:00
Pokechu22
c657b80996
Software/EfbInterface: Remove logspam for RGB565_Z16 being unsupported
...
This message would be logged, usually multiple times, for EVERY. SINGLE. PIXEL. That's pretty much useless and just makes the log unreadable. Plus, the current support (which acts as RGB8) is close enough that for end-user purposes, it's fine. I don't think the hardware backends support RGB565_Z16 and its antialiasing functionality correctly either, but they don't have similar logspam.
2022-03-08 13:59:55 -08:00
Pokechu22
7d76eea4ea
OGLRender: Log video backend info, in addition to showing it via OSD
...
This is mainly intended for debugging fifo.ci.
2022-02-23 18:30:02 -08:00
Pokechu22
444f6fd0cb
Treat alpha as 0 if alpha is 1 for blending
...
This removes the white box in fortune street again, without causing Mario Kart Wii to regress.
2022-02-08 15:15:15 -08:00
Pokechu22
0327e6acb4
Use the same logic for lerp bias for color and alpha
...
It doesn't make sense for alpha to add the bias ONLY when dividing by 2, while color doesn't apply the bias for divide by 2 only; hardware testing indicates that alpha should have the bias.
This fixes the menus in Mario Kart Wii (https://bugs.dolphin-emu.org/issues/11909 ) but reintroduces the white rectangle in Fortune Street.
This reverts commit 5aaa5141ed
(and several other matching changes elsewhere).
2022-02-08 15:15:15 -08:00
OatmealDome
a9b5188047
OGLMain: Set default value for bSupportsSettingObjectNames
2022-02-08 14:53:51 -05: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
8be3572c83
D3D12: Assume support for setting object names
2022-01-31 01:17:40 -05:00
OatmealDome
73d957f65c
D3DMain: Assume support for setting object names
2022-01-31 01:17:40 -05:00
OatmealDome
4c7fe45475
VKShader: Only set shader name if supported
2022-01-31 01:17:40 -05:00
OatmealDome
28f3cb3d97
VKTexture: Only set texture name if supported
2022-01-31 01:17:40 -05:00
OatmealDome
a8ce71fcd4
VulkanContext: Set bSupportsSettingObjectNames based on extension initialization result
2022-01-31 01:17:40 -05:00
OatmealDome
801897467c
VulkanEntryPoints: Make vkSetDebugUtilsObjectNameEXT an instance function
2022-01-31 01:17:40 -05:00
OatmealDome
a720083a7e
Revert "Vulkan: Check for vkSetDebugUtilsObjectNameEXT before using it"
...
This reverts commit 2ab66390f8
.
2022-01-31 01:17:40 -05:00
OatmealDome
b36c866398
OGLTexture: Only set texture name if supported
2022-01-31 01:17:40 -05:00
OatmealDome
ea1ac73c38
OGLShader: Only set shader name if supported
2022-01-31 01:17:40 -05:00
OatmealDome
390cc13834
OGLRender: Set object name support on GL >4.3 and GL ES 3.2
2022-01-31 01:17:40 -05:00
OatmealDome
947b562e06
VideoConfig: Add flag for whether the system supports setting object names
2022-01-31 01:17:37 -05:00
iwubcode
8e3dbe9671
Externals / Vulkan: update Vulkan headers to v1.3.204. Fix default present mode in Vulkan swap chain
2022-01-29 00:47:51 -06:00
JosJuice
7b8e846d0a
Merge pull request #10367 from Pokechu22/fmt-8.1.1
...
Update to fmt 8.1.1
2022-01-20 21:14:41 +01:00
Léo Lam
83c5446d85
Fix static initialisation order fiasco issue for Version variables
...
Fixes a crash that could occur if the static constructor function for
the MainSettings.cpp TU happened to run before the variables in
Common/Version.cpp are initialised. (This is known as the static
initialisation order fiasco.)
By using wrapper functions, those variables are now guaranteed to be
constructed on first use.
2022-01-14 00:04:22 +01:00