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