Commit Graph

1839 Commits

Author SHA1 Message Date
Stenzek bc96557ec4 Externals: Update glslang to upstream commit 32d3ec3 2018-06-02 07:34:31 +00:00
Stenzek 640bfb8135 VideoConfig: Add a field for indicating logic op support in the backend 2018-05-26 00:07:20 +10:00
Stenzek d0c025bf0b OGL: Fix EFB access in MSAA-mode 2018-05-22 15:35:20 +10:00
Stenzek f74dbc794c EFB2RAM: Apply copy filter as a float coefficient after sampling
Using 8-bit integer math here lead to precision loss for depth copies,
which broke various effects in games, e.g. lens flare in MK:DD.

It's unlikely the console implements this as a floating-point multiply
(fixed-point perhaps), but since we have the float round trip in our
EFB2RAM shaders anyway, it's not going to make things any worse. If we
do rewrite our shaders to use integer math completely, then it might be
worth switching this conversion back to integers.

However, the range of the values (format) should be known, or we should
expand all values out to 24-bits first.
2018-05-22 12:24:08 +10:00
Lioncash 8a1a924e2e Vulkan/PostProcessing: Make file-scope std::string instances const char arrays
Avoids performing avoidable file-scope heap allocations
2018-05-21 12:29:05 -04:00
Emmanuel Gil Peyrot c51ae9c62a Remove SOIL altogether from the project. 2018-05-20 13:44:42 +02:00
Lioncash 505d45a233 EfbInterface: Move buffer constant from the header to the cpp file
This is only ever used internally, so we can limit its scope to the only
usage point.
2018-05-18 16:23:34 -04:00
Lioncash 5eef8ba984 EfbInterface: Make efb and perf_values std::arrays 2018-05-18 16:23:29 -04:00
Lioncash c58b5e9b9b EfbInterface: Make perf_values internally linked
Instead, expose functions to operate with it. This way we keep the
internal representation concealed.
2018-05-18 15:35:08 -04:00
Lioncash f3a8874214 EfbInterface: Move efb array into the EfbInterface namespace 2018-05-18 15:09:37 -04:00
Markus Wick c485efdfe1
Merge pull request #6743 from stenzek/faster-disabled-copy-filter
TextureConversionShader: Don't sample from adjacent rows when not needed
2018-05-17 10:45:50 +02:00
Léo Lam f91b729b61
Merge pull request #6825 from leoetlino/onion-types
Config: Fix implicit conversions/enum config types
2018-05-12 21:59:43 +02:00
Score_Under 4e7caa2818 Fix syntax error in GLSL_GS 2018-05-12 15:42:18 +01:00
Score_Under 70b00f2b2d Remove stray quote sign
This allows GLSL_EFB_POKE_GEOMETRY_GS to compile again.
2018-05-12 15:21:29 +01:00
Léo Lam 7dca7c237e Config: Fix template deduction for implicit conversions
This excludes the second argument from template deduction.

Otherwise, it is required to manually cast the second argument to
the ConfigInfo type (because implicit conversions won't work).

e.g. to set the value for a ConfigInfo<std::string> from a string
literal, you'd need a ugly `std::string("yourstring")`.
2018-05-12 14:30:18 +02:00
Léo Lam d1bb5249ec
Merge pull request #6801 from stenzek/copy-filter-typo
D3D/Vulkan: Fix incorrect clamp in EFB RAM copy
2018-05-11 10:36:47 +02:00
Lioncash ba01f6dba3 CommonFuncs: Convert ROUND_UP_POW2 macro to a function
Also move it to MathUtils where it belongs with the rest of the
power-of-two functions. This gets rid of pollution of the current scope
of any translation unit with b<value> macros that aren't intended to be
used directly.
2018-05-10 19:42:20 -04:00
Stenzek 3493d738ca D3D/Vulkan: Fix incorrect clamp in EFB RAM copy
This could cause darker-than-expected EFB copies if clamping was not
enabled, and the user forced EFB copies to RAM only.
2018-05-11 00:32:39 +10:00
Stenzek 501b35bbf2 OGL: Fix broken format changes in i965 driver 2018-05-08 00:11:27 +10:00
Markus Wick e31c571f51
Merge pull request #6646 from spycrab/fbm_strings
OGL/FramebufferManager: Clean up inline GLSL code
2018-05-07 08:58:56 +02:00
Stenzek 286d594f32 OGL: Fix incorrect clamping in EFB copies 2018-05-05 17:45:54 +10:00
Stenzek 4faac3a627 TextureConversionShader: Don't sample from adjacent rows when not needed 2018-05-03 14:09:32 +10:00
Stenzek 7a745e5b0d D3D: Drop gamma parameter from util draw helper
No longer needed as we perform gamma correction during the XFB copy.
2018-05-02 21:58:56 +10:00
spycrab b4dc658b2e OGL/FramebufferManager: Clean up inline GLSL code 2018-05-01 15:03:59 +02:00
Stenzek 9e798eec94 Implement EFB copy filter and gamma in hardware backends
Also makes y_scale a dynamic parameter for EFB copies, as it doesn't
make sense to keep it as part of the uid, otherwise we're generating
redundant shaders.
2018-04-29 19:05:20 +10:00
Scott Mansell a192a3bb30 While I'm here, fix some chroma sub-sampling bugs.
RE4's brightness screen is actually very good for spotting these.

Bug 1: Colors at the end of the scanlines are clamped, instead of a black
       border
Bug 2: U and V color channels share coordinates, instead of being offset
       by a pixel.
2018-04-29 17:56:53 +10:00
Scott Mansell fc96479f12 VideoSoftware: Implement xfb copy filter (Deflickering/Brightness) 2018-04-29 17:56:51 +10:00
Lioncash d68f437e67 Common: Move BitSet helper functions into the Common namespace 2018-04-23 00:13:55 -04:00
Tillmann Karras 4cfd900c67 Fix some warnings 2018-04-17 14:10:05 +01:00
Lioncash b0dc823472
Common/Logging/Log: Wrap GENERIC_LOG macro's body in do { } while (0)
Enforces the termination of GENERIC_LOGs with semicolons.
2018-04-16 12:11:32 -04:00
spycrab 40bb9974f2 Reformat all the things! 2018-04-12 21:28:39 +02:00
Markus Wick c6d0d9a01f
Merge pull request #6578 from JosJuice/remove-projection-hacks
Remove support for projection hacks
2018-04-04 09:10:32 +02:00
Lioncash b184923540
Vulkan/CMakeLists: Migrate off add_dolphin_library
Finishes the migration work started in 3a4c3bbe01
2018-04-02 08:29:37 -04:00
Lioncash 8b43a31855
Software/CMakeLists: Migrate off add_dolphin_library
Continues the migration work started in 3a4c3bbe01
2018-04-02 08:24:40 -04:00
Lioncash a3c53ff754
OGL/CMakeLists: Migrate off add_dolphin_library
Continues the migration work started in 3a4c3bbe01
2018-04-02 08:22:39 -04:00
Lioncash d4f8502ad1
Null/CMakeLists: Migrate off add_dolphin_library
Continues the migration work started in 3a4c3bbe01
2018-04-02 08:17:00 -04:00
Lioncash 3854e2bcca
D3D/CMakeLists: Migrate off add_dolphin_library
Continues the migration work started in 3a4c3bbe01
2018-04-02 08:15:22 -04:00
JosJuice 91732e2baf Remove support for projection hacks
This isn't really useful for anything anymore as far as I know.
2018-04-01 21:41:18 +02:00
Lioncash b818cc682c VideoCommon/Vulkan: Explicitly link in xxhash
Lessens the dependency on the LIBS variable (and also makes the required
libraries explicit).
2018-03-28 17:03:16 -04:00
Stenzek 2f1a7cbee1 Implement "Skip" ubershader mode
Skip ubershader mode works the same as hybrid ubershaders in that the
shaders are compiled asynchronously. However, instead of using the
ubershader to draw the object, it skips it entirely until the
specialized shader is made available.

This mode will likely result in broken effects where a game creates an
EFB copy, and does not redraw it every frame. Therefore, it is not a
recommended option, however, it may result in better performance on
low-end systems.
2018-03-26 01:57:41 +10:00
Helios747 b02b616930 [UI] Remove experimental tag from Vulkan 2018-03-21 15:12:12 -07:00
Markus Wick 523031f037
Merge pull request #6444 from stenzek/d3d-bbox
D3D: Fix broken bounding box
2018-03-19 09:21:22 +01:00
Lioncash 882d1c1256 OGLShader: Ensure m_id and m_compute_program_id are always initialized
Depending on which constructor is invoked, m_id or m_compute_program_id
can end up in an uninitialized state. We should ensure that the object
is completely initialized to something deterministic regardless of the
constructor taken.
2018-03-16 17:49:34 -04:00
Lioncash 83f17ac59f OGLShader: Fix mismatched assignment in compute shader constructor
This shouldn't be assigning to the regular ID.
2018-03-16 17:44:23 -04:00
Lioncash 7926a0c814 Use __func__ instead of __FUNCTION__ where applicable
This replaces usages of the non-standard __FUNCTION__ macro with the standard
mandated __func__ identifier.

__FUNCTION__ is a preprocessor definition that is provided as an
extension by compilers. This was the only convenient option to rely on
pre-C++11. However, C++11 and greater mandate the predefined identifier
__func__, which lets us accomplish the same thing.

The difference between the two, however, is that __func__ isn't a
preprocessor macro, it's an actual identifier that exists at function
scope. The C++17 draft standard (N4659) at section [dcl.fct.def.general]
paragraph 8 states:

"
The function-local predefined variable __func__ is defined as if a
definition of the form

static const char __func__[] = "function-name ";

had been provided, where function-name is an implementation-defined
string. It is unspecified whether such
a variable has an address distinct from that of any other object in the
program.
"

Thankfully, we don't do any macro or string concatenation with __FUNCTION__
that can't be modified to use __func__.
2018-03-16 13:41:53 -04:00
Lioncash 75f5fcdfee Assert: Remove unused parameter from DEBUG_ASSERT
This brings the macro in line with the regular ASSERT macro, which only has one
macro parameter.
2018-03-16 13:01:11 -04:00
Stenzek cb19ddd1d4 D3D: Fix broken bounding box 2018-03-17 00:20:43 +10:00
Lioncash 50a476c371 Assert: Uppercase assertion macros
Macros should be all upper-cased. This is also kind of a wart that's
been sticking out for quite a while now (we avoid prefixing
underscores).
2018-03-14 22:03:12 -04:00
Stenzek dc9012ae08 OGL: Ensure VAO is active before unmapping buffers
Fixes a crash which could occur in platforms which do not support
buffer_storage, and EFB2RAM is enabled (which indirectly uses the
attributeless buffer).
2018-03-15 00:32:39 +10:00
Stenzek db810956ec Vulkan: Provide a more accurate method of detecting drivers/vendors
This is needed to differentiate between the open-source Mesa drivers and
their binary counterparts for Intel and AMD.
2018-03-14 02:48:53 +10:00