Admiral H. Curtiss
839db591d9
HW/Memmap: Refactor Memory to class, move to Core::System.
2022-12-03 13:27:02 +01:00
Admiral H. Curtiss
6941d2e7e6
VideoCommon/CommandProcessor: Refactor to class, move to Core::System.
2022-11-29 08:15:01 +01:00
Admiral H. Curtiss
c9558ecb4c
CoreTiming: Refactor to class.
2022-11-27 03:47:12 +01:00
Mai
7be4c90f67
Merge pull request #11166 from AdmiralCurtiss/mmio-system
...
HW: Pass System to MMIO handlers.
2022-11-24 00:58:45 +00:00
Pokechu22
cc5640245c
Fix build errors related to formatting non-scoped enums
2022-11-23 13:45:43 -08:00
Admiral H. Curtiss
545fee9c94
Core/CommandProcessor: Reformat single/dual core dependent MMIO handlers.
2022-11-23 21:58:18 +01:00
Admiral H. Curtiss
0a6fdb9c13
HW: Pass System to MMIO handlers.
2022-11-23 05:52:21 +01:00
Mai
a47ed2124f
Merge pull request #11253 from AdmiralCurtiss/core-timing-events-pass-system
...
CoreTiming: Pass Core::System to Events.
2022-11-23 04:46:11 +00:00
Mai
cb232155d9
Merge pull request #11298 from Pokechu22/vertexloader-no-DataReader
...
VertexLoader: Eliminate use of DataReader
2022-11-23 04:40:53 +00:00
Pokechu22
e13094766d
Fix VertexLoader.cpp using the wrong size for texture matrix indices without a corresponding texture
...
This regressed in 0a906f553f
, I think (though I haven't confirmed it). Mario Tennis and Luigi's Mansion both use these for some reason (as far as I can tell, the data isn't actually used; it's just extra data included for no reason)
2022-11-22 17:49:54 -08:00
Pokechu22
0bcd3c79bb
VertexLoader: Eliminate use of DataReader
...
DataReader is generally jank - it has a start and end pointer, but the end pointer is generally not used, and all of the vertex loaders mostly bypassed it anyways.
Wrapper code (the vertex loaer test, as well as Fifo.cpp and OpcodeDecoding.cpp) still uses it, as does the software vertex loader (which is not a subclass of VertexLoader). These can probably be eliminated later.
2022-11-22 17:17:11 -08:00
Sam Belliveau
edb2c90b38
Improve FPS/VPS Counting and Revamp Appearance
2022-11-23 00:11:47 +01:00
Pokechu22
8f5a58f8be
Merge pull request #11285 from K0bin/cp-checks
...
VideoCommon:VertexLoaderManager: Reduce CPConfig checks
2022-11-21 15:35:06 -08:00
Robin Kertels
f179fd9c33
VideoCommon:VertexLoaderManager: Reduce CPConfig checks
...
A bit of a micro optimization:
CheckCPConfiguration is called 350 times instead of 35k times.
2022-11-18 01:42:30 +01:00
Pokechu22
1fdf15a1be
VideoCommon/FramebufferManager: Rename m_efb_cache_tiles_wide to m_efb_cache_tile_row_stride
...
This also initializes it in the non-tiled case just for consistency, although it's not actually read in that case.
2022-11-15 16:04:41 -08:00
Pokechu22
55e1c3b51d
VideoCommon/FramebufferManager: use !IsUsingTiledEFBCache() in GetEFBCacheTileRect
...
This is for readability only, and should behave identically.
2022-11-15 15:48:56 -08:00
Pokechu22
90d05fe37e
VideoCommon/FramebufferManager: Always update frame access mask on depth peeks
...
0e02ddcf52
removed separate logic for tiled versus non-tiled EFB peek caches, and as part of that made it so that color peeks updated the frame access mask even when a non-tiled cache is in use. However, the same change was not made for depth peeks. I'm not sure if this affected anything in practice.
2022-11-15 15:34:03 -08:00
JMC47
8a1c28be63
Merge pull request #11172 from K0bin/efb-refresh
...
VideoCommon:FramebufferManager: Mark cache as valid after refresh
2022-11-15 16:33:46 -05:00
TellowKrinkle
37a51f1d09
VideoCommon: Add an option to disable mipmaps
...
Needed by M1 fifoci to work around a minor non-determinism bug
2022-11-07 22:18:56 -06:00
Admiral H. Curtiss
a98df18947
VideoCommon: Hold ImGui lock while initializing and shutting down ImGui.
2022-11-06 21:48:55 +01:00
Admiral H. Curtiss
c931529e7a
Merge pull request #11225 from iwubcode/graphics-mod-textureload-callable
...
VideoCommon: call texture load graphics mod hook when textures are loaded
2022-11-06 18:58:51 +01:00
Admiral H. Curtiss
1348337277
Merge pull request #11246 from tellowkrinkle/PVDMemset
...
VideoCommon: Zero PortableVertexDeclarations on initialization
2022-11-06 18:54:21 +01:00
Admiral H. Curtiss
a36a5c1308
CoreTiming: Pass Core::System to Events.
2022-11-06 17:54:58 +01:00
TellowKrinkle
d9ed9ae331
VideoCommon: Zero PortableVertexDeclarations on initialization
...
Fixes an issue where the default initializer wouldn't initialize padding, making for fun non-determinism
2022-11-05 02:02:53 -05:00
Robin Kertels
0e02ddcf52
VideoCommon:FramebufferManager: Cleanup
2022-11-04 01:18:23 +01:00
Robin Kertels
371935d61e
VideoCommon:FramebufferManager: Mark cache as valid after refresh
...
Otherwise we might never hit the early return
if either depth or color doesnt have any active
tiles.
2022-11-04 01:18:23 +01:00
Pokechu22
fe559f3ed3
VideoCommon/Statistics: Require semicolons after statistics macros
...
This is clearer and reduces IntelliSense problems.
2022-10-29 15:39:41 -07:00
iwubcode
ea3e133200
VideoCommon: call texture load graphics mod hook when Dolphin loads a texture
2022-10-28 19:24:43 -05:00
Pokechu22
581a575042
VertexLoader: Remove "too many initializer values" workaround functions
...
I originally added these in 2b1d1038a6
, for both the TPipelineFunction and the size. The size was moved into the header in fdcd2b7d00
(making the size functions obsolete), but it seems that the functions themselves are no longer needed now.
I think I didn't use this approach before because it would have required ComponentFormatTable and ComponentCountRow to be templated, which would end up resulting in lines that were too long and thus wrapped in awkward places. (I *think* they didn't get inferred properly.) Now that we only need TPipelineFunction, the templating is not needed, and this ends up being a more readable version of the version with the wrapper functions.
2022-10-25 15:29:09 -07:00
JMC47
9ef7a3b44c
Merge pull request #11207 from Pokechu22/invalid-normal-count
...
VideoCommon: Treat invalid normal count as NormalTangentBinormal
2022-10-25 03:17:19 -04:00
Pokechu22
574939b683
VideoCommon: Treat invalid normal count as NormalTangentBinormal
...
See https://bugs.dolphin-emu.org/issues/13070 .
2022-10-24 22:36:43 -07:00
TellowKrinkle
fa8134deda
VideoBackends:Metal: Default to presentDrawable when vsync is on
2022-10-24 17:55:30 -05:00
JMC47
b66793194e
Merge pull request #11028 from tellowkrinkle/MetalFixes
...
Various Metal renderer improvements
2022-10-24 15:22:37 -04:00
TellowKrinkle
1e9b6f88e4
VideoCommon: Support hot reloading of VS expand
2022-10-22 20:18:02 -05:00
TellowKrinkle
3912fa7a2e
VideoCommon: Add reasons for disabled VS expand
2022-10-22 20:18:02 -05:00
TellowKrinkle
b567f3afcf
VideoCommon: Move repeated point/line expansion code to ShaderGenCommon
2022-10-22 20:13:24 -05:00
TellowKrinkle
0a42c534c3
VideoCommon: Add configuration to prefer VS for line/point expansion
2022-10-22 20:13:24 -05:00
TellowKrinkle
68f49df0f8
VideoCommon: Add vertex shader point and line expansion
2022-10-22 20:13:24 -05:00
JMC47
9222956acd
Merge pull request #10859 from tellowkrinkle/UniformBufferSize
...
VideoCommon: Increase uniform stream buffer size to 64mb
2022-10-20 17:13:31 -04:00
JMC47
9aece1810c
Merge pull request #10836 from iwubcode/d3d_uint_fix
...
VideoCommon: fix uint shader compiler error when using d3d
2022-10-18 12:12:08 -04:00
Pokechu22
ffed23c059
Simplify saving CP state
...
Rather than makring some parts of VertexLoaderManager dirty in some places and some in others, do it all in VideoState. Also, since CPState no longer contains pointers/non-CP data after d039b1bc0d
, we can just use p.Do on it instead of manually saving each field.
2022-10-09 19:32:59 -07:00
Pokechu22
05f3bbfa4d
Include tangent/binormal cache in savestates
...
This theoretically matters for RS2/RS3, although in practice these games reconfigure it each frame so it shouldn't matter for savestates.
2022-10-09 16:21:49 -07:00
iwubcode
bc360584a3
VideoCommon: add structures to graphics mods to allow for future adding or removing parameters with less code overhead
2022-10-09 00:00:01 -05:00
Admiral H. Curtiss
da27a3e6bc
Merge pull request #11095 from K0bin/misc-vulkan
...
Remove special treatment for Android in video settings
2022-10-08 22:24:30 +02:00
TellowKrinkle
a13f09433c
VideoBackends:Metal: Add config option to use presentDrawable
2022-10-08 04:46:07 -05:00
TellowKrinkle
c08de82e90
VideoBackends:Metal: Bring back unified memory config
...
Turns out it was helpful. (Most improvement in ubershaders.) This time with much better auto mode.
2022-10-08 04:46:05 -05:00
TellowKrinkle
274d4679ca
VideoBackends:Multiple: More GPUs with broken subgroup ops
2022-10-08 04:44:48 -05:00
Pokechu22
e8221d7948
Common/PointerWrap: Remove DoPOD
...
This was added in 385d8e2b15
, but became somewhat redundant with Do in 4c7bbd96e4
, and completely redundant now that std::is_trivially_copyable_v is well-supported.
2022-10-06 11:25:36 -07:00
Robin Kertels
4e204a9a1a
VideoCommon: Remove special treatment for Android in video settings
2022-10-01 20:53:02 +02:00
Robin Kertels
779fe13e62
VideoCommon: Update EFB peek cache on draw done and tokens
...
Massively improves performance in Mario Galaxy on Android.
2022-10-01 18:08:38 +02:00
JMC47
68eda7f887
Merge pull request #11084 from K0bin/qcom-workaround
...
Vulkan: Workaround slow vkCmdCopyImageToBuffer on QCom
2022-09-30 15:33:00 -04:00
Robin Kertels
81c817c54d
VideoBackends:Vulkan: Workaround slow vkCmdCopyImageToBuffer on QCom driver
2022-09-30 21:13:42 +02:00
Mai
0c19a1d87c
Merge pull request #11100 from Pokechu22/software-settings-merge
...
Use the same settings for the software renderer as other backends
2022-09-29 09:05:51 -04:00
Pokechu22
56fce3ba8a
Software: Remove dedicated texture/frame dumping infrastructure
...
Texture dumping can already be done using VideoCommon's system (and in fact the same setting already enabled *both* of these). Dumping objects/TEV stages/texture fetches doesn't currently have an equivalent, but could be added to the FIFO player instead.
2022-09-26 18:25:54 -07:00
Pokechu22
39569392bd
VideoCommon: Add statistics for draw done and token commands
2022-09-26 16:19:54 -07:00
Admiral H. Curtiss
b7855a3a56
Merge pull request #11073 from Hibyehello/Fix-Metal-init
...
Add Metal as backend option with Vulkan Disabled
2022-09-23 04:21:23 +02:00
JMC47
22197c09a3
Merge pull request #10781 from tellowkrinkle/UberVertexLoader
...
VideoCommon: Add dynamic vertex loader for ubershaders to reduce pipeline count
2022-09-20 17:14:07 -04:00
TellowKrinkle
1eb3aaa548
VideoCommon: Use std::array in PortableVertexDeclaration
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
99533d2840
VideoCommon: Add separate pipeline usage for UberShaders
2022-09-19 16:28:24 -05:00
TellowKrinkle
d289e9c51c
VideoCommon: Compile a few extra pipelines
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
Josh
ef13a54b0a
VideoBackends - Enable Metal without Vulkan
2022-09-19 11:28:34 -05:00
Pokechu22
d80201a57f
VertexLoaderARM64: Fix direct normal+tangent+binormal with index3 set
...
Fixes https://bugs.dolphin-emu.org/issues/12952
2022-09-18 23:33:24 -07:00
Pokechu22
f148de161f
VertexLoaderARM64: Specify the register to use as a parameter to ReadVertex
...
This also means that both a register and a vertex are always specified, though right now if the register is scratch1_reg the offset is always 0.
2022-09-18 23:33:24 -07:00
Pokechu22
ad644d5e92
VertexLoaderARM64: Merge GetAddressImm into GetVertexAddr
...
This way it more closely matches VertexLoaderX64, and is in general easier to understand.
2022-09-18 23:33:24 -07:00
Pokechu22
9a290c3d50
VertexLoaderARM64: Always use unscaled load/store instructions
...
The source and destination offsets will always be less than 255, so we can get rid of a lot of the complexity by doing this.
2022-09-18 23:33:24 -07:00
Pokechu22
afe5adb74d
VertexLoaderARM64: Use EnumMap for normal scales
2022-09-18 23:33:24 -07:00
Pokechu22
200676f4e3
VertexLoaderX64: Fix direct normal+tangent+binormal with index3 set
...
Fixes https://bugs.dolphin-emu.org/issues/12952
2022-09-18 23:33:23 -07:00
Pokechu22
5cc2f7729e
VertexLoaderX64: Use EnumMap for normal scales
2022-09-18 23:33:23 -07:00
Robin Kertels
2db74e7f21
OpcodeDecoding: Get vertex size from the loader
2022-09-19 01:14:53 +02:00
Robin Kertels
a6c6ec012c
VertexLoaderManager: Clean up and slightly speed up with templates
2022-09-19 01:14:49 +02:00
Robin Kertels
a31e36aeb7
VertexLoaderManager: Fix backwards preprocess check
...
Spotted by Pokechu22.
2022-09-15 23:56:04 +02:00
Robin Kertels
fdcd2b7d00
VertexLoader: Inline GetSize
2022-09-15 12:50:15 +02:00
Robin Kertels
8aa214453a
VertexLoader: Optimize GetVertexSize
...
GetComponentSizes was unused, so we simplify this and get rid
of the branches.
2022-09-15 02:47:23 +02:00
Admiral H. Curtiss
85bd57df0e
Merge pull request #11007 from PEmu2/enj
...
Edit error message
2022-09-08 20:00:18 +02:00
Admiral H. Curtiss
45c4aa288a
Merge pull request #10881 from iwubcode/graphics-mod-draw-fb-texture-names
...
VideoCommon: fix graphics target texture names for efb/xfb
2022-09-08 19:56:49 +02: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
b0717607b2
TextureInfo: Reorder members in constructor
...
m_stage is initialized last
2022-08-29 21:16:21 +01:00
Merry
3323375efb
GraphicsModManager: Reorder DecoratedAction members to initialization order
...
m_action_impl is initialized before m_mod in constructor
2022-08-29 21:15:49 +01:00
Pokechu22
698def66ff
Fifo analyzer: Fix various XF mistakes
...
* 'hangle' was a typo
* Light colors include an alpha value, so they should be 8 characters, not 6
* The XF command format adds 1 to the count internally (so 0 is one word), but we need to subtract that back to produce a valid command
* XFMEM_POSTMATRICES was calculating the row by subtracting XFMEM_POSMATRICES (POS vs POST), resulting in incorrect row numbering
2022-08-29 11:10:05 -07:00
Pokechu22
3fb09e3297
Fifo analyzer: Improve some BP descriptions
...
Mainly, the improvements are passing in the current command ID so that e.g. stage numbers can be directly included, instead of saying 0/1 or even/odd.
2022-08-29 11:10:05 -07:00
Pokechu22
546f9952a2
UberShaderPixel: Fix typo
2022-08-29 11:10:05 -07: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
f21798b9b6
BPMemory: Use even/odd in TwoTevStageOrders instead of 0/1
2022-08-29 11:10:05 -07:00
Pokechu22
e43f02c752
BPMemory: Improve consistency of hex offset comments
...
I search for these somewhat often with control+f, but tend to default to adding a 0x prefix, which means I don't find them until I remove it.
2022-08-29 11:10:05 -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
PEmu2
b516ae12ca
Edit error message
...
Edit error message to be less sarcastic. I doubt many users appreciate this when Dolphin has just crashed.
2022-08-22 19:52:13 -07:00
JosJuice
724bd3e597
VideoCommon: Fix OpenGL ES GPU texture decoding
2022-08-20 23:21:23 +02:00
CasualPokePlayer
ab8a8e6f84
Fix crashes in dual core mode on a PI_FIFO_RESET
2022-08-18 13:38:37 -07:00
iwubcode
637dca680c
VideoCommon: update ubershader pixel to not enforce d3d when writing color output that has been defined as uints
2022-08-06 16:08:58 -05:00
iwubcode
05135b4f43
VideoCommon: fix uint shader compiler error in specialized shaders. This error is in renderers that use uint for their color output (for logic ops). Remove D3D check for uint output since other backends could use uint output as well.
2022-08-06 16:08:58 -05:00
iwubcode
0b5f7d2c5f
VideoCommon: fix graphics target not properly setting 'draw_started' texture names for efb/xfb
2022-08-06 12:01:33 -05:00
Scott Mansell
ebf95370ef
Merge pull request #10946 from Pokechu22/remove-iLog
...
VideoCommon: Remove old iLog field
2022-08-05 22:42:09 +12:00
Pokechu22
354530cf61
VideoCommon: Remove old iLog field
...
Prior to 7854bd7109
, this was used by the debugger for the OpenGL and D3D9 plugins to control logging (via PRIM_LOG and INFO_LOG/DEBUG_LOG in VideoCommon code; PRIM_LOG was changed in 77215fd27c
), and also framedumping (removed in 64927a2f81
and 2d8515c0cf
), shader dumping (removed in 2d8515c0cf
and this commit), and texture dumping (removed in 54aeec7a8f
). Apart from shader dumping, all of these features have modern alternatives, and shader source code can be seen in RenderDoc if "Enable API Validation Layers" is checked (which also enables source attachment), so there's no point in keeping this around.
2022-08-04 15:49:39 -07:00
Pokechu22
20a2a2174d
Vulkan: Call setSourceFile in addition to addSourceText
2022-08-04 15:09:12 -07:00
Pokechu22
8129874d11
Sanitize and use increased precision when normalizing light directions
...
This normalization was added in 02ac5e95c8
, and changed to use floats in 4bf031c064
. The conversion to floats means that sometimes there is insufficient precision for the normalization process, which results in values of NaN or infinity. Performing the whole process with doubles prevents that, but games also sometimes set the values to NaN or infinity directly (possibly accidentally due to the values not being initialized due to them not being used in the current configuration?).
The version of Mesa currently in use on FifoCI (20.3.5) has issues with NaN. Although this bug has been fixed (b3f3287eac
in 21.2.0), FifoCI is stuck with the older version.
This change may or may not be incorrect, but it should result in the same behavior as already present in Dolphin, while working around the Mesa bug.
2022-08-04 08:52:44 -07:00
Shawn Hoffman
fec61f89a3
Timer: protect usages of ms timers from rollover
2022-08-02 22:24:06 -07:00
Shawn Hoffman
09089eeee0
Common::Timer: use chrono::steady_clock internally
2022-08-02 22:24:06 -07:00
Shawn Hoffman
17c554c165
Common/Hash: use zlib-ng for adler32. small cleanups.
2022-08-01 10:07:27 -07:00
JosJuice
97100290ee
Merge pull request #10885 from JosJuice/android-graphics-mods
...
Android: Add graphics mods support to GUI
2022-07-26 15:44:01 +02:00
Admiral H. Curtiss
a9edf129e3
Merge pull request #10889 from shuffle2/spng
...
replace libpng with libspng
2022-07-26 12:53:04 +02:00
Shawn Hoffman
76b4318b88
CPUDetect: improve win/arm64 support
...
read brand_string on macos/arm64
remove unused flags
report family/model info instead of vendor name
2022-07-25 21:21:11 -07:00
Shawn Hoffman
acb10f0006
replace libpng with libspng
2022-07-25 18:32:16 -07:00
JosJuice
e5a177ece9
Merge pull request #10868 from tellowkrinkle/UsesDSBFix
...
VideoCommon: Fix IsDualSrc check for dst blend factors
2022-07-23 22:14:07 +02:00
JosJuice
8f410bff15
Android: Add graphics mods support to CheatsActivity
2022-07-23 21:58:45 +02:00
Pokechu22
6a7aa8f2c6
Convert CP/XF matrix indices mismatch panic alert to a warning
...
https://bugs.dolphin-emu.org/issues/12977 indicates that this happens on startup of Spider-Man 2, even in single-core. I don't have the game, so I can't directly determine why this is happening, but presumably real hardware does not hang in this case, so we can make it less obtrusive.
2022-07-23 09:01:22 -07:00
TellowKrinkle
6ee0248eab
VideoBackends:Metal: MSAA support
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
Admiral H. Curtiss
b0b5faa793
Merge pull request #10874 from JosJuice/cmpr-layout
...
VideoCommon: Fix CMPR compute shader layout
2022-07-19 12:05:29 +02:00
JosJuice
1a2bc2eff9
VideoCommon: Fix CMPR compute shader layout
...
Looks like a copy-paste gone wrong. The compute shaders for the other
formats use a group size of 8 * 8, whereas the CMPR compute shader
is supposed to use a flattened 64 * 1 as I understand it.
2022-07-18 18:56:50 +02:00
TellowKrinkle
88c85ce471
VideoCommon: Fix IsDualSrc check for dst blend factors
2022-07-17 20:50:53 -05:00
Joon Park
319288de8e
Fix OpenGL error on M1 Mac.
...
Followup to #10466 . Resolves the following error:
ERROR: 0:85: '&' does not operate on 'uvec3' and 'int'
2022-07-17 08:54:39 -04: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
a6e06f38ad
Add notes about precision of YUV->RGB conversion factors for XFB
2022-07-16 00:07:10 -07:00
Pokechu22
e7339d63f1
Rework TextureConversionShader for hardware accuracy and simplicity
2022-07-16 00:07:10 -07:00
Pokechu22
b16ec5b6dc
Rework TextureConverterShaderGen for hardware accuracy and simplicity
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
89ae060214
VideoCommon: Increase uniform stream buffer size to 64mb
...
Densha De Go uses 27mb per frame, and we want enough space for the CPU to be encoding one frame while the GPU is rendering the previous
2022-07-15 18:21:50 -05:00
TellowKrinkle
fb5648541c
VideoCommon: Remove dstalpha from BlendingState
...
It's not supported by any PC graphics API, and therefore completely unused
2022-07-15 15:31:47 -05:00
TellowKrinkle
991024173e
VideoCommon: Always use fbfetch in ubershaders if available
...
Reduce the number of different pipelines needed. Also works around drivers that break when you combine fbfetch with dual source blending
2022-07-15 15:31:47 -05:00
Pokechu22
d20094efa2
Add extra Low and High fields to CopyFilterCoefficients
...
This struct is the only one in BPMemory that uses u64 as its base. These fields are to allow viewing it as two u32s instead. It's not used by Dolphin right now, but it is used in the copy of BPMemory.h used by hwtests.
2022-07-15 12:29:40 -07:00
Pokechu22
bed278d3b7
Create dedicated enum for EFB/XFB gamma correction
...
This also changes the behavior for the invalid gamma value, which was confirmed to behave the same as 2.2.
Note that currently, the gamma value is only used for XFB copies, even though hardware testing indicates it also works for EFB copies. This will be changed in a later commit.
2022-07-15 12:29:40 -07:00
Pokechu22
dd41a72378
Only use intensity formats if both intensity_fmt and auto_conv are set
...
auto_conv is normally always set for EFB copies, but hardware testing indicates that intensity_fmt does nothing if auto_conv is not set.
2022-07-15 12:29:40 -07:00
Pokechu22
cd2cc5fa22
Rename EFB copy bit 2 from yuv to unknown_bit
...
It was named yuv in 522746b2c2
, but hardware testing indicates that that bit does nothing (the intensity format bit enables YUV conversion, instead).
2022-07-15 12:29:40 -07:00
Pokechu22
850e524514
Use fmt::to_string for texture format overlay
...
This required adding parentheses to the font used by that.
2022-07-15 12:29:40 -07:00
Pokechu22
290e62f179
Remove casts to integers for texture and EFB formats
...
The only remaining casts for these types that I know of are in TextureInfo (where format_name is set to the int version of the format, and since that affects filenames and probably would break resource packs, I'm not changing it) and in TextureDecoder_Common's TexDecoder_DrawOverlay, which will be handled separately.
2022-07-15 12:29:40 -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
e237aa1435
Merge pull request #10777 from tellowkrinkle/EFBFlush
...
VideoCommon: Remember to flush command buffers after multiple EFB copies
2022-07-13 19:45:31 -04:00
JMC47
5663a44962
Merge pull request #10842 from tellowkrinkle/ClearBackendInfo
...
VideoCommon: Clear backend_info before populating
2022-07-13 16:40:46 -04:00
TellowKrinkle
f83015649c
VideoCommon: Clear backend_info before populating
2022-07-13 02:55:54 -05:00
TellowKrinkle
6bd0fc86ba
VideoCommon: Properly mask fbfetch logic op emulation
2022-07-13 02:27:45 -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
Admiral H. Curtiss
e072aaa769
ShaderCache: Fix inverted usage of palette_format.
2022-07-09 13:17:53 +02:00
JMC47
fac66897af
Merge pull request #10819 from Dentomologist/fix_shader_compilation_warnings
...
VideoCommon: Fix D3D shader compilation warnings
2022-07-08 18:46:29 -04:00
JMC47
828afc6735
Merge pull request #10673 from iwubcode/spirv-backends
...
D3D: Generate HLSL from SPIRV*
2022-07-08 15:29:58 -04:00
Dentomologist
e1e0f42b37
VideoCommon: Fix D3D shader warning X3557 (single iteration loop)
...
Fix warning "loop only executes for 1 iteration(s), forcing loop to
unroll" when vertex_in == 1
2022-07-08 00:25:55 -07:00
Dentomologist
71541c1324
VideoCommon: Fix D3D shader warning X4000 (uninitialized variables)
...
Initialize alpha_A and alpha_B. They were previously only initialized in
cases where they were used, but D3D isn't able to figure that out.
2022-07-08 00:25:14 -07:00
Dentomologist
0fac1d6e87
VideoCommon: Fix D3D shader warning X3571 (negative base for pow())
...
Add abs() to fix "pow(f, e) will not work for negative f, use abs(f) or
conditionally handle negative values if you expect them".
2022-07-08 00:19:05 -07:00
TellowKrinkle
3ee4b89a46
VideoCommon: Remember to flush command buffers after multiple EFB copies
2022-07-06 18:38:05 -05:00
Admiral H. Curtiss
3bcd7aced9
Merge pull request #8467 from CookiePLMonster/interruptable-shader-precompile
...
Make shader precompilation interruptable
2022-07-02 13:08:37 +02:00
JosJuice
07a15a3228
Merge pull request #10624 from Minty-Meeo/resolve-gcc-warnings
...
Resolve Linux GCC Warnings
2022-07-02 09:17:44 +02:00
Minty-Meeo
69e32dea52
Resolve GCC Warnings
2022-06-30 15:26:48 -05:00
iwubcode
4788a05c76
VideoCommon: fix projection graphics mod affecting more than the intended draw call
2022-06-29 20:04:59 -05:00
iwubcode
1480b78f64
VideoCommon: dump EFB with size and texture format details and dump XFB with size details. Finally move count to front of image for XFB/EFB dumps so as to make it easier to see them in order. Change the count value prefix to 'n'
2022-06-27 18:20:52 -05:00
iwubcode
69839df1eb
VideoCommon: support dynamically updating game mods at runtime
2022-06-27 18:20:52 -05:00
iwubcode
892678648e
VideoCommon: trigger mod calls in TextureCacheBase (efb/xfb calls), VertexManagerBase (draw calls), and VertexShaderManager (projection calls)
2022-06-27 18:20:52 -05:00
iwubcode
62c186e14b
VideoCommon: add UninitializeEFBMemory to mirror XFB function
2022-06-27 18:20:52 -05:00
iwubcode
0f88155729
Core / DolphinQt / VideoCommon: add setting for enabling graphic mods
2022-06-27 18:20:52 -05:00
iwubcode
f416b71925
VideoCommon: add logic to handle a GraphicsMod while Dolphin is running
2022-06-27 18:20:52 -05:00
iwubcode
254246b814
VideoCommon: add logic to read a GraphicsMod from configuration
2022-06-27 18:20:52 -05:00
iwubcode
f92beb611f
VideoCommon: add game mod constants
2022-06-26 21:53:21 -05:00
iwubcode
4fbbd85ef4
VideoCommon: create variables for EFB/XFB copy prefix. Reword prefix to 'efb1' and 'xfb1' to match textures
2022-06-26 21:53:21 -05:00
iwubcode
b9995b04a0
VideoCommon: add a way to get have a graphics directory count for all games by using a special 'all.txt' instead of a 'gameid.txt' file
2022-06-26 00:45:13 -05:00
iwubcode
7854afe512
VideoCommon: add support for setting and getting the stage from the texture info
2022-06-26 00:45:13 -05:00
iwubcode
a1892a9c68
VideoCommon: add function to check whether TextureFormat is a valid value
2022-06-26 00:45:13 -05:00
iwubcode
a8b5266347
VideoCommon: enable optimizer and remove debug details when converting GLSL to SPIR-V with validation layers turned off
2022-06-24 18:09:53 -05:00
iwubcode
dda1479ecf
VideoBackends / VideoCommon: refactor Vulkan to use new SPIRV functionality
2022-06-24 18:09:53 -05:00
iwubcode
c2d3b7e7f5
VideoCommon: update pixel shader output to match old D3D code
2022-06-24 18:09:53 -05:00
iwubcode
cad1d6ce90
VideoCommon: fix support of stereoscopic rendering after moving d3d to SPIRV generation
2022-06-24 18:09:53 -05:00
iwubcode
993fa3bf94
VideoCommon: update UberShaderPixel to properly support logic ops, matching the specialized shader
2022-06-24 18:09:53 -05:00
iwubcode
5dd2704416
D3D / VideoCommon: generate HLSL from SPIRV
2022-06-24 18:09:53 -05:00
iwubcode
3790c99a7d
VideoCommon: add common spirv helper functions
...
Co-authored-by: tellowkrinkle <tellowkrinkle@gmail.com>
2022-06-24 17:52:31 -05:00
Pokechu22
1faca4bfc7
Merge pull request #10752 from tellowkrinkle/BetterShaderNames
...
VideoCommon: Better shader names
2022-06-24 15:50:48 -07:00
JMC47
ffa3bf86fb
Merge pull request #10760 from tellowkrinkle/std430
...
VideoCommon: Fix SSBO layout and remove associated "bug"
2022-06-24 18:40:47 -04:00
Pierre Bourdon
6ddff87d42
Merge pull request #10755 from tellowkrinkle/DebugUID
...
VideoCommon: Don't add garbage to shader uids in debug builds
2022-06-22 14:33:23 +02:00
Braxton Anderson
2b2b8e932d
Rename FPS_REFRESH_INTERVAL in VideoCommon/FPSCounter
2022-06-17 20:11:53 -06:00
TellowKrinkle
f79ac768d8
VideoCommon:ShaderCache: Add const to some local variables
2022-06-17 20:14:32 -05:00
TellowKrinkle
26529a31ab
VideoCommon: Fix SSBO layout and remove associated "bug"
2022-06-16 20:26:11 -05:00
TellowKrinkle
c7892d7371
VideoCommon: Name ubershaders
2022-06-16 02:08:45 -05:00
TellowKrinkle
23c1721fbd
VideoCommon: Reduce duplicates of non-palette-requiring texture decode shaders
2022-06-16 02:08:45 -05:00
TellowKrinkle
3fe1a1a3d7
VideoCommon: Don't add garbage to shader uids in debug builds
...
There wasn't anything stopping compilers from doing it in release builds either, but most optimizations would make the padding zero
2022-06-14 21:51:58 -05:00
TellowKrinkle
25929789c1
VideoCommon: Don't pass State by inout
...
Spirv-cross's MSL codegen makes the amazing choice of compiling calls to inout functions as `State temp = s; call_function(temp); s = temp`. Not all Metal backends handle this mess well. In particular, it causes register spills on Intel, losing about 5% in performance.
2022-06-14 00:48:47 -05:00
TellowKrinkle
db6e928c8d
VideoCommon: Fix Intel GPUs on Metal/Vulkan locking up in ubershaders
2022-06-14 00:48:47 -05:00
Silent
7faf5ea170
Clear the UI after async shader compilation
2022-06-10 17:19:59 +02:00
Silent
dcad3ec892
Allow to interrupt shader precompilation by stopping emulation
2022-06-10 17:11:32 +02:00
OatmealDome
6e2febd404
VideoBackendBase: Remove __builtin_available for macOS 10.14
2022-06-01 22:57:51 -04:00
Dentomologist
f6b9acccfc
Common: Refactor PointerWrap
2022-05-25 13:06:41 -07:00
Admiral H. Curtiss
580c721c82
cmake: Don't use PCH with Qt6.
2022-05-22 01:19:44 +02:00
Mai M
a98d0367d8
Merge pull request #10677 from Pokechu22/no-printf-log
...
Remove printf-style logging
2022-05-19 17:55:17 -04:00
Pokechu22
2aa0ae097b
Merge pull request #10672 from Pokechu22/xf-invtxspec
...
Show panic alerts if the CP configuration doesn't match the XF configuration
2022-05-19 13:13:53 -07:00
Pokechu22
0637c17b59
VideoCommon/FrameDump: printf-format messages before logging them
2022-05-19 12:41:58 -07: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
Pokechu22
38a75f6a49
Show a panic alert if the CP vertex config doesn't match the XF vertex config
...
This probably isn't triggered by real games, but it's possible to accidentally do it with libogc (which results in freezes on real hardware).
2022-05-18 14:43:14 -07:00
Pokechu22
46bcdc4372
Rename CP and XF normal component count enums and update their descriptions
2022-05-18 14:43:14 -07:00
Pokechu22
736466a5d9
XFMemory: Rename hostinfo to invtxspec
2022-05-18 14:43:14 -07:00
Pokechu22
3949698acf
Verify graphics config validity after populating the backend info
...
... and refresh the config before populating the backend info, as the config (specifically iAdapter) needs to be set to correctly populate the backend info.
Before, the list of valid antialiasing modes was always determined from the first adapter on the list on startup, regardless of the adapter the user selected.
2022-05-16 16:59:57 -07:00
Shawn Hoffman
56626f73bf
fmt: fix 'ambigous overload' error
2022-05-10 19:19:52 -07:00
Admiral H. Curtiss
01d4a2e9cc
TextureCacheBase: Don't log error while measuring state size.
2022-04-26 21:26:42 +02:00
JMC47
c0488de482
Merge pull request #10251 from Pokechu22/negative-scissor
...
Rework scissor handling
2022-04-24 15:00:42 -04: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
39b2854b98
VertexLoader: Convert count register to remaining register
...
This more accurately represents what's going on, and also ends at 0 instead of 1, making some indexing operations easier. This also changes it so that position_matrix_index_cache actually starts from index 0 instead of index 1.
2022-04-22 16:54:38 -07:00
Pokechu22
97d0ff58c8
Convert vertex loader position cache to std::array
2022-04-22 16:54:38 -07:00
Pokechu22
f722bdf7f1
VertexLoaderX64: Refactor so that zfreeze is only in one place
...
(Specifically, the copy for VertexLoaderManager::position_cache. The position matrix index happens elsewhere, and the float path still has special logic to copy to scratch3.)
2022-04-22 16:54:38 -07:00
Pokechu22
6f1350ae51
VertexLoaderARM64: Fix z-freeze position matrix index
...
Before, it would always write to index 0 (which is unused). Now it writes to the correct index.
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
88134a6786
VertexShaderGen: Simplify normal calculation
...
This is a readability change; there should be no functional or performance differences.
2022-04-22 16:51:58 -07:00