Connor McLaughlin
8e1fb126d7
Merge pull request #7953 from stenzek/lazy-d3d12-perf-queries
...
D3D12: Fix case where perf queries weren't flushed
2019-04-01 21:40:20 +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
Connor McLaughlin
32e330eb35
Merge pull request #7950 from stenzek/out-of-range-efb-copies
...
BPStructs: Gracefully handle out-of-range EFB copies
2019-04-01 13:08:11 +10:00
Connor McLaughlin
a2a4694497
Merge pull request #7853 from stenzek/d3d12
...
Re-implement D3D12 video backend
2019-04-01 13:02:57 +10:00
Stenzek
113bd60fe7
Implement D3D12 backend
2019-04-01 11:24:55 +10:00
Connor McLaughlin
6eb126b097
Merge pull request #7951 from jordan-woyak/win32-input-init-race-fix
...
InputCommon: Fix Win32 init race.
2019-03-31 23:42:43 +10:00
Stenzek
378b605669
BPStructs: Gracefully handle out-of-range EFB copies
...
Since the copy X and Y coordinates/sizes are 10-bit, the game can configure a
copy region up to 1024x1024. Hardware tests have found that the number of bytes
written does not depend on the configured stride, instead it is based on the
size registers, writing beyond the length of a single row. The data written
for the pixels which lie outside the EFB bounds does not wrap around instead
returning different colors based on the pixel format of the EFB.
This suggests it's not based on coordinates, but instead on memory addresses.
The effect of a within-bounds size but out-of-bounds offset
(e.g. offset 320,0, size 640,480) are the same.
As it would be difficult to emulate the exact behavior of out-of-bounds reads,
instead of writing the junk data, we don't write anything to RAM at all for
over-sized copies, and clamp to the EFB borders for over-offset copies.
2019-03-31 22:05:53 +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
3c455de799
FramebufferManager: Fix broken EFB peeks in GL with MSAA on
2019-03-30 03:14:29 +10:00
Connor McLaughlin
914aa7c506
Merge pull request #7943 from stenzek/vulkan-android-library-load
...
Vulkan: Fix library load failure on Android
2019-03-30 00:35:40 +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
Connor McLaughlin
377615b06f
Merge pull request #7905 from stenzek/vulkan-cleanup
...
Vulkan: Simplify command buffer fence tracking
2019-03-29 21:56:28 +10: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
087b11e780
TextureCacheBase: Fix possible crash on shutdown with deferred EFB copies
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
Connor McLaughlin
fbe57e8dbe
Merge pull request #7733 from stenzek/update-moltenvk
...
Externals: Update MoltenVK to SDK version 1.1.101.0
2019-03-29 20:34:11 +10:00
Connor McLaughlin
78cf615a9b
Merge pull request #7937 from Techjar/netplay-defer-efb-invalidation
...
NetPlay: Synchronize EFB access cache options
2019-03-29 20:31:15 +10:00
Connor McLaughlin
a50a34b94b
Merge pull request #7904 from stenzek/do-the-atomic-shuffle
...
PixelShaderGen: Use subgroup reduction for bounding box
2019-03-29 20:29:00 +10:00
Stenzek
d66d778bae
PixelShaderGen: Use subgroup reduction operations for bounding box
2019-03-29 20:06:56 +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
Connor McLaughlin
95c7b5c635
Merge pull request #7894 from Tilka/massage_ini
...
GameSettings: fix Enjoy your massage! textures
2019-03-29 20:05:57 +10:00
Connor McLaughlin
1304e963ad
Merge pull request #7895 from stenzek/framebuffer-corruption
...
FramebufferManager: Don't discard in ReinterpretPixelData
2019-03-29 20:03:13 +10:00
Connor McLaughlin
154eeae8ae
Merge pull request #7915 from stenzek/bbox-scaled-update
...
VideoBackends: Scale bounding box rectangle in the pixel shader
2019-03-29 19:59:25 +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
a4f7c04470
Common: Add DynamicLibrary helper class
2019-03-29 19:52:33 +10:00
Stenzek
e9cfcf4632
ShaderCache: Don't create invalid logic op pipelines
...
uint_output will never be set unless logic ops are enabled. Also clears
the bits so we're not compiling unused pixel shaders on the other
backends.
2019-03-28 20:35:02 +10:00
Stenzek
5732769a3c
ShaderCache: Set correct primitive in dummy ubershader pipelines
2019-03-28 20:35:02 +10:00
Stenzek
7dd9d74eec
RenderBase: Add EFBHasAlphaChannel() helper
2019-03-28 20:35:02 +10:00
Stenzek
92fa6c34cd
FramebufferManager: Fix EFB pokes being offset by 1 in D3D
2019-03-27 23:28:34 +10:00
Stenzek
c28393d6f9
FramebufferManager: Fix EFB peek cache stretching last tile
2019-03-27 22:12:40 +10:00
Stenzek
16294acd2a
VideoBackends: Scale bounding box rectangle in the pixel shader
2019-03-25 18:47:58 +10:00
Connor McLaughlin
eaa1874875
Merge pull request #7926 from stenzek/clear-tile-array
...
FramebufferManager: Only clear tile array when valid
2019-03-24 16:57:18 +10:00
Stenzek
cff60f5ba0
FramebufferManager: Only clear tile array when valid
...
When looking into the Faron Woods fifolog, I noticed this code was quite
high in the profile (~10%). Clearing 4096 entries from the vector isn't
needed every draw, we only need to do this when the cache was actually
valid in the first place.
Should provide a slight general performance boost.
2019-03-24 15:03:04 +10:00
Stenzek
bf0b52efc6
TextureCacheBase: Fix infinite loop in DoPartialTextureUpdates
2019-03-20 20:05:51 +10:00
Stenzek
8aa0ea10d9
FramebufferManager: Don't discard in ReinterpretPixelData
...
This was causing the depth buffer to be discarded as well, which
has an effect on mobiles (doesn't get loaded into tile memory).
If we find this is hindering performance (remember, the EFB is
only a 640x528 texture), it may be worth changing the interface to
support discarding only the colour buffer.
2019-03-16 23:45:08 +10:00
Connor McLaughlin
861fc42fc9
Merge pull request #7891 from kvark/vk-frame-view
...
[vk] Use proper view type of framebuffer images
2019-03-16 09:26:01 +10:00
Connor McLaughlin
7eae5b91d6
Merge pull request #7882 from JMC47/SMGDefer
...
Enable Defer EFB Cache Invalidation for SMG1 and 2
2019-03-13 22:44:11 +10:00
Stenzek
cce7ac43d4
FramebufferManager: Fix panic in VertexManager with large EFB depth poke batches
2019-03-12 18:26:07 +10:00
Connor McLaughlin
08b95c3fde
Merge pull request #7868 from jordan-woyak/shutdown-crash-fix
...
WiimoteEmu: Fix a config change callback causing a crash on exit.
2019-03-10 11:13:02 +10:00
Stenzek
0e2397a1bc
GameIni: Disable EFB CPU tile cache on F-Zero GX
...
In the Sand Ocean track, EFB peeks occur across the whole screen.
This leads to slow performance with the tile cache enabled, so disable it.
2019-03-10 01:24:05 +10:00
Stenzek
9293c82b24
DolphinQt: Add option for deferred EFB cache invalidation
2019-03-09 12:36:32 +10:00
Stenzek
a218a794cb
FramebufferManager: Implement deferred EFB cache invalidation
2019-03-09 12:24:04 +10:00
Stenzek
6bc4bfd26a
FramebufferManager: Implement EFB tile cache
...
The new tile cache is dynamic in size and can be turned on/off.
2019-03-09 12:23:33 +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
Connor McLaughlin
7d17163ce8
Merge pull request #7862 from spycrab/macos_vulkan_crash
...
VideoCommon/RenderBase: Don't destroy pipelines that are in use
2019-03-07 23:15:48 +10:00
Stenzek
565e604679
Externals: Update MoltenVK to SDK version 1.1.101.0
2019-03-06 22:00:22 +10:00
Connor McLaughlin
a59010fa29
Merge pull request #7851 from Tilka/efb_stats
...
VideoCommon: add EFB peek/poke stats
2019-03-04 15:28:22 +10:00
Connor McLaughlin
1d80ab33ad
Merge pull request #7836 from Tilka/fix_xfb
...
TextureConversionShader: fix XFB decoding shader
2019-03-02 12:31:39 +10:00
Stenzek
8192c0dd48
TextureConversionShader: Fix XFB decoding shader for D3D
...
D3D has no mix() equivalent with a bool parameter. Compilers should be
able to optimize the ternary into a select anyway.
2019-02-28 20:43:50 +10: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
db6763019d
TextureCache: Fix GPU decoding of XFB copies not falling back to CPU
2019-02-28 20:19:37 +10:00
Stenzek
7f0111b022
TextureCache: Fix EFB2RAM copies at >1xIR sampling out-of-range
2019-02-28 20:11:46 +10:00
Stenzek
f039149198
Move most backend functionality to VideoCommon
2019-02-19 16:57:54 +10:00
Stenzek
933f3ba008
TextureCache: Don't copy out-of-range rectangles when stitching textures
...
This can cause driver crashes or GPU hangs if we do.
2019-02-17 16:35:43 +10:00
Stenzek
2165523fdc
TextureConverterShader: Write EFB2Tex XFB copies with alpha value of 1
...
This way we don't end up with artifacts of the EFB's alpha values in
frame dumps. XFB copies loaded from RAM also set the alpha to 1, so this
will match.
2019-02-17 16:35:43 +10:00
Stenzek
50bdcb8d9c
TextureCache: Bind textures/samplers after loading all textures
...
Since loading textures can result in rendering, e.g. partial copies, we
don't want to disturb partially-bound GX state.
2019-02-17 16:35:43 +10:00
Connor McLaughlin
b5c3881fe7
Merge pull request #7512 from stenzek/runtime-headless
...
DolphinNoGUI: Runtime selection of platform
2019-02-16 14:15:00 +10:00
Stenzek
eabde77892
CMake: Add an ENABLE_NOGUI option
2019-02-15 18:40:46 +10:00
Stenzek
836f76da89
DolphinNoGUI: Runtime selection of platform
2019-02-15 18:40:46 +10:00
Stenzek
f9869cb216
Vulkan: Support runtime selection of WSI
2019-02-15 18:40:46 +10:00
Stenzek
a4c64e7964
Externals: Set target platform to 10.0.17134 for FreeSurround
2019-02-14 20:42:06 +10:00
Connor McLaughlin
326d72728c
Merge pull request #5235 from LAGonauta/fs-dplii-decoder
...
Change FFDShow DPL2 decoder to FreeSurround
2019-02-14 18:38:12 +10:00
Stenzek
cecefa2d97
ChunkFile: Don't access element zero of empty container
...
This was causing assertion failures in debug MSVC builds.
2019-02-10 13:28:50 +10:00
Stenzek
ef3306e954
GLContext: Fix shared context creation error on Mesa
...
This was failing if the first version tried (4.6) didn't succeed.
2019-02-09 21:51:23 +10:00
Stenzek
31a5dd15a9
DolphinQt: Connect Host::RequestStop() to MainWindow::RequestStop()
...
The fact that this wasn't connected was causing fifoplayer to hang if
looping was disabled.
2019-02-02 13:36:46 +10:00
Connor McLaughlin
84794a6f0c
Merge pull request #7749 from jordan-woyak/fix-anaglyph-pp-selection
...
DolphinQt: Fix selection of PP shader when using anaglyph 3D.
2019-01-28 11:01:17 +10: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
Connor McLaughlin
ff5e296576
Merge pull request #7741 from Techjar/no-resume-on-stop
...
Qt/MainWindow: Don't unpause after confirming shutdown
2019-01-26 23:48:52 +10:00
Stenzek
3d8145af65
RenderWidget: Fix mouse position for imgui on hidpi screens
2019-01-26 01:31:58 +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
Connor McLaughlin
af25b9aede
Merge pull request #7731 from zackhow/point
...
Android: Fix pointer if game aspect ratio is larger than device's
2019-01-25 19:38:29 +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
c6f151c4e1
Android: Use scaledDensity as backbuffer scale (for imgui)
2019-01-25 11:15:57 +10:00
Stenzek
82fd923a4e
Android: Add getter method for NativeLibrary.sEmulationActivity
...
Also makes sEmulationActivity private.
2019-01-25 11:15:57 +10:00
Stenzek
e9b02e7dd0
Vulkan: Remove unused UpdateUtilityUniformBuffer function
2019-01-25 11:15:57 +10:00
Stenzek
78588ce79d
ShaderCache: Use imgui for shader compilation dialog
2019-01-25 11:15:57 +10:00
Stenzek
e4b205c769
Decouple XFB scanout from presentation
2019-01-25 11:15:57 +10:00
Stenzek
f1e7fb505b
Renderer: Scale all imgui fonts by the backbuffer scale
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
36ce47635b
RenderWidget: Hook up to ImGui
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