Filoppi
66592f79f2
Video: remove enforced resolution least common multiple of 4 when dumping screenshots and not videos (only videos encoders have this limit).
...
NOTE: this will likely trigger FIFOCI differences.
2024-04-08 22:54:45 +03:00
Filoppi
72db62e178
Video: split frame dumping settings into 3 resolution dumping modes
...
also polish aspect ratio related code for clarity
2024-04-08 22:54:45 +03:00
Pokechu22
a3951dc2d7
Fix out of bounds accesses for invalid vertex component formats
...
On all platforms, this would result in out of bounds accesses when getting the component sizes (which uses stuff from VertexLoader_Position.h/VertexLoader_TextCoord.h/VertexLoader_Normal.h). On platforms other than x64 and ARM64, this would also be out of bounds accesses when getting function pointers for the non-JIT vertex loader (in VertexLoader_Position.cpp etc.). Usually both of these would get data from other entries in the same multi-dimensional array, but the last few entries would be truly out of bounds. This does mean that an out of bounds function pointer can be called on platforms that don't have a JIT vertex loader, but it is limited to invalid component formats with values 5/6/7 due to the size of the bitfield the formats come from, so it seems unlikely that this could be exploited in practice.
This issue affects a few games; Def Jam: Fight for New York (https://bugs.dolphin-emu.org/issues/12719 ) and Fifa Street are known to be affected.
I have not done any hardware testing for this PR specifically, though I *think* I previously determined that at least a value of 5 behaves the same as float (4). That's what I implemented in any case. I did previously determine that both Def Jam: Fight for New York and Fifa Street use an invalid normal format, but don't actually have lighting enabled when that normal vector is used, so it doesn't change rendering in practice.
The color component format also has two invalid values, but VertexLoader_Color.h/.cpp do check for those invalid ones and return a default value instead of doing an out of bounds access.
2024-04-04 12:50:34 -07:00
Filoppi
1f34adf216
Video: move all padding added for frame dumping to a single function,
...
which also avoids the output window from being resized randomly to be a multiple of 4
2024-04-03 13:32:01 +03:00
Filoppi
d6230bbad8
Video: Change the frame dumper to actually use the raw emulation output resolution, avoiding any scaling if possible.
...
This should make comparisons much more reliable as pixels wouldn't be smushed together or stretched.
2024-04-03 13:32:01 +03:00
Jordan Woyak
550e008774
VideoCommon: Scan texture dumping directory + subdirectories to not re-dump existing files.
2024-03-21 20:27:34 -05:00
Jordan Woyak
ac5c2d9bf2
VideoCommon: Prefer D3D11/12 over OpenGL on Windows.
2024-03-15 19:51:04 -05:00
Admiral H. Curtiss
58616a6e4c
Merge pull request #12438 from Filoppi/custom_relative_aspect_ratio
...
Add Custom Relative and Raw (Squared Pixels) aspect ratios
2024-03-02 14:14:19 +01:00
Filoppi
41b19e262f
Add custom relative and raw (squared pixels) aspect ratio modes
2024-02-29 21:11:19 +02:00
Lioncash
7bf77a56f4
VertexManagerBase: Initialize m_ticks_elapsed on construction
...
Ensures that this always has a deterministic value on construction like
everything else in the class.
2024-02-28 10:21:08 -05:00
Admiral H. Curtiss
5090a028e6
Merge pull request #12435 from Filoppi/fix-aspect-ratio-stuck
...
Fix aspect ratio heuristics getting stuck to a state
2024-02-20 21:36:43 +01:00
Filoppi
48fbbdba7c
Video: update widescreen heuristic code to never get stuck to specific old values when changing settings
2024-02-20 22:26:19 +02:00
Filoppi
3f102ea8c2
Video: Make the game resolution (within the window) snap to the XFB size if they are within a ~1 pixel treshold on one axis only.
...
This takes care of making the image clearer in some edge cases where the game was already running at near perfect
4:3 with no stretching, and the VI aspect ratio didn't match the XFB by one pixel, making the image stretched and blurry.
-Video: Fix `FindClosestIntegerResolution() using the window aspect ratio and not the draw aspect ratio, causing it to prefer
stretching over black bars in cases when it wasn't desirable.
2024-02-20 03:09:11 +02:00
Filoppi
95ee0ac781
Video: Fix aspect ratio heuristics getting stuck to widescreen (or to non widescreen) (m_is_game_widescreen
variable) if the user first forced the aspect ratio to 16:9/4:3 and then set it back to Auto.
2024-02-20 02:42:52 +02:00
iwubcode
a1147dae6e
VideoCommon: move factory names to be a static inside each action class, so that they can be reused in the future for serialization
2024-02-18 15:45:10 -06:00
Admiral H. Curtiss
9b5fd5d34e
Merge pull request #12281 from TellowKrinkle/AsahiGL33
...
VideoCommon: Don't use indexed output for fbfetch
2024-02-18 02:33:50 +01:00
Mai
21300bb21b
Merge pull request #12457 from iwubcode/asset_memory_limit
...
VideoCommon: handle asset memory going over reserved limit correctly
2024-02-16 15:46:52 -05:00
iwubcode
2ab877586d
VideoCommon: make mesh asset data loadable by asset loader
2024-02-12 21:45:32 -06:00
iwubcode
60772ed9d2
VideoCommon: add functionality to prepare for a mesh asset that is loaded from a GLTF file
2024-02-11 13:28:00 -06:00
TellowKrinkle
5949911a5a
VideoCommon: Don't use indexed output for fbfetch
...
A nonzero index makes no sense, and Mesa doesn't like it when you supply an index
2024-02-07 03:52:31 +01:00
Admiral H. Curtiss
df5baab873
Merge pull request #12550 from lioncash/dead
...
VertexLoaderManager: Remove unused entry struct
2024-02-03 02:38:02 +01:00
Lioncash
4f40bdf501
VertexLoaderManager: Use fill() in Init()
...
Same behavior, less code.
2024-02-01 23:04:40 -05:00
Lioncash
ea95c82a01
VertexLoaderManager: Remove unused entry struct
...
This isn't used anywhere, so it can be removed.
2024-02-01 23:04:39 -05:00
Lioncash
7096f99f79
CustomPipeline: Mark arrays as constexpr
...
Ensures that these go into the ro section.
2024-02-01 23:02:45 -05:00
Lioncash
59211589b9
CustomPipeline: Make use of emplace_back() in GlobalConflicts()
...
We can use the string_view arguments to directly construct strings
inside of the global_result vector.
2024-02-01 23:02:45 -05:00
Lioncash
353ceedb50
CustomPipeline: Resolve unused variable warning
...
We can just use holds_alternative here instead.
2024-02-01 23:02:45 -05:00
Admiral H. Curtiss
da6b5dd38a
Merge pull request #12546 from lioncash/event
...
VideoCommon/Statistics: Remove global system accessor from s_after_frame_event
2024-01-31 21:16:21 +01:00
Admiral H. Curtiss
18abf7c768
Merge pull request #12544 from lioncash/getmod
...
GraphicsModGroup: Allow heterogenous lookup for GetMod()
2024-01-31 20:17:26 +01:00
Lioncash
cac66317aa
VideoCommon/Statistics: Remove global system accessor from s_after_frame_event
...
Instead, we make the event take a reference to the system and then pass
it in when the event is triggered.
This does introduce two other accessors, but these are much easier to
refactor out over time, and without modification to the existing event
interface.
2024-01-31 13:12:09 -05:00
Lioncash
0dfefacdf4
VertexLoaderBase: Collapse std namespace for hash and mark noexcept
...
Makes the hash specialization a little less noisy. Also we mark it
noexcept, since hashes shouldn't be throwing exceptions (and this can be
optimized on).
2024-01-31 12:43:00 -05:00
Lioncash
8e4b2565cd
TextureConfig: Collapse std namespace for hash
...
Lets us collapse the namespacing and make the specialization a little
less noisy.
2024-01-31 12:41:33 -05:00
Lioncash
b63dcd504d
RenderState: Collapse std namespace for hash
...
We can specify the namespace on the hash to make the specialization a
little less noisy.
2024-01-31 12:40:10 -05:00
Lioncash
5bfaa3a966
NativeVertexFormat: Collapse std namespace and mark hash noexcept
...
We can just tag the std:: onto the end of the specialization to make it
less noisy.
Also mark it as noexcept, since hashes shouldn't throw exceptions.
2024-01-31 12:37:44 -05:00
Lioncash
40b050fe37
GraphicsModGroup: std::move graphics_mod in Load()
...
The config object is quite heavyweight, so we should move this instead
of copying.
2024-01-31 12:27:43 -05:00
Lioncash
ccacda5e2c
GraphicsModGroup: Simplify try_add_mod()
...
We can use contains() here, and also move the mod config if it's valid
instead of copying it, since it contains quite a bit of allocated data.
2024-01-31 12:23:21 -05:00
Lioncash
a1879ea099
GraphicsModGroup: Allow heterogenous lookup for GetMod()
...
Allows using keys that aren't directly std::string as the key. This lets
us use std::string_view for the incoming path name, making it more
flexible with other string types.
2024-01-31 12:05:17 -05:00
Admiral H. Curtiss
9a3e770c23
Migrate SConfig::bWii to System.
2024-01-31 12:54:07 +01:00
TellowKrinkle
b7a451fc87
VideoCommon: Post to analytics when bug is overridden
2024-01-28 23:24:23 -06:00
TellowKrinkle
99f0c3fa01
VideoCommon: Add ability for backends to override bugs
2024-01-28 23:24:22 -06:00
TellowKrinkle
463269f704
VideoBackends:Multiple: Split up BUG_BROKEN_SUBGROUP_OPS
...
We now use subgroup ops for more than just a minor performance optimization
2024-01-28 23:20:39 -06:00
Admiral H. Curtiss
8482a50154
Merge pull request #12530 from iwubcode/custom_shaders_compilation_fixes
...
VideoCommon: fix some issues when compiling custom shaders
2024-01-28 14:30:37 +01:00
Admiral H. Curtiss
4843705061
Merge pull request #12534 from iwubcode/custom-pipeline-refactor
...
VideoCommon: refactor the custom pipeline logic to be reusable
2024-01-28 14:28:23 +01:00
Admiral H. Curtiss
c9715e7e7d
Merge pull request #12535 from iwubcode/vertexmanager_draw_refactor
...
VideoCommon: refactor drawing into its own function
2024-01-28 14:27:41 +01:00
JosJuice
990303a028
Merge pull request #12519 from lioncash/leak
...
PostProcessing: Don't potentially leak memory in BlitFromTexture()
2024-01-27 22:29:45 +01:00
iwubcode
c34b3ae390
VideoCommon: refactor drawing into its own function
2024-01-27 14:45:34 -06:00
iwubcode
3e3967ff94
VideoCommon: refactor the custom pipeline logic in the graphics mod action into a separate class, so it is reusable
2024-01-27 00:12:49 -06:00
Admiral H. Curtiss
c3652a7129
Merge pull request #12532 from lioncash/json
...
GraphicsMod/ShaderAsset: Lessen object churn a little bit
2024-01-26 18:52:52 +01:00
Mai
a553308775
Merge pull request #12443 from iwubcode/custom_pipeline_action_material_cubemap
...
VideoCommon: update custom pipeline action to support a variety of texture samplers, support for materials, and more!
2024-01-26 12:39:37 -05:00
Lioncash
7a59ecc39d
GraphicsTarget: Reduce object churn a little
2024-01-24 23:00:01 -05:00
Lioncash
1b7da37114
GraphicsTargetGroup: Reduce object churn a little
2024-01-24 22:52:58 -05:00
Lioncash
24f952c12b
GraphicsModFeature: Reduce object churn a little
2024-01-24 22:48:53 -05:00
Lioncash
0385b40bd8
GraphicsModAsset: Reduce object churn a little
2024-01-24 22:47:22 -05:00
Lioncash
2253d9a95d
GraphicsModGroup: Mark move constructor and assignment as noexcept
...
Allows containers to optimize off of std::move_if_noexcept
2024-01-24 22:41:30 -05:00
Lioncash
0327b11e0b
GraphicsModGroup: Reduce object churn
...
We can emplace and move to avoid doing object copies.
2024-01-24 22:40:05 -05:00
Lioncash
e3e20df185
GraphicsMod: Avoid some object churn
...
We have quite a bit of allocation churn going on here, so we can emplace
and move where appropriate to alleviate that a little.
2024-01-24 22:34:50 -05:00
Lioncash
7b6463ef1f
ShaderAsset: Emplace value instances when possible in ToJson()
...
Constructs elements directly inside the container and also makes it
shorter to read in certain instances.
2024-01-24 18:47:44 -05:00
iwubcode
cf081e839d
VideoCommon: fix compilation error in pixel shaders when per-pixel lighting isn't set for custom shaders
2024-01-23 21:50:42 -06:00
iwubcode
a8d45b8e55
VideoCommon: fix compilation error in uber pixel shaders when pixel shader lighting isn't set for custom shaders
2024-01-23 21:50:42 -06:00
iwubcode
7118fc5b7b
VideoCommon: fix pixel shader compilation error that happens when uint output is defined
2024-01-23 21:50:42 -06:00
iwubcode
a37fd83218
VideoCommon: fix uber shader pixel compilation error that happens when uint output is defined
2024-01-23 21:50:41 -06:00
iwubcode
3a688aa35e
VideoCommon: add function to serialize MaterialAsset to json
2024-01-23 13:01:33 -06:00
Lioncash
5aeadb1ef8
PostProcessing: Don't potentially leak memory in BlitFromTexture()
...
All release() does is relinquish the pointer, rather than free the
memory associated with it.
2024-01-23 13:34:40 -05:00
Lioncash
a3f9f2c7aa
PostProcessing: Remove unnecessary get() calls in BlitFromTexture()
...
We can just use operator-> instead.
2024-01-23 13:34:16 -05:00
iwubcode
a40a952177
VideoCommon: add a method to calculate a default value for ShaderAsset and another to list its types
2024-01-23 11:58:32 -06:00
iwubcode
b5a6225e1a
VideoCommon: add function to serialize ShaderAsset to json
2024-01-23 11:58:32 -06:00
Admiral H. Curtiss
ac670d99e2
VideoCommon: Only initialize Bounding Box if supported by GPU/driver.
2024-01-20 12:34:24 +01:00
Admiral H. Curtiss
95cba6be2b
Core/Movie: Refactor to class, move to System.
...
A bit of global state remains (the `header` in `BeginRecordingInput()`) due to unclear lifetime requirements.
2024-01-15 08:05:30 +01:00
Mai
c76dee7807
Merge pull request #12285 from iwubcode/serialize_graphics_mods
...
VideoCommon: add ability to serialize graphics mod to json object
2024-01-13 14:15:14 -05:00
Admiral H. Curtiss
637fd49909
FifoRecorder: Move instance to System.
2024-01-12 15:06:06 +01:00
Admiral H. Curtiss
fc2ec826d4
FifoPlayer: Move instance to System.
2024-01-05 20:15:18 +01:00
Admiral H. Curtiss
07c035e659
Core/SystemTimers: Refactor to class, move to System.
2024-01-04 23:35:19 +01:00
iwubcode
1073722cdf
Revert "VideoCommon: revert max pixel shader samplers back to 8 for Android devices."
...
This reverts commit 79648e1c24
.
2024-01-03 18:43:44 -06:00
Jules Blok
f1d446da3f
Merge pull request #12452 from Tilka/efb24
...
VideoCommon: apply "force 24-bit color" to EFB-to-VRAM copies as well
2023-12-29 03:51:59 +01:00
Lioncache
a23cf2121d
VideoCommon/PixelEngine: Generify lock guards
...
We don't need to specify the type of the mutex being passed in.
2023-12-22 14:19:29 -05:00
Lioncache
0505f057ca
VideoCommon/PixelEngine: Remove global system accessor in UpdateInterrupts()
...
Now that the system instance is passed through, this is no longer necessary.
2023-12-22 14:19:29 -05:00
Lioncache
e539dbba4c
VideoCommon/PixelEngine: Passthrough system instance in constructor
...
Simplifies the interface in terms of usage
2023-12-22 14:19:26 -05:00
Tilka
8d4575cfd8
Merge pull request #12454 from lioncash/proc
...
VideoCommon/CommandProcessor: Pass system instance through constructor
2023-12-21 17:46:28 +00:00
iwubcode
b669580aeb
VideoCommon: handle asset memory going over reserved limit correctly by erroring when the memory is exceeded and not allowing more assets to load until memory is released
2023-12-21 01:05:56 -06:00
iwubcode
79648e1c24
VideoCommon: revert max pixel shader samplers back to 8 for Android devices.
...
It was reported that some games (Zelda Wind Waker and Zelda Twilight Princess but others may also exhibit the issue) have graphical issues with the max pixel samplers set to 16 on some Android devices (ex: Pixel6); since this was increased for a performance heavy feature (custom shaders) just disable it for now. In the future, this could be handled more elegantly
2023-12-21 00:36:44 -06:00
Lioncache
f97b2d472a
VideoCommon/CommandProcessor: Pass system instance through constructor
...
Makes the use of the interface a little less noisy, especially given
how much of the interface depends on an instance being present.
2023-12-20 09:02:53 -05:00
iwubcode
fcfcf14e07
VideoCommon: when loading a texture asset, set sampler to linear sampler if the texture type is not defined and the 2d texture is assumed
2023-12-19 21:51:42 -06:00
iwubcode
ae758f489a
VideoCommon: update custom pipeline action to support a variety of texture samplers (2D, 2D array, and cube maps)
2023-12-19 21:51:42 -06:00
Tillmann Karras
ddb4566a41
VideoCommon: apply "force 24-bit color" to EFB-to-VRAM copies as well
2023-12-20 02:25:07 +00:00
Lioncache
b0d244b772
VideoCommon/Fifo: Pass system instance through FifoManager constructor
...
Given how many member functions make use of the system instance,
it's likely just better to pass the system instance in on construction.
Makes the interface a little less noisy to use.
2023-12-18 22:03:25 -05:00
Admiral H. Curtiss
715a551dac
Merge pull request #12170 from Filoppi/custom_aspect_ratio
...
Add support for custom aspect ratios
2023-12-18 05:19:06 +01:00
Filoppi
a6dfeed318
Video: make the "Auto" resolution setting also follow the max res setting, to avoid trying to create texture bigger than the maximum supported one
2023-12-18 02:00:25 +02:00
Filoppi
ff03189a60
Video: fix auto resolution scale calculations
2023-12-18 02:00:25 +02:00
Filoppi
fdd1934f12
Video: fix Auto Resolution Scale not updating when the window was resized.
...
Also fixes the widescreen hack not fully updating when the aspect ratio setting changed on the spot.
2023-12-18 02:00:25 +02:00
Filoppi
b3aa6ad93b
Video: implement custom aspect ratio support (already exposed to Qt).
...
This also renamed some variables/functions.
2023-12-18 02:00:24 +02:00
Filoppi
f96bea95d8
Video: rename Presenter::SetWindowSize()
2023-12-18 00:28:15 +02:00
Filoppi
24004af814
Video: polish aspect ratio related code comments to make it clearer
2023-12-18 00:28:14 +02:00
Mai
bcd74a81a9
Merge pull request #12370 from iwubcode/more_samplers
...
VideoBackends / VideoCommon: update max pixel shader samplers from 8 to 16
2023-12-17 14:50:23 -05:00
Mai
0125b5182f
Merge pull request #12409 from iwubcode/custom_material_graphics_mod_action_data
...
VideoCommon: prepare graphics mods for custom shader material data
2023-12-17 14:42:34 -05:00
Mai
b27c15fab6
Merge pull request #12382 from iwubcode/shader_asset_default_value
...
VideoCommon: update shader asset to provide a variant default value
2023-12-17 14:41:55 -05:00
Mai
f589c04aa7
Merge pull request #12372 from iwubcode/texture_usage_flag
...
VideoBackends / VideoCommon: add type enum to dictate how the texture is used; support texture 2d
2023-12-17 14:40:39 -05:00
Admiral H. Curtiss
190c4e8cda
Merge pull request #12427 from JosJuice/jitarm64-msr-updated-logical-imm
...
JitArm64: Fix MSRUpdated(ARM64Reg) with FEATURE_FLAG_PERFMON set
2023-12-16 17:22:23 +01:00
JosJuice
e0eb4ef5bc
JitArm64: Use enum class for LogicalImm size parameter
...
This should prevent issues like the one fixed in the previous commit
from happening again.
2023-12-16 16:48:26 +01:00
iwubcode
12dd15c8dd
VideoBackends / VideoCommon: add type enum to dictate whether a texture is a 2D texture, a texture array, or a cube map; support 2D texture type across backends
...
Co-authored-by: TellowKrinkle <tellowkrinkle@gmail.com>
2023-12-15 11:06:02 -06:00
iwubcode
b1d9e13d75
VideoCommon: prepare graphics mods for custom shader material data
2023-12-12 17:56:26 -06:00
Mai
ea3033731d
Merge pull request #12240 from iwubcode/material_asset_additional_properties
...
VideoCommon: add additional data types to material asset
2023-12-12 18:38:20 -05:00