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
Pokechu22
78e43a4404
Make all custom fmt::formatter's format functions const
...
fmt 8.0.0 requires this.
2022-01-13 11:11:08 -08:00
Pokechu22
ca9bf3174f
Use HRWrap in remaining locations
...
Note that D3DCommon can't use DX11HRWrap or DX12HRWrap since it's shared between them.
2022-01-09 12:44:55 -08:00
Pokechu22
1b32e6dae2
VideoBackends/D3D12: Include HRESULT in error messages
2022-01-09 12:44:53 -08:00
Pokechu22
23cdb5c576
VideoBackends/D3D11: Include HRESULT in error messages
2022-01-09 12:44:15 -08:00
Pokechu22
82acfa6a46
VideoBackends/D3D: Eliminate CHECK in favor of ASSERT_MSG
2022-01-09 12:44:13 -08:00
Pokechu22
161c627466
Treewide: Remove unused inclusions of <cinttypes>
...
Most of these became unneeded when fmt was introduced.
2022-01-09 12:43:11 -08:00
JosJuice
2ab66390f8
Vulkan: Check for vkSetDebugUtilsObjectNameEXT before using it
...
Fixes a crash that has been present on Android (and probably also
macOS) since f6883a0
.
2022-01-03 20:17:57 +01:00
Admiral H. Curtiss
8af737d3bd
D3D12: Fix nullptr dereference when creating a shader with a name.
2022-01-03 17:14:09 +01:00
Léo Lam
13939b13d7
Merge pull request #10311 from JosJuice/gles-sampler2dmsarray
...
GLES: Fix missing precision for sampler2DMSArray
2022-01-01 16:49:34 +01:00
OatmealDome
9ff7f80aa0
VulkanContext: Ensure present queue family is valid before incrementing queueCreateInfoCount
2021-12-28 21:18:47 -05:00
JosJuice
76b508557e
GLES: Fix missing precision for sampler2DMSArray
...
We don't use sampler2DMS, but we do use sampler2DMSArray.
I can't reproduce it on my phone, but a user who was running GLES
on a Tegra X1 reported a shader compilation error related to this.
2021-12-28 11:36:11 +01:00
OatmealDome
91cdeb5aa6
SamplerCache: Check for bSupportsLodBiasInSampler instead of IsGLES
2021-12-25 15:17:19 -05:00
OatmealDome
08396c56e5
VideoConfig: Add bool for sampler LOD bias support
2021-12-25 15:16:27 -05:00
JMC47
b1f79d9ecf
Merge pull request #10215 from OatmealDome/shader-logic-ops
...
VideoCommon: Support shader logic ops on Metal (Apple GPUs) and OpenGL ES
2021-12-22 16:39:54 -05:00
Pokechu22
27cb704466
Eliminate VarType for ComponentFormat
2021-12-18 15:21:48 -08:00
Pokechu22
3aaeb2b9ef
Convert OpcodeDecoder::Opcode and OpcodeDecoder::Primitive to enum class
2021-12-18 12:51:56 -08:00
Pokechu22
3fc12431c5
Remove parameters to SWVertexLoader::SetFormat
...
They haven't been used since efbe5bc4b6
.
2021-12-18 12:51:56 -08:00
Pokechu22
2025763420
Treewide: Adjust order of includes
2021-12-10 14:49:57 -08:00
OatmealDome
1c421444ae
ProgramShaderCache: Don't define FB_FETCH_VALUE for GL_EXT_shader_framebuffer_fetch
...
We will automatically choose between real_ocol0 and ocol0 in the fragment shader.
2021-12-06 22:36:40 -05:00
OatmealDome
f87f704f43
ShaderCompiler: Add helpers for Metal framebuffer fetch
2021-12-06 22:36:39 -05:00
OatmealDome
40eb071562
ShaderCompiler: Add new helper define for input attachment binding
2021-12-06 22:36:39 -05:00
OatmealDome
8e72136eeb
VulkanContext: Set Apple GPUs as supporting framebuffer fetch
2021-11-24 17:52:24 -05:00
JMC47
dbaebdc585
Merge pull request #10222 from phire/fix-copy-filter-clamping
...
Fix copy filter clamping
2021-11-18 17:48:33 -05:00
Pokechu22
1adff1c467
VideoCommon: Skip textureQueryLevels if it doesn't exist
2021-11-17 21:28:39 -08:00
Pokechu22
b9288212a0
Software: Adjust diagonal LOD implementation
...
This produces behavior matching the behavior on hardware (see Wario's Gold Mine in Mario Kart Wii).
2021-11-17 20:04:34 -08:00
Pokechu22
51e3334526
VideoCommon: Use coarse derivatives for Manual Texture Sampling if possible
2021-11-17 20:04:34 -08:00
Pokechu22
4a9b26de86
VideoCommon: Expose SamplerState to shaders
...
The benefit to exposing this over the raw BP state is that adjustments Dolphin makes, such as LOD biases from arbitrary mipmap detection, will work properly.
2021-11-17 20:04:34 -08:00
Pokechu22
6236a0d494
Eliminate SamplerCommon
2021-11-17 20:04:34 -08:00
Pokechu22
3096f77ba0
Eliminate SamplerCommon::AreBpTexMode0MipmapsEnabled
...
This was added in 0b9a72a62d
but became irrelevant in 70f9fc4e75
as the check is now self-explanatory due to a rejiggering of the bitfields.
2021-11-17 20:04:34 -08:00
Scott Mansell
9bbc843542
VideoSoftware: Fix copy filter clamping
2021-11-17 09:29:16 +13:00
OatmealDome
2209dc0355
MoltenVK: Use an external project instead of a pre-compiled dylib
...
Also, update MoltenVK to match Vulkan SDK 1.2.189.
2021-11-13 11:43:23 -08:00
Pokechu22
04d8cdfe88
Convert LOG_TYPE and LOG_LEVELS to enum class
2021-10-24 11:48:36 -07:00
Fletcher Porter
f16e9045a2
Silence the -Wswitch warnings in Tev
...
The compiler was loudly announcing each and every branch Tev was not checking in
a switch statement, but Tev has learned it's lesson and will produce that
warning no more.
2021-10-13 23:54:06 -07:00
Pokechu22
78bfd25964
Fix all uninitialized variable warnings (C26495)
2021-10-13 12:32:16 -07:00
Scott Mansell
9fa26624b0
BPMemory: Refactor/consolidate TexUnit Addressing
...
Currently the logic for addressing the individual TexUnits is splattered all
across dolphin's codebase, this commit attempts to consolidate it all into a
single place and formalise it using our new TexUnitAddress struct.
2021-10-10 09:09:43 +13:00
Léo Lam
ff1cb5a1c0
Merge pull request #9803 from Techjar/bbox-videocommon
...
VideoCommon: Abstract bounding box
2021-10-08 22:24:38 +02:00
Techjar
1161af8059
VideoCommon: Abstract bounding box
...
This moves much of the duplicated bounding box code into VideoCommon,
leaving only the specific buffer implementations in each backend.
2021-10-04 15:51:24 -04:00
OatmealDome
a256c11d2f
DriverDetails: Add broken dual source blending bug to MoltenVK on Intel GPUs
2021-09-20 19:14:41 -04:00
OatmealDome
aa64f7f14f
VulkanContext: Don't assume anv for Intel GPUs on macOS
2021-09-20 18:57:19 -04:00
OatmealDome
7e8f5208fe
VulkanContext: Disable subgroup reduction on macOS with AMD GPUs
2021-09-16 23:32:10 -04:00
iwubcode
1f2f505373
VideoBackends / VideoCommon: allow the ability to set debug names for shaders / textures. These names are visible in applications like RenderDoc
2021-08-30 13:47:48 -05:00
Léo Lam
815b590dfe
Update clang-format to version 12
...
12 is the latest release and various editors (VS, VSCode and CLion)
ship with clang-format 12 by default.
2021-08-30 00:20:18 +02:00
Robin Kertels
40dcf1c2e2
D3D12: Transition compute textures to UAV state
2021-08-11 00:17:04 +02:00
OatmealDome
d453390c48
ShaderCompiler: Attach source text to SPIR-V for debuggers like RenderDoc
2021-08-05 03:04:18 -04:00
Pokechu22
3a4d8379bf
Convert NaN to 1 when generating texture coordinates
...
This fixes eyelids in Shadow the Hedgehog during cutscenes (https://bugs.dolphin-emu.org/issues/11458 )
2021-07-24 22:20:35 -07:00
Pokechu22
fa9c43cfaa
Software: Handle texture wrapping more accurately
...
This fixes various texture offsetting issues with negative texture coordinates (bringing the software renderer in line with the hardware renderers). It also handles the invalid wrap mode accurately (as was done for the hardware renderers in the previous commit). Lastly, it handles wrapping with non-power-of-2 texture sizes in a hardware-accurate way (which is somewhat broken looking, as games aren't supposed to use wrapping with non-power-of-2 sizes); this has not been done for the hardware renderers.
2021-07-20 19:23:23 -07:00
Pokechu22
2feced2e33
Fix indirect textures when format is not ITF_8
2021-07-08 15:48:14 -07:00
Pierre Bourdon
e149ad4f0a
treewide: convert GPLv2+ license info to SPDX tags
...
SPDX standardizes how source code conveys its copyright and licensing
information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX
tags are adopted in many large projects, including things like the Linux
kernel.
2021-07-05 04:35:56 +02:00
JMC47
46120a6108
Merge pull request #9742 from Pokechu22/sw-resolution
...
Software: Fix bad backbuffer size
2021-06-23 18:36:04 -04:00
Pokechu22
51862135d6
Software: Remove texinfo.sourcerow == SourceRow::Colors assert
...
These asserts were removed for the hardware renderer in #3684 .
2021-06-20 18:05:57 -07:00
Léo Lam
2898cf5121
Merge pull request #9784 from PEmu2/master
...
Update buffer_storage warning message
2021-06-13 12:56:26 +02:00
Pokechu22
c583cac568
Hack to hide debug cubes in Super Mario Sunshine
...
... while not breaking other games.
2021-06-09 20:50:49 -07:00
Connor McLaughlin
c729852d72
Merge pull request #9782 from Techjar/bbox-ogl-upsidedown-fix
...
VideoCommon: Perform OpenGL bounding box inversion in pixel shader
2021-06-08 13:24:03 +10:00
Techjar
58238e75a7
Vulkan: Fix subgroup reduction
...
It seems that we were writing values from helper invocations, which
produces wrong results.
2021-06-07 22:32:25 -04:00
Techjar
4866002c9b
VideoCommon: Perform OpenGL bounding box inversion in pixel shader
...
Running the min/max operation on the upside down, quad-rounded pixel
coordinates before inverting them to the standard upper-left origin
produces wrong results. Therefore, we need to do the inversion before
rounding to pixel quads.
2021-06-06 20:55:06 -04:00
PEmu2
44206b7702
Update buffer_storage warning message
2021-06-05 15:08:47 -07:00
Techjar
2f1b639f0a
VideoCommon: Restore BBox* forwarding functions
2021-05-31 18:01:47 -04:00
Connor McLaughlin
b3a414ea9d
Merge pull request #9766 from stenzek/ogl-bbox-memory-barrier
...
OGL: Force memory barrier when reading back bounding box values
2021-05-29 17:04:57 +10:00
Connor McLaughlin
6393f157f0
OGL: Force memory barrier when reading back bounding box values
...
We also need to ensure the the CPU does not receive stale values
which have been updated by the GPU. Apparently the buffer here
is not coherent on NVIDIA drivers. Not sure if this is a driver
bug/spec violation or not, one would think that
glGetBufferSubData() would invalidate any caches as needed, but
this path is only used on NVIDIA anyway, so it's fine. A point
to note is that according to ARB_debug_report, it's moved from
video to host memory, which would explain why it needs the
cache invalidate.
2021-05-29 16:57:40 +10:00
Techjar
a24e78b3cf
VideoCommon: Remove BBox* forwarding functions
2021-05-29 01:45:21 -04:00
Techjar
e4aef0a85b
VideoCommon: Move bounding box pixel quads rounding to shader
...
This avoids rounding values that the game writes to the bounding box
registers, especially the default values.
2021-05-28 23:30:22 -04:00
Connor McLaughlin
7fd0a526e1
VideoBackends/OGL: Cache bounding box values between reads
2021-05-28 19:30:46 +10:00
Connor McLaughlin
0c11dca121
VideoBackends/D3D: Cache bounding box values between reads
2021-05-28 19:30:46 +10:00
Pokechu22
4a4244f04d
Software: Fix bad backbuffer size
...
MAX_XFB_WIDTH/HEIGHT are the largest XFB sizes seen in practice, but do not make sense to use for the backbuffer size, which should be the size of the window. The old code created screenshots with a size of 720x540 on NTSC games when "Dump Frames at Internal Resolution" is unchecked; now, the window size is used.
2021-05-24 12:16:39 -07:00
Techjar
0f17990137
VideoCommon: Split BBox* functions into common and backend implementation variants
...
This will allow for some aspects of bounding box to be handled in
VideoCommon instead of individual backends.
2021-05-22 01:11:57 -04:00
JosJuice
1d3b9fdec2
Fix perf query regression
...
When trying to do a small optimization in 8a0f5ea
, I failed to
take into account that WeakFlush and FlushOne update m_query_count.
Only D3D11 and OGL had this problem, not D3D12 and Vulkan.
2021-05-21 13:39:59 +02:00
JosJuice
8a0f5ea04a
Remove all remaining volatile qualifiers
2021-05-15 09:52:04 +02:00
JosJuice
b93983b50a
Remove Atomic.h
...
The STL has everything we need nowadays.
I have tried to not alter any behavior or semantics with this
change wherever possible. In particular, WriteLow and WriteHigh
in CommandProcessor retain the ability to accidentally undo
another thread's write to the upper half or lower half
respectively. If that should be fixed, it should be done in a
separate commit for clarity. One thing did change: The places
where we were using += on a volatile variable (not an atomic
operation) are now using fetch_add (actually an atomic operation).
Tested with single core and dual core on x86-64 and AArch64.
2021-05-13 18:56:27 +02:00
Pokechu22
16c17ed9ce
Software: Fix OOB tex coord indices
...
Previously we set the texture coordinate to zero, now we set
the texture coordinate *index* to zero. This fixes the ripple
effect of the Mario painting in Luigi's Mansion.
2021-05-07 16:28:09 -07:00
Pokechu22
c3668e179c
Split TevStageIndirect::mid into matrix_index and matrix_id
2021-05-07 16:27:52 -07:00
Léo Lam
1c6232e95f
Merge pull request #9646 from PatrickFerry/sw-textureencoder-alignedwidth
...
SW: Fix alignedWidth in TextureEncoder
2021-04-24 20:13:10 +02:00
JMC47
18e84361d9
Merge pull request #9660 from ezio1900/master
...
VideoCommon: Fix scissorOffset, handle negative value correctly
2021-04-23 21:21:53 -04:00
ezio1900
97ea3a603e
VideoCommon: Fix scissorOffset, handle negative value correctly
...
VideoCommon: Change the type of BPMemory.scissorOffset to 10bit signed: S32X10Y10
VideoBackends: Fix Software Clipper.PerspectiveDivide function, use BPMemory.scissorOffset instead of hard code 342
2021-04-24 08:46:21 +08:00
JMC47
cfc4af76a9
Merge pull request #9321 from Pokechu22/sw-copyregion
...
Software: Fix out of bounds accesses in CopyRegion
2021-04-23 14:07:46 -04:00
JMC47
4ab92d4757
Merge pull request #9350 from Pokechu22/sw-viewport
...
Software: Invert backface test when viewport is positive
2021-04-23 14:06:02 -04:00
Patrick A. Ferry
f6a4368192
SW: Fix alignedWidth in TextureEncoder
...
This was causing issues in Software Renderer. Look at bug 11487
2021-04-19 02:06:52 +01:00
Connor McLaughlin
b24e3f2f1a
Vulkan: Work around AMD exclusive fullscreen bug (21.3+)
2021-04-12 12:41:17 +10:00
Pokechu22
5b1c632862
Software: Invert backface test when viewport is positive
...
Fixes Jimmie Johnson's Anything with an Engine.
2021-03-06 22:00:16 -08:00
Pokechu22
058c7db80b
Software: Fix out of bounds accesses in CopyRegion
...
Fixes issue 11393.
The problem is that left and top make no sense for a width by height array; they only make sense in a larger array where from which a smaller part is extracted. Thus, the overall size of the array is provided to CopyRegion in addition to the sub-region. EncodeXFB already handles the extraction, so CopyRegion's only use there is to resize the image (and thus no sub-region is provided).
2021-03-06 21:58:28 -08:00
Pokechu22
70f9fc4e75
Convert BPMemory to BitField and enum class
...
Additional changes:
- For TevStageCombiner's ColorCombiner and AlphaCombiner, op/comparison and scale/compare_mode have been split as there are different meanings and enums if bias is set to compare. (Shift has also been renamed to scale)
- In TexMode0, min_filter has been split into min_mip and min_filter.
- In TexImage1, image_type is now cache_manually_managed.
- The unused bit in GenMode is now exposed.
- LPSize's lineaspect is now named adjust_for_aspect_ratio.
2021-03-06 19:27:19 -08:00
Pokechu22
aab81d5aa0
Convert XFMemory to BitField and enum class
...
Additionally a new ClipDisable union has been added (though it is not currently used by Dolphin).
2021-03-06 19:27:14 -08:00
Pokechu22
f749fcfa9f
Convert CPMemory to BitField and enum class
...
Additionally, VCacheEnhance has been added to UVAT_group1. According to YAGCD, this field is always 1.
TVtxDesc also now has separate low and high fields whose hex values correspond with the proper registers, instead of having one 33-bit value. This change was made in a way that should be backwards-compatible.
2021-03-06 19:27:08 -08:00
Pokechu22
fcd3efa1ae
Software: Implement points
2021-02-13 15:59:40 -08:00
Pokechu22
8e348b87e9
Software: Fix line-width effects
2021-02-13 15:59:39 -08:00
Pokechu22
7d5ae03219
Software: Always divide the texture coordinates by q.
...
Equivalent to da43f9a15
for the software renderer.
2021-02-12 16:37:47 -08:00
Léo Lam
a354814240
Merge pull request #9424 from Pokechu22/sw-no-special-case
...
Software: Remove normalization special case
2021-02-11 19:36:45 +01:00
Shawn Hoffman
500a694ca8
msbuild: bundle all dolphin "core" code into single library
2021-01-27 14:29:49 -08:00
Shawn Hoffman
5770ff01f3
rename D3DCommon/Common to D3DCommon/D3DCommon
2021-01-27 14:29:48 -08:00
Shawn Hoffman
527b5a9761
normalize common filenames in VideoBackends/D3D12
2021-01-27 14:29:48 -08:00
Shawn Hoffman
a0aeb5b0b9
normalize common filenames in VideoBackends/D3D
2021-01-27 14:29:48 -08:00
Shawn Hoffman
d7fd892fde
normalize common filenames in VideoBackends/Vulkan
2021-01-27 14:29:48 -08:00
Shawn Hoffman
ef70fe05bf
normalize common filenames in VideoBackends/Null
2021-01-27 14:29:48 -08:00
Shawn Hoffman
ff4f67492b
normalize common filenames in VideoBackends/OGL
2021-01-27 14:29:48 -08:00
Pokechu22
e825af7b1b
Software: Remove normalization special case
...
The special case doesn't appear to make a significant difference in any games, and the current implementation has a (minor, fixable) issue that breaks Super Mario Sunshine (both with a failed assertion (https://bugs.dolphin-emu.org/issues/11742 ) and a rendering issue (https://bugs.dolphin-emu.org/issues/7476 )). Hardware testing wasn't able to reproduce the special case, either, so it may just not exist.
PR #9315 contains a fixed implementation of the special case on all video backends, and can serve as a basis for it being reintroduced if it is found to exist under more specific circumstances. For now, I don't see a reason to keep it present.
2021-01-03 23:22:48 -08:00
Léo Lam
0ad2f3da45
Core: Remove ImageWrite and get rid of -Wmissing-declarations warnings
2020-12-16 16:04:19 +01:00
Léo Lam
eafe005672
Fix -Wclass-memaccess warnings
...
We want to clear/memset the padding bytes, not just each member,
so using assignment or {} initialization is not an option.
To silence the warnings, cast the object pointer to u8* (which is not
undefined behavior) to make it explicit to the compiler that we want
to fill the object representation.
2020-12-16 15:37:43 +01:00
Lioncash
139d4fc76e
General: Convert PanicAlerts over to fmt equivalent
...
Converts lingering panic alert calls over to the fmt-capable ones.
2020-12-02 13:38:33 -05:00
blåhaj
bf0fe0281a
Fix bounding box incorrectly disabled on OpenGL ES 3.1, 3.2
2020-11-24 21:22:39 +01:00
Stenzek
d6ce8eef36
Software: Use same logic for colors as hardware backends
2020-11-20 15:54:06 -08:00
Jonathan Marek
a20e69ff51
Vulkan: fix validation error in bSupportsGeometryShaders=false case
...
In CreateDescriptorSetLayouts(), one less dynamic binding is created when
bSupportsGeometryShaders=false. Reduce the dynamicOffsetCount argument by
one in that case. Avoids this validation error:
Attempting to bind 3 descriptorSets with 2 dynamic descriptors, but
dynamicOffsetCount is 3. It should exactly match the number of dynamic
descriptors. The Vulkan spec states: dynamicOffsetCount must be equal to
the total number of dynamic descriptors in pDescriptorSets
Signed-off-by: Jonathan Marek <jonathan@marek.ca>
[Applied clang-format]
Signed-off-by: Léo Lam <leo@leolam.fr>
2020-11-20 12:23:34 +01:00
Lioncash
21dd7a8ebb
Vulkan: Migrate logging over to fmt
...
Migrates the vulkan backend over to the fmt-capable logger.
2020-11-09 03:26:16 -05:00
Lioncash
23a8baa605
Software: Migrate logging over to fmt
...
Migrates the software backend over to the fmt-capable logger.
2020-11-09 03:14:01 -05:00
Lioncash
413d64e7fc
OpenGL: Migrate logging over to fmt
...
Migrates over to the fmt-capable logger.
2020-11-09 03:09:09 -05:00
Lioncash
4d9a7c7a54
D3DCommon: Migrate logging over to fmt
...
Migrates the logging over to the fmt-capable logger.
2020-11-09 03:03:26 -05:00
Lioncash
2345d5f98d
D3D: Migrate logging over to fmt
...
Migrates the logging over to the fmt-capable logger.
2020-11-09 03:02:00 -05:00
Lioncash
d7834bd6b4
D3D12: Migrate logging over to fmt
...
Migrates the logging over to the fmt-capable logger.
2020-11-09 02:59:51 -05:00
JosJuice
28aa04312c
Common/LinearDiskCache: Replace std::fstream with File::IOFile
...
File::IOFile is better suited to this type of task.
Split out from a future PR.
2020-11-05 00:31:17 +01:00
Jordan Woyak
d2f80a4595
Merge pull request #9138 from martymac/VK_NULL_HANDLE-fix
...
Fix build on FreeBSD i386 - nullptr vs VK_NULL_HANDLE
2020-11-03 08:28:11 -06:00
Ganael Laplanche
d456e2e391
Resolve VkDeviceMemory/nullptr type mismatch to fix build on FreeBSD i386
2020-11-03 07:47:43 +01:00
JMC47
6a3a71cfd7
Merge pull request #9141 from Techjar/but-for-how-long
...
Re-enable GPU Texture Decoding under MoltenVK
2020-10-29 01:22:13 -04:00
mazes-80
f375ee72a2
CMake: Add option to enable/disable Vulkan video backend
2020-10-23 20:14:46 +02:00
Techjar
0c01712d13
DriverDetails: Remove bug for broken GPU Texture Decoding
2020-10-08 10:13:40 -04:00
Stenzek
24bb947eff
Vulkan: Use VK_LAYER_KHRONOS_validation for validation
...
VK_LAYER_LUNARG_standard_validation is deprecated.
2020-10-01 17:21:46 +10:00
Techjar
69358b2186
VideoBackends: Disable GPU Texture Decoding under MoltenVK
...
It's broken and causes spectacular artifacts and crashes.
2020-09-07 17:28:05 -04:00
JosJuice
6eefc3c524
Make default graphics backend not show up as empty
...
Fixes https://bugs.dolphin-emu.org/issues/12245 .
I considered making a change to DolphinQt instead of
the core, but then additional effort would've been
required to add the same fix to the Android GUI once
we start using the new config system there.
2020-09-06 12:56:45 +02:00
Shawn Hoffman
969ea6e4f5
msvc: enable /Zc:preprocessor and make build compile cleanly
2020-08-27 21:58:48 -07:00
Shawn Hoffman
4db06bf85b
ogl: init ProgramShaderCache::s_ubo_align to 1.
...
silences a warning that it may cause div-by-zero.
2020-08-27 15:15:52 -07:00
Shawn Hoffman
938fd4e438
use constexpr for some compile-time expressions
2020-08-23 13:57:05 -07:00
Shawn Hoffman
6ef9d70701
name some threads
2020-08-22 17:22:07 -07:00
LC
4a34b74e68
Merge pull request #9035 from shuffle2/vs-pretty
...
misc vcxproj cleanup
2020-08-22 20:13:25 -04:00
Shawn Hoffman
cff4806d8d
windows: fix build if pch were to be disabled
2020-08-22 16:18:24 -07:00
Shawn Hoffman
2f47f486af
msbuild: re-enable standalone vcxproj processing
2020-08-22 16:17:50 -07:00
Shawn Hoffman
94bf48b67c
msbuild: refactor stuff out of project files (for dolphin)
2020-08-22 16:17:50 -07:00
Shawn Hoffman
3a0d8c0208
msbuild: enable D3DCommon to use pch
2020-08-22 16:17:50 -07:00
Shawn Hoffman
36ace8eb52
prettify some constructs in vcxproj files
2020-08-22 16:17:50 -07:00
LC
487cd7abd9
Merge pull request #8905 from JosJuice/jni-encoding
...
Android: Use correct encoding when converting strings
2020-07-18 22:13:14 -04:00
Filip Gawin
0ede5d1537
Use range loop (if possible)
2020-07-18 18:29:16 -05:00
JosJuice
15d9fab0bb
Common: Rename UTF16ToUTF8
...
This function does *not* always convert from UTF-16. It converts
from UTF-16 on Windows and UTF-32 on other operating systems.
Also renaming UTF8ToUTF16 for consistency, even though it
technically doesn't have the same problem since it only was
implemented on Windows.
2020-07-08 14:51:35 +02:00
JosJuice
6f298378a1
Reword "Please avoid forcing Dolphin to use MSAA by the driver" message
...
Some users who get this error don't seem to gain much understanding
of how to resolve the problem from reading the error message.
2020-07-08 11:34:36 +02:00
orbea
ba2d04b793
Externals: Fix build failures with the newer glslang.
...
v2: Don't include glslang project wide.
2020-05-30 18:54:21 -07:00
Lioncash
86f8768268
VideoCommon/ShaderGenCommon: Make template functions regular functions
...
These are only ever used with ShaderCode instances and nothing else.
Given that, we can convert these helper functions to expect that type of
object as an argument and remove the need for templates, improving
compiler throughput a marginal amount, as the template instantiation
process doesn't need to be performed.
We can also move the definitions of these functions into the cpp file,
which allows us to remove a few inclusions from the ShaderGenCommon
header. This uncovered a few instances of indirect inclusions being
relied upon in other source files.
One other benefit is this allows changes to be made to the definitions
of the functions without needing to recompile all translation units that
make use of these functions, making change testing a little quicker.
Moving the definitions into the cpp file also allows us to completely
hide DefineOutputMember() from external view, given it's only ever used
inside of GenerateVSOutputMembers().
2020-05-25 21:12:29 -04:00
Stenzek
bf74553878
FramebufferManager: Copy to color format for depth readbacks on GLES
...
glReadPixels() with depth formats is not supported.
Should fix broken EFB access on GLES.
2020-05-24 16:11:11 +10:00
degasus
fc0df37d94
Fix windows build system.
2020-04-29 12:56:52 +02:00
Léo Lam
0fe4985f8d
Merge pull request #8689 from howard0su/cleanup_sign
...
Remove warnings of -Wsign-compare
2020-04-28 13:36:21 +02:00
Léo Lam
9d44af4c31
Merge pull request #8696 from howard0su/cleanup_shadow
...
Cleanup warnings of -Wmissing-declarations
2020-04-27 15:33:01 +02:00
Stenzek
a2f4fafe86
Vulkan: Switch from vkCreateMacOSSurfaceMVK() to vkCreateMetalSurfaceEXT()
...
Since we are calling this off the UI thread, we can't use anything which
accesses the underlying NSView object. We create and set the Metal layer
on the UI thread before the video backend is initialized. This extension
is both compatible with MoltenVK and gfx-portability for accepting a
layer at surface creation.
2020-04-07 18:56:55 +10:00
Jun Su
81f8099cc6
Remove warnings of -Wsign-compare
...
Cast the variable to the coresponding type.
2020-03-25 07:57:14 +08:00
Jun Su
b6ff15c130
Cleanup warnings of -Wmissing-declarations
...
Add static to the functions which is not intentionally
export to big scope.
2020-03-24 20:16:10 +08:00
Stenzek
fb947296b0
Vulkan: Pass CAMetalLayer to MoltenVK instead of NSView
...
Gets rid of the warning for calling [NSView layer] off the main thread.
2020-03-11 23:11:26 +10:00
Stenzek
a545344268
VideoBackends: Make it possible for PrepareWindow to change the surface
...
Again, needed for MoltenVK.
2020-03-11 23:10:30 +10:00
Stenzek
08cc73108a
Vulkan: Treat VK_SUBOPTIMAL_KHR as VK_SUCCESS on Android
...
Android 10 seems to expect a prerotated/transformed swap chain for optimal
presentation. For now, until we implement that, just ignore the hint.
2020-01-31 19:16:06 +10:00
Stenzek
ead65b0d8c
Vulkan: Log when a swap chain resize is occurring
...
This may help us debug performance problems in the future.
2020-01-31 19:11:43 +10:00
Ryan Meredith
e5f6d9320f
Add Dolphin version and current video backend to shader compilation logs
2020-01-24 03:29:38 -05:00
David Korth
f5fe692842
Use pre-increment for iterators instead of post-increment.
...
Pre-increment is more efficient, since it doesn't have to return the
old iterator.
2019-12-29 23:45:02 -05:00
David Korth
05101b251c
OGL/Render.cpp, InitDriverInfo(): Use std::string_view to eliminate string copies.
...
Consolidate the NVIDIA Tegra and non-Tegra checks into one branch.
2019-12-29 23:45:02 -05:00
Stenzek
6fcb1c6c46
Add an ARM64 target to Visual Studio projects
2019-12-28 19:20:41 +10:00
Casey Carter
222bc6a443
Include <memory> for std::unique_ptr in DXContext.h
2019-12-19 14:25:12 -08:00
Stenzek
e05bc33899
Vulkan: Call VertexManagerBase initialize
2019-12-09 19:16:15 +10:00
Stenzek
07c43b192f
D3D12: Call VertexManagerBase initialize
2019-12-09 19:16:04 +10:00
Anthony
fdb78b64e1
Merge pull request #8513 from lioncash/bounding-box
...
VideoCommon/BoundingBox: Make interface for querying bounding box data
2019-12-07 18:40:02 -08:00
Lioncash
9bd533ebe4
VideoCommon/BoundingBox: Make interface for querying bounding box data
...
Rather than expose the bounding box members directly, we can instead
provide an interface for code to use. This makes it nicer to transition
from global data, as the interface function names are already in
place.
2019-12-05 11:48:42 -05:00
Lioncash
10f7674651
VideoCommon/IndexGenerator: Eliminate static state
...
Now that we've extracted all of the stateless functions that can be
hidden, it's time to make the index generator a regular class with
active data members.
This can just be a member that sits within the vertex manager base
class. By deglobalizing the state of the index generator we also get rid
of the wonky dual-initializing that was going on within the OpenGL
backend.
Since the renderer is always initialized before the vertex manager, we
now only call Init() once throughout the execution lifecycle.
2019-12-05 10:49:32 -05:00
Stenzek
dd23a1ee79
Update VS projects/solutions to VS2019
2019-11-30 13:42:52 +10:00
Lioncash
c792961000
Common: Unify logging namespace with Common
...
Previously the logging was a in a little bit of a disarray. Some things
were in namespaces, and other things were not.
Given this code will feature a bit of restructuring during the
transition over to fmt, this is a good time to unify it under a single
namespace and also remove functions and types from the global namespace.
Now, all functions and types are under the Common::Log namespace. The
only outliers being, of course, the preprocessor macros.
2019-11-28 05:13:21 -05:00
Silent
a68789a70c
D3DCommon: Remove unused GetDebugObjectName and tidy up SetDebugObjectName
2019-11-10 16:07:32 +01:00
Silent
8445644e05
D3DCommon: Migrate few remaining raw pointers to WRL::ComPtr
2019-11-10 16:07:32 +01:00
Connor McLaughlin
5440be96e7
Merge pull request #8378 from stenzek/quad-buffer-stereo
...
Various quad-buffered ("HDMI 3D") stereo fixes
2019-11-08 10:26:58 +10:00
Stenzek
16f103ab42
Vulkan: Exclusive fullscreen support via VK_EXT_full_screen_exclusive
2019-10-31 22:45:59 +10:00
Stenzek
6fc6444687
Vulkan: Explicitly enable VK_KHR_get_physical_device_properties2
...
This was missing from the subgroup PR way back.
2019-10-31 22:45:59 +10:00
Stenzek
230190fc36
Vulkan: Allow runtime querying of enabled extensions
2019-10-31 22:45:59 +10:00
Connor McLaughlin
d3ee0a4535
Merge pull request #8379 from stenzek/mali
...
Vulkan: Optimizations for Mali with EFB2RAM on
2019-10-31 22:44:19 +10:00
Stenzek
ae83d02e54
Drop 3D Vision Support
2019-10-04 13:40:21 +10:00
Stenzek
328d89db70
Vulkan: Add a DriverDetails bug for "slow cached readback memory"
...
Using the cached memory type appears to be slower on Mali drivers, with
~10-15% CPU spent in the __pi___inval_cache_range kernel function.
2019-10-02 21:34:58 +10:00
Stenzek
c557aa4a15
Vulkan: Add strict flag to memory type selection
2019-10-02 21:27:32 +10:00
Stenzek
e754c8ab26
D3D11: Initialize shader cache before renderer
...
Otherwise the shaders we need for e.g. postprocessing are null.
2019-10-02 11:50:10 +10:00
Connor McLaughlin
1092efa77a
Merge pull request #8276 from stenzek/adreno-efb-access
...
Fix CPU EFB access on Adreno with Vulkan backend
2019-08-08 12:23:27 +10:00
Stenzek
d78a9356d2
D3D11: Only use integer RTV when logic op is supported+enabled
2019-08-02 18:47:19 +10:00
Stenzek
2698e311aa
Vulkan: Use correct aspect for D24S8 textures
2019-07-31 15:33:05 +10:00
Connor McLaughlin
dea2b9c509
Merge pull request #8258 from CookiePLMonster/dx11.1-detection-fixes
...
D3D11 resources refactor and DX11.1 feature detection fixes
2019-07-30 01:24:57 +10:00
Silent
baa9636d48
D3D11: Add extra logging to StateCache::Get
2019-07-29 16:48:24 +02:00
Silent
43bfb183c2
D3D11: Show a warning message about unsupported features when switching to D3D11 backend on Windows 7
2019-07-29 16:47:45 +02:00
Silent
ff00873610
D3D11: Query for output merger logic op support and use logic op code only if supported
...
Previously code assumed that if DX11.1 runtime is supported, logic ops will,
but Windows 7 SP1 with a Platform Update supports DX11.1 runtime without logic ops.
This created pretty jarring visual artifacts, which now should be gone OR replaced
with much less jarring errors.
2019-07-29 16:47:39 +02:00
Silent
a6b8e8b9c3
D3D11: Ownership fixes for objects in DXTexture
2019-07-29 16:43:02 +02:00
Silent
77425ef83b
D3D11: Ownership fixes for objects in D3DState
2019-07-29 16:39:21 +02:00
Silent
88db577c17
D3D11: Correctly poll ALL possible AA levels.
2019-07-29 16:39:06 +02:00
Connor McLaughlin
b0113b6c64
Merge pull request #8266 from lioncash/shadowing
...
D3DCommon/Shader: Use std::optional where applicable
2019-07-28 14:24:32 +10:00
Connor McLaughlin
5bad233b1a
Merge pull request #8265 from lioncash/view
...
OGL/ProgramShaderCache: Use std::string_view where applicable
2019-07-28 14:21:59 +10:00
Lioncash
6db305a4e8
VideoBackends/Null: Add missing override specifiers
...
Applies a missing override specifier to VertexManager's destructor.
2019-07-27 17:33:18 -04:00
Lioncash
23c5b362a5
VideoBackends/Null: Apply final to classes where applicable
...
These aren't intended to be further specialized, so we can make this
obvious with final.
2019-07-27 17:33:18 -04:00
Lioncash
86000fc6b4
VideoBackends/Null: Remove unnecessary constructors and destructors
...
Removes constructors and destructors that don't actually provide any
behavior (i.e. doesn't constain generated code related to non-trivial
members in a cpp file, etc).
Lessens the amount of code present.
2019-07-27 17:33:18 -04:00
Lioncash
bdcc5853d5
VideoBackends/Null: Remove unnecessary includes
2019-07-27 17:33:16 -04:00
Lioncash
aca02f9734
D3DCommon/Shader: Use std::optional with CompileShader()
...
Allows removing the use of an out parameter, making it nicer to use.
2019-07-26 20:06:14 -04:00
Lioncash
0ce6264f90
D3DCommon/Shader: Create vector via iterators in CreateByteCode()
...
Same behavior, but without unnecessary zeroing of data contents.
Instead, we supply the dataset to use directly.
2019-07-26 19:45:33 -04:00
Lioncash
287b446ef7
D3D/DXShader: Remove duplicate GetByteCode function
...
This is already provided in the base class, which performs the same
exact behavior. Given the function in the base class isn't virtual, this
also essentially resolves an instance of shadowing.
2019-07-26 19:45:23 -04:00
Lioncash
67bd2de73e
OGL/ProgramShaderCache: Convert typedef over to a using alias
...
Same thing, but nicer to read from left to right.
2019-07-26 18:43:44 -04:00
Lioncash
d6617d399f
OGL/ProgramShaderCache: Use std::lock_guard deduction guides where applicable
...
Same thing, less reading.
2019-07-26 18:22:55 -04:00
Lioncash
6e69e3cf26
OGL/ProgramShaderCache: Remove unused headers
...
Removes a few inclusions that aren't necessary, reducing the number of
header dependencies.
2019-07-26 18:09:44 -04:00
Lioncash
fb384dec55
OGL/ProgramShaderCache: Use std::string_view where applicable
2019-07-26 18:02:00 -04:00
Silent
890f781cd0
Factorize software renderer backend switching warning to be fetched from a new GetWarningMessage in video backend - will be needed for DX11.1 feature set warnings
2019-07-26 19:39:07 +02:00
Silent
799c52463e
Fixes for WRL usage - QueryInterface is explicitly mentioned as not to be used with WRL ComPtr
2019-07-26 19:38:58 +02:00
Connor McLaughlin
fc8859a414
Merge pull request #8249 from lioncash/rect
...
VideoCommon: Remove unused MathUtil.h include from VideoCommon.h
2019-07-19 16:32:30 +10:00
Stenzek
68bd4cd79a
Vulkan: Use reversed depth range in viewport
...
Also adds a DriverDetails bug to disable on drivers where this is still
broken.
2019-07-18 23:43:12 +10:00
Lioncash
2b9389202e
VideoCommon: Remove unused MathUtil.h include from VideoCommon.h
...
This header doesn't actually make use of MathUtil.h within itself, so
this can be removed. Many other source files used VideoCommon.h as an
indirect include to include MathUtil.h, so these includes can also be
adjusted.
While we're at it, we can also migrate valid inclusions of VideoCommon.h
into cpp files where it can feasibly be done to minimize propagating it
via other headers.
2019-07-16 20:54:34 -04:00
Lioncash
d4337eebde
VideoCommon/Statistics: Rename stats global to g_stats
...
Makes the global variable follow our convention of prefixing g_ on
global variables to make it obvious in surrounding code that it's not a
local variable.
2019-07-10 23:34:54 -04:00
Lioncash
a99c7d01e1
VideoCommon/Statistics: Normalize statistic variable names
...
Normalizes all variables related to statistics so that they follow our
coding style.
These are relatively low traffic areas, so this modification isn't too
noisy.
2019-07-10 23:19:10 -04:00
Lioncash
04c06ec661
VideoCommon/Statistics: Use std::array for projection values
...
Makes the members within the interface much nicer to look at, and also
makes copying them over much nicer too.
2019-06-20 08:06:20 -04:00
Lioncash
72b04a353d
VideoBackends/Vulkan: Use nested namespace specifiers where applicable
2019-06-17 16:57:30 -04:00
Connor McLaughlin
951b66e4ac
Merge pull request #8049 from stenzek/crop
...
Renderer: Adjust source rectangle when crop would draw off screen
2019-06-08 20:57:52 +10:00
Connor McLaughlin
5a4e2a6b2f
Merge pull request #7734 from stenzek/mojave-warning
...
Vulkan: Display a warning when using MoltenVK on HS and earlier
2019-06-08 20:41:39 +10:00
Stenzek
3f1586dbce
Vulkan: Display a warning when using MoltenVK on HS and earlier
2019-06-08 20:16:24 +10:00
Stenzek
1028e2c1a6
D3D12: Remove unnecessary includes in DXContext.h
2019-06-08 20:12:15 +10:00
Stenzek
9316e25652
D3DCommon: Fallback to base CreateSwapChain on failure
...
It appears that some older drivers do not support
CreateSwapChainForHwnd, resulting in DXGI_ERROR_INVALID_CALL. For these
cases, fall back to the base CreateSwapChain() from DXGI 1.0.
In theory this should also let us run on Win7 without the platform
update, but in reality we require the newer shader compiler so this
probably won't work regardless. Also any hardware of this vintage is
unlikely to run Dolphin well.
2019-06-08 20:11:49 +10:00
Lioncash
a9663669dc
Common/CommonFuncs: Remove now-unneccessary ArraySize function
...
Since C++17, non-member std::size() is present in the standard library
which also operates on regular C arrays. Given that, we can just replace
usages of ArraySize with that where applicable.
In many cases, we can just change the actual C array ArraySize() was
called on into a std::array and just use its .size() member function
instead.
In some other cases, we can collapse the loops they were used in, into a
ranged-for loop, eliminating the need for en explicit bounds query.
2019-06-01 10:07:57 -04:00
Lioncash
a41ba68c1e
VideoVulkan/CMakeLists: Specify headers in target sources
2019-05-31 06:54:26 -04:00
Lioncash
cd9281772a
VideoSoftware/CMakeLists: Specify headers in target sources
2019-05-31 06:54:26 -04:00
Lioncash
115e7992c5
VideoOGL/CMakeLists: Specify headers in target sources
2019-05-31 06:54:26 -04:00
Lioncash
968d379cc4
VideoNull/CMakeLists: Specify headers in target sources
2019-05-31 06:54:26 -04:00
Lioncash
1831dcbe6f
VideoVulkan/ShaderCompiler: Use non-member std::size instead of ArraySize()
...
Now that we're on C++17, we can use its non-member std::size function
instead of ours. This provides no functional change.
2019-05-30 04:16:20 -04:00
Lioncash
d6a60050ff
VideoVulkan/ShaderCompiler: Use a std::optional instead of bool+out variable
...
Now that we utilize C++17, we can simply return an optional containing
the code instead of using an out variable and a boolean result,
essentially combining them into one.
This provides a much more straightforward interface.
2019-05-30 04:16:17 -04:00
Lioncash
e60268bd42
VideoCommon/RenderBase: Use a std::string_view with CreateShaderFromSource()
...
Greatly simplifies the overall interface when it comes to compiling
shaders. Also allows getting rid of a std::string overload of the same
name. Now std::string and const char* both go through the same function.
2019-05-30 03:29:35 -04:00
Pokechu22
69d9d9f87a
Also free when initialization fails, and move to end
2019-05-26 19:59:29 -07:00
Pokechu22
19fb3bb4fe
DX11: Fix access violation on closing dolphin
2019-05-26 15:01:05 -07:00
spycrab
ec734065db
Merge pull request #8087 from spycrab/cmake_win2019
...
Support CMake on Windows
2019-05-14 21:07:26 +02:00
spycrab
6cef70c182
VideoBackends/D3D: Fix CMakeLists.txt
2019-05-12 00:05:09 +02:00
weihuoya
e98f43d2af
bbox minor fx
2019-05-09 17:30:17 +08:00
spycrab
35f7abfe76
VideoBackends/D3DCommon: Fix linking against self
2019-05-08 20:59:15 +02:00
Techjar
ff972e3673
Reformat repo to clang-format 7.0 rules
2019-05-06 18:48:04 +00:00
Léo Lam
ab9ece9bca
Replace MathUtil::Clamp with std::clamp
2019-05-04 23:12:17 +02:00
Léo Lam
99a4ca8de7
Merge pull request #7839 from ShFil119/impr/redundant
...
Remove redundant initialization
2019-05-04 22:50:51 +02:00
Filip Gawin
c110ffcdaa
Remove redundant initialization
2019-04-30 01:22:24 +02:00
Connor McLaughlin
1b1662773e
Merge pull request #8048 from stenzek/vulkan-negative-scissor-rect
...
Vulkan: Don't set a negative offset in scissor rect
2019-04-28 23:37:51 +10:00
Stenzek
32359bf2bb
Renderer: Adjust target rectangle in the base class
2019-04-28 23:33:24 +10:00
Stenzek
3c64f0c616
Renderer: Adjust source rectangle when crop would draw off screen
...
This prevents us from requiring an oversized and/or negative viewport by
shrinking the source rectangle instead.
2019-04-28 23:31:57 +10:00
Connor McLaughlin
d2d8d7ce90
Merge pull request #8051 from JosJuice/efb-constexpr
...
Turn EFB_WIDTH/EFB_HEIGHT into constexpr
2019-04-28 20:37:25 +10:00
JosJuice
ced2306fc5
Turn EFB_WIDTH/EFB_HEIGHT into constexpr
...
https://bugs.dolphin-emu.org/issues/11692#note-5
Also change const into constexpr while we're at it.
2019-04-28 11:50:17 +02:00
Stenzek
5399995c61
Vulkan: Don't set a negative offset in scissor rect
...
The spec/validation layers say this is invalid.
2019-04-28 16:01:09 +10:00
Stenzek
025767c929
D3D: Set optional features after creating the device
...
Fixes feature level 10.0 devices crashing during runtime.
2019-04-28 15:26:49 +10:00
Stenzek
356ebdf509
OGL: Set shared context state up to match main context
...
Has a better chance of avoiding recompiling if so.
2019-04-21 14:28:14 +10:00
Stenzek
6553cf8bb1
OGL: Only set GL_PROGRAM_POINT_SIZE on desktop GL
...
It is always enabled in GLES.
2019-04-21 14:28:14 +10:00
Stenzek
f2a594fad5
OGL: Fix binding error on shutdown
...
This was occurring if the imgui vertex format was bound on shutdown,
which is destroyed before the vertex buffers
2019-04-21 14:28:14 +10:00
Stenzek
5c95dc61fc
OGL: Store shader source in OGLShader
...
So it can be dumped with info log when linking fails.
2019-04-21 14:28:14 +10:00
Stenzek
bbd1ae16db
OGL: Remove unused ProgramShaderCache::CompileShader()
2019-04-21 14:28:14 +10:00
Stenzek
f8c1ba409c
Replace EFBRectangle/TargetRectangle with MathUtil::Rectangle
2019-04-21 14:28:14 +10:00
Stenzek
3791262d96
TextureCache: Use linear filtering on y-scaled and >1xIR VRAM copies
2019-04-21 12:41:15 +10:00
Stenzek
616ad378b7
OGL: Support returning pipeline cache data
2019-04-16 00:39:43 +10:00
Stenzek
5cef09e383
D3D12: Support returning pipeline cache data
2019-04-16 00:34:34 +10:00
Stenzek
61a656570e
AbstractPipeline: Support returning "cache data"
...
"Cache data" can be used to assist a driver with creating pipelines by
using previously-compiled shader ISA.
2019-04-16 00:09:47 +10:00
Stenzek
474500f07e
Vulkan: Prevent submission of command buffer with open queries
2019-04-01 20:49:42 +10:00
Stenzek
f2d8c8d2a8
D3D12: Fix rare case where command list was executed with open queries
2019-04-01 20:49:24 +10:00
Stenzek
92f1f553d1
D3D12: Fix case where perf queries weren't flushed
2019-04-01 20:13:39 +10:00
Stenzek
113bd60fe7
Implement D3D12 backend
2019-04-01 11:24:55 +10:00
Connor McLaughlin
39139a52e7
Merge pull request #7939 from Techjar/no-more-disabled-gfx-features
...
Qt/HacksWidget: Fix backend feature support checks
2019-03-31 11:59:34 +10:00
Stenzek
b685a66753
Vulkan: Fix crash when checking subgroup support on Mesa
2019-03-30 00:18:26 +10:00
Stenzek
a6bb06174f
Vulkan: Fix library load failure on Android
2019-03-29 23:36:53 +10:00
Techjar
5d37b2b951
Qt/HacksWidget: Fix backend feature support checks
2019-03-29 08:45:21 -04:00
Stenzek
604ab67c7f
Vulkan: Simplify perf queries using vkGetQueryPoolResults
2019-03-29 20:54:44 +10:00
Stenzek
6d40ea8553
Vulkan: Fix barrier validation layer errors for bounding box
2019-03-29 20:54:44 +10:00
Stenzek
23a655217c
Vulkan: Fix validation layer error for unbound texture layouts
2019-03-29 20:54:44 +10:00
Stenzek
427dd45151
Vulkan: Simplify command buffer fence tracking
2019-03-29 20:54:44 +10:00
Connor McLaughlin
f3fadd7302
Merge pull request #7869 from stenzek/d3dcommon
...
D3D: Move sharable D3D11/D3D12 code to common library
2019-03-29 20:40:06 +10:00
Stenzek
6561850f2b
Vulkan: Support subgroup reduction operations via GL_KHR_shader_subgroup
2019-03-29 20:06:56 +10:00
Stenzek
86da282570
OGL: Support subgroup reduction operations via GL_NV_shader_thread_shuffle
2019-03-29 20:06:56 +10:00
Stenzek
d0d010f854
D3D11: Make stateman a unique_ptr
2019-03-29 19:55:00 +10:00
Stenzek
3b86c93285
VertexManagerBase: Increase vertex/uniform buffer sizes
...
ZTP was uploading 10MB+ of uniforms per frame, reducing paralellism by
forcing GPU waits.
2019-03-29 19:52:38 +10:00
Stenzek
2a4bca8b4a
VideoBackends: Verify validity before doing full renderer init
...
Prevents attempting to create invalid MSAA configurations, for example.
2019-03-29 19:52:38 +10:00
Stenzek
1151a1238f
D3D11: Use ComPtr smart pointer where possible
2019-03-29 19:52:38 +10:00
Stenzek
3d8014beb5
D3D11: Use D3DCommon where appropriate
2019-03-29 19:52:38 +10:00
Stenzek
ea15080d8f
Add D3DCommon (shared code between D3D11 and D3D12)
2019-03-29 19:52:38 +10:00
Stenzek
f6641b7e4f
Vulkan: Use Common::DynamicLibrary
2019-03-29 19:52:38 +10:00
Stenzek
16294acd2a
VideoBackends: Scale bounding box rectangle in the pixel shader
2019-03-25 18:47:58 +10:00
Dzmitry Malyshau
4173a8f545
Use proper view type of framebuffer images
2019-03-15 12:24:39 -04:00
Stenzek
a218a794cb
FramebufferManager: Implement deferred EFB cache invalidation
2019-03-09 12:24:04 +10:00
Stenzek
65216c9e87
VideoConfig: Add SupportsPartialDepthCopies to backend info
...
D3D11 doesn't support partial copies of depth buffers via
CopySubResource(), so we need to use a different path for the EFB cache.
2019-03-09 12:19:53 +10:00
spycrab
f72652f690
Revert "Vulkan: Show backend as Vulkan (MoltenVK) on macOS"
2019-03-07 02:05:59 +01:00
spycrab
a5534ec950
Vulkan: Show backend as Vulkan (MoltenVK) on macOS
2019-03-06 15:25:54 +01:00
Stenzek
21d81f99ff
VideoBackends: Fix GPU decoding of XFB buffers
...
Was using UNORM instead of UINT, resulting in invalid values.
2019-02-28 20:35:22 +10:00
Stenzek
f039149198
Move most backend functionality to VideoCommon
2019-02-19 16:57:54 +10:00
Stenzek
f9869cb216
Vulkan: Support runtime selection of WSI
2019-02-15 18:40:46 +10:00
Tilka
8d59d1bb11
Merge pull request #7798 from ShFil119/impr/empty
...
Use empty instead of size
2019-02-13 01:59:43 +00:00
Filip Gawin
49fe9f5db1
Use empty instead of size
2019-02-13 00:03:49 +01:00
Tilka
8aaebfa2b3
Merge pull request #7716 from stenzek/stereo
...
Stereoscopy regression fixes
2019-02-03 19:57:01 +00:00
Jordan Woyak
69b617ce76
WiimoteEmu: Remove redundant Matrix library and use the one in Common.
2019-02-03 12:02:02 -06:00
Tilka
2d75797c63
Merge pull request #7747 from stenzek/vulkan-shutdown
...
Vulkan: Shutdown fixes and cleanup/refactoring
2019-02-02 12:45:20 +00:00
Stenzek
3b033bf3f0
Vulkan: Move clear shader from Renderer to ShaderCache
2019-01-27 13:07:35 +10:00
Stenzek
e2cf238ec4
Vulkan: Move swapchain related members from Renderer to SwapChain
2019-01-27 12:59:57 +10:00
Stenzek
bd66db049a
Vulkan: Use device-local functions where possible
...
Avoids a call into the loader library, which may improve performance
ever-so-slightly.
2019-01-27 12:51:04 +10:00
Stenzek
ce1cc2d9fa
Vulkan: Don't execute command buffer before shutting down
...
We don't need to, and this was causing occasional crashes on Adreno.
2019-01-27 12:41:10 +10:00
Stenzek
b01df8670f
Renderer: Fix throttle-disable (TAB) hotkey when vsync is enabled
2019-01-27 12:31:12 +10:00
Stenzek
774480ba23
Vulkan: Set contents scale of Metal layer to screen factor
...
This gives us a native resolution framebuffer.
2019-01-26 00:02:04 +10:00
Stenzek
ee0fa548bc
Vulkan: Don't bind last descriptor set if bounding box is unsupported
...
Fixes crash on a4xx/Vulkan.
2019-01-25 11:15:57 +10:00
Stenzek
e9b02e7dd0
Vulkan: Remove unused UpdateUtilityUniformBuffer function
2019-01-25 11:15:57 +10:00
Stenzek
e4b205c769
Decouple XFB scanout from presentation
2019-01-25 11:15:57 +10:00
Stenzek
c9c0b85056
VideoBackends: Store a backbuffer 'scale'
...
This is a scaling factor, used for hi-dpi configurations.
2019-01-25 11:15:57 +10:00
Stenzek
e03b8e899e
Vulkan: Move texture upload buffer to ObjectCache
2019-01-25 11:15:57 +10:00
Stenzek
63dd91628d
Remove old RasterFont classes
2019-01-25 11:15:57 +10:00
Stenzek
600d1fc0bc
Renderer: Use imgui for drawing debug text and OSD
2019-01-25 11:15:57 +10:00
Stenzek
d1868d9475
RenderBase: Implement imgui rendering
2019-01-25 11:10:49 +10:00
Stenzek
396b7c2978
OGL: Invalidate tracked state when calling ResetAPIState()
...
Due to the current design, any of the GL state can be mutated after
calling this function, so we can't assume that the tracked state will
match if we call SetPipeline() after ResetAPIState().
2019-01-25 11:10:49 +10:00
Stenzek
6bfe4c83a5
OGL: Fix broken stereoscopy geometry shader for EFB copies
2019-01-19 23:22:57 +10:00
zackhow
078fc74b54
Android/OGL: fix bounding box for OpenGL-ES
...
OpenGL-ES does not have glGetBufferSubData, so use glMapBufferRange instead
2019-01-09 21:08:49 -05:00
weihuoya
66a7db3850
Always flush on swap
2019-01-08 18:28:59 +08:00
Stenzek
7afd5cc2fb
Use main buffers for utility draws
2018-12-04 17:37:25 +10:00
Stenzek
5ca18ff04e
Vulkan: Restore viewport/scissor state on RestoreAPIState
2018-12-04 17:36:08 +10:00
Stenzek
b409a87d1a
D3D: Clamp viewport to current framebuffer dimensions, not target
2018-12-04 17:36:08 +10:00
Stenzek
fa8262fa4a
Vulkan: Don't panic on missing color/depth buffer in config
2018-12-04 17:36:08 +10:00
Stenzek
2644e920cc
Renderer: Add backbuffer format to base class
2018-12-04 17:36:08 +10:00
Stenzek
1adcd47dcb
Renderer: Add a base Initialize() method to match Shutdown()
2018-12-04 17:36:08 +10:00
weihuoya
3ab0f02cec
vulkan: fx index buffer reserve size
2018-12-03 19:23:36 +08:00
Connor McLaughlin
6388992f62
Merge pull request #7039 from stenzek/moltenvk
...
Vulkan: macOS support via MoltenVK
2018-11-30 21:55:30 +10:00
Stenzek
a0653a1a34
Vulkan: Fix incorrect fence being assigned to staging texture
2018-11-12 01:02:32 +10:00
Stenzek
673f1963a0
Vulkan: Support macOS via MoltenVK
...
The path to the MoltenVK library can be specified by the
LIBMOLTENVK_PATH environment variable, otherwise it assumes it is
located in the application bundle's Contents/MacOS directory.
2018-11-07 05:41:09 -08:00
Stenzek
c7a2b1572b
CMake: Build Vulkan backend on macOS
2018-11-07 05:12:20 -08:00
Stenzek
7efdd1070b
OGL: Fix crash when opening graphics window on another backend
2018-11-07 21:20:12 +10:00
Stenzek
66b6e72c5e
Vulkan: Submit fewer command buffers in deferred EFB copies mode
2018-11-07 16:25:01 +10:00
Stenzek
8e2c063d62
TextureCache: Implement deferred/batched EFB copies
2018-11-07 16:25:01 +10:00
Pierre Bourdon
f1413dbbf6
Merge pull request #7501 from Techjar/class-memaccess-cleanup
...
VideoCommon: Clean up class-memaccess warnings
2018-10-28 23:59:51 +01:00
Stenzek
7c4607a05a
Vulkan: Add missing increment of draw call count
2018-10-28 11:32:26 +10:00
Stenzek
0559311f92
GLContext: Runtime selection of EGL/GLX on Linux
2018-10-20 21:11:34 +10:00
Stenzek
025e909773
GLContext: Use destructor instead of Shutdown() to cleanup
...
Also uses the Initialize() method to make the context current.
2018-10-20 21:11:34 +10:00
Stenzek
dcdd02d646
GLContext: Remove global context pointer
2018-10-20 21:11:34 +10:00
Stenzek
eb284b5d66
VideoBackends: Pass window system info from host on creation
2018-10-20 21:11:34 +10:00
Stenzek
9c57a98723
GLContext: Use host connection
...
This also removes the need for a sleeping event thread.
2018-10-20 21:11:34 +10:00
Stenzek
1d827a5223
Renderer: Pull dimensions from GLInterface/Swapchain
2018-10-20 21:11:34 +10:00
Stenzek
a3961750a7
Drop Host_GetRenderSurface and pass display to backend
2018-10-20 21:11:34 +10:00
Stenzek
134d967be2
Refactoring and cleanup of GLInterface (now GLContext)
2018-10-20 21:11:34 +10:00
Tillmann Karras
97cc9894e4
Update to Visual Studio's default Windows SDK
2018-10-20 00:53:08 +01:00
Techjar
8560eecd49
VideoCommon: Clean up class-memaccess warnings
2018-10-14 23:05:47 -04:00
Stenzek
e3f475b30e
NullBackend: Initialize vtx_decl in VertexFormat
...
This field was previously left uninitialized, which resulted in corrupted
UID caches being created.
2018-10-14 21:24:09 +10:00
Mat M
ecd4897d43
Merge pull request #7437 from stenzek/graphics-options-race
...
Fix race condition caused by opening graphics options while running
2018-10-12 10:29:28 -04:00
Stenzek
2e905455b1
OGL: Disable scissor test when calling glBlitFramebuffer()
...
glBlitFramebuffer() does not bypass the scissor test, which meant that
part of texture copies (e.g. XFB) could have been clipped when running
under OpenGL ES, as glCopyImageSubData() is not supported.
2018-10-09 22:00:40 +10:00
Tillmann Karras
56fdcf5f00
VideoCommon: remove unnecessary floor()
...
floatindex is clamped to the range [0, 9]. For non-negative numbers
floor() is equivalent to trunc(). Truncation happens implicitly when
converting to uint, so the floor() is unnecessary.
2018-10-09 00:31:43 +01:00
Jules Blok
1ab1d41b10
Merge pull request #7457 from Tilka/use_clamp
...
VideoSoftware: make use of Clamp()
2018-10-07 19:53:45 +01:00
Tilka
af2f212039
Merge pull request #7348 from spycrab/gl_cache_shaders
...
GL/TextureCache: Clean up inline shader code
2018-10-06 00:28:54 +01:00
Tillmann Karras
a6a5d86cd8
VideoSoftware: make use of Clamp()
2018-10-05 22:07:38 +01:00
Stenzek
eb33d7af64
Core: Call InitBackendInfo before loading config
2018-09-28 21:44:41 +10:00
spycrab
392df8a11d
GL/TextureCache: Clean up inline shader code
2018-08-30 16:05:39 +02:00
Stenzek
448e19629d
Vulkan: Drop usage of VK_NV_glsl extension
...
It's not providing a large performance improvement anymore, after the
more recent drivers introduced a new shader compiler.
2018-08-29 13:12:19 +10:00
Stenzek
3323265d91
FramebufferManager: Dynamic selection of EFB depth format
2018-07-19 21:47:42 +10:00
Stenzek
b30342d38f
VideoBackends: Support D24S8 abstract texture format
2018-07-19 21:47:42 +10:00
Techjar
dc2f22516c
Mark all video backend names for translation
2018-06-30 06:30:19 -04:00
Lioncash
540bb1a1b0
Software: Don't link against X11 libraries
...
The software backend doesn't actually use X11 in any capacity directly.
2018-06-21 01:47:37 -04:00
Léo Lam
c93210155f
Merge pull request #7075 from Ebola16/DumpObjects
...
Software Renderer "Dump Objects" needs dedicated folder and tooltip
2018-06-06 15:20:14 +02:00
Ryan Meredith
45b9b7d211
Give Dump Objects dedicated folder and tooltip
2018-06-06 08:42:41 -04:00
Anthony
36ff2a20d5
Merge pull request #6954 from degasus/coherent
...
OGL/Streambuffer: Use coherent mapping by default.
2018-06-05 12:06:17 -07:00
Léo Lam
6ce9c96d91
Merge pull request #7027 from leoetlino/cleanup
...
Use some C++17 features available since GCC 6
2018-06-04 20:50:50 +02:00
Stenzek
bc96557ec4
Externals: Update glslang to upstream commit 32d3ec3
2018-06-02 07:34:31 +00:00
Léo Lam
8a00a9e149
Remove old GCC version checks
2018-05-30 10:59:15 +02:00
Stenzek
640bfb8135
VideoConfig: Add a field for indicating logic op support in the backend
2018-05-26 00:07:20 +10:00
degasus
fdfd8b19d6
OGL/Streambuffer: Use coherent mapping by default.
...
Coherent mappings have a lower overhead and less GL codes.
So enables coherent mapping by default for all drivers.
Both Qualcomm and ARM performs very bad with explicit flushing, so this change helps them as well.
AFAIK there was one GPU generation which was slower on coherent mapping: nvidia tesla
So Geforce 200 and 300 series should be tested with this PR before merging.
As this was last tested many years ago, this issue might have been fixed as well.
Those GPUs are close to 10 years old and not supported any more by nvidia.
2018-05-24 00:00:02 +02: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