Commit graph

319 commits

Author SHA1 Message Date
Connor McLaughlin a0a78087fe Vulkan: Support Wayland 2020-09-23 20:19:50 +10:00
Connor McLaughlin 2aace1b503 GL/Context: Don't choke on X11+Wayland 2020-09-23 19:46:39 +10:00
Connor McLaughlin cd0199a07a FileSystem: Fix size being unfilled on Linux
Fixes BIOS detection.
2020-09-23 12:15:25 +10:00
Connor McLaughlin e8e461c0a7 FileSystem: Fix GetProgramPath() sometimes returning stale paths
See https://social.msdn.microsoft.com/Forums/windowshardware/en-US/4b7b3884-d0bb-4812-bc18-2078c61d4b90/queryfullprocessimagename-gives-wrong-path-for-renamed-directory?forum=windowsgeneraldevelopmentissues
2020-09-21 01:20:20 +10:00
Connor McLaughlin 2219b9aa66 CDImageCue: Work around broken (old) dumps with missing pregap
Some people have broken (older) dumps where a two second pregap was implicit but not specified in the cuesheet.
The problem is we can't tell between a missing implicit two second pregap and a zero second pregap.
2020-09-21 01:20:17 +10:00
Silent 92d0dabf54
Make path separators in UI more consistent 2020-09-20 00:08:17 +02:00
Connor McLaughlin a7b85605e2 Ignore existing surface size on Android
Seems to be a race condition here where it's not up to date.
2020-09-20 01:36:49 +10:00
Connor McLaughlin 70768c02af Common: Add Shift-JIS helpers 2020-09-19 00:28:47 +10:00
Silent 1918a5ddd4
STBI: Handle UTF-8 paths correctly 2020-09-14 21:27:22 +02:00
Connor McLaughlin 68d08ddbcb Merge branch 'postprocessing' 2020-09-13 12:14:21 +10:00
Connor McLaughlin a0f6b4ce81 Build: Don't include AGL context wrapper for libretro 2020-09-13 11:56:56 +10:00
Connor McLaughlin 5804778339 D3D11/Texture: Fix dimensions not getting reset on destroy 2020-09-13 01:23:43 +10:00
Connor McLaughlin d09a802a17 Vulkan/Context: Use VK_LAYER_KHRONOS_validation 2020-09-13 01:23:43 +10:00
Connor McLaughlin 666d7fbb99 Vulkan/Context: Add pipeline destruction deferring 2020-09-13 01:23:43 +10:00
Connor McLaughlin f63192c6b2 Vulkan/SwapChain: Fix incorrect return from GetTextureFormat() 2020-09-13 01:23:43 +10:00
Connor McLaughlin aa383d0bda Common/String: Support constructing from string_view 2020-09-13 01:23:43 +10:00
Connor McLaughlin 84b0522abc Common/Rectangle: Make it work with float types 2020-09-13 01:23:43 +10:00
Silent 89e0290d06
Fix resource leaks in AutoStagingTexture::EnsureSize and D3D11HostDisplay::DownloadTexture 2020-09-04 23:44:19 +02:00
Connor McLaughlin dd0ae0fc9d Vulkan/StagingTexture: Keep mapped throughout transfers
The underlying bug here was not invalidating the buffer after mapping (is
this supposed to be necessary?). But by keeping it mapped, we invalidate
it anyway.

Fixes screen corruption in Final Fantasy IX on Mali GPUs.
2020-09-01 12:02:39 +10:00
Connor McLaughlin ca723d699b Make ALWAYS_INLINE_RELEASE specify inline in debug too
Stops us needing the static qualifier as well.
2020-08-29 21:22:41 +10:00
Connor McLaughlin 17b5c749bf libretro: Re-enable hw context switch, add auto option 2020-08-23 14:51:23 +10:00
kwyxz 31695c4ff7
Haiku port of duckstation libretro core (#716)
* Haiku build 1st attempt

* fix load on Haiku

* Removed debugging flags

* Added a couple ifndef
2020-08-22 13:20:37 +10:00
Connor McLaughlin 2e9f656546 CPU: Implement PGXP CPU Mode
This is *very* slow. You don't want to enable it if you don't need it.
It is also incompatible with the recompiler and will disable it if the
option is enabled.
2020-08-20 00:49:39 +10:00
Connor McLaughlin a895c02789 Common/ByteStream: Use wide paths for committing updates
Fixes save states to UTF-8 paths.
2020-08-17 13:10:36 +10:00
Connor McLaughlin c5db7db182 Build: Compile source as UTF-8 with MSVC 2020-08-15 00:04:38 +10:00
Connor McLaughlin 512a8b2b39 FileSystem: Make more functions UTF-8 compatible on Windows 2020-08-06 22:07:43 +10:00
Connor McLaughlin 045e6dff61 Common: Add Win32ProgressCallback 2020-08-06 19:33:08 +10:00
Connor McLaughlin 7cafb8c515 Common: Add MinizipHelpers (RAM and UTF-8 compatible fopen) 2020-08-06 19:33:02 +10:00
Connor McLaughlin 6e586311e8 Common: Add title, modal information to ProgressCallback 2020-08-06 19:32:53 +10:00
RibShark 1ebbb1e42a
Only force 2 second pregap for track 1
Fixes #579
2020-08-05 15:19:28 +01:00
Connor McLaughlin a7dbb9ab28 CDImage: Work around cue parser requiring new line at end 2020-08-05 03:14:06 +10:00
Connor McLaughlin 69cbc0b5a2 GL/Texture: Add wrap texture mode option 2020-08-04 14:40:00 +10:00
Connor McLaughlin 96ba9198ef GPU/HW: Expand lines into triangles before rendering
Fewer batches, consistent upscaling behavior.
2020-08-02 17:17:11 +10:00
jdgleaver 363804c48b (libretro/Vulkan) Fix glslang shader-related crashes 2020-08-01 15:29:59 +01:00
Connor McLaughlin 7067b8f6e3 CDImage/CHD: Handle UTF-8 strings when opening 2020-08-01 14:01:23 +10:00
Connor McLaughlin ede8de92f6 FileSystem: Use wide strings for FindFiles and StatFile on Windows 2020-08-01 14:00:58 +10:00
Connor McLaughlin 2eb9384275 Replace more instances of fopen() with FileSystem::OpenFile() 2020-08-01 14:00:22 +10:00
Connor McLaughlin b6f871d2b9
JIT optimizations and refactoring (#675)
* CPU/Recompiler: Use rel32 call where possible for no-args

* JitCodeBuffer: Support using preallocated buffer

* CPU/Recompiler/AArch64: Use bl instead of blr for short branches

* CPU/CodeCache: Allocate recompiler buffer in program space

This means we don't need 64-bit moves for every call out of the
recompiler.

* GTE: Don't store as u16 and load as u32

* CPU/Recompiler: Add methods to emit global load/stores

* GTE: Convert class to namespace

* CPU/Recompiler: Call GTE functions directly

* Settings: Turn into a global variable

* GPU: Replace local pointers with global

* InterruptController: Turn into a global pointer

* System: Replace local pointers with global

* Timers: Turn into a global instance

* DMA: Turn into a global instance

* SPU: Turn into a global instance

* CDROM: Turn into a global instance

* MDEC: Turn into a global instance

* Pad: Turn into a global instance

* SIO: Turn into a global instance

* CDROM: Move audio FIFO to the heap

* CPU/Recompiler: Drop ASMFunctions

No longer needed since we have code in the same 4GB window.

* CPUCodeCache: Turn class into namespace

* Bus: Local pointer -> global pointers

* CPU: Turn class into namespace

* Bus: Turn into namespace

* GTE: Store registers in CPU state struct

Allows relative addressing on ARM.

* CPU/Recompiler: Align code storage to page size

* CPU/Recompiler: Fix relative branches on A64

* HostInterface: Local references to global

* System: Turn into a namespace, move events out

* Add guard pages

* Android: Fix build
2020-07-31 17:09:18 +10:00
Connor McLaughlin 8b0c3f0dc8 FileSystem: Use wide strings for fopen on Windows 2020-07-31 16:04:06 +10:00
Connor McLaughlin 3edb8e113e StringUtil: Add wide string<->utf8 conversion for Windows 2020-07-31 16:04:00 +10:00
Connor McLaughlin c7b457de9e CubebAudioStream: Continue even without minimum latency
Fixes audio not functioning on Android.
2020-07-29 02:38:04 +10:00
Connor McLaughlin 08b26edceb CDImage: Fix incorrect track length
Shouldn't affect much, other than the game properties window.
2020-07-25 02:36:41 +10:00
Connor McLaughlin 10f23667c9 CDImage: Fix incorrect pregap file offset calculation
Should fix repeating audio at the start of some tracks.
2020-07-24 13:47:21 +10:00
Connor McLaughlin f3df4f91a2 libretro: Implement disk control interface 2020-07-23 02:36:23 +10:00
Connor McLaughlin 266d70c629 Common/FileSystem: Add IsAbsolutePath() and tests 2020-07-23 02:35:37 +10:00
Connor McLaughlin 3187d07d03 CDImage: Add memory CD image class 2020-07-22 00:03:07 +10:00
Connor McLaughlin cf366d3fba CDImage: Fix crash reading subq from lead-in 2020-07-22 00:02:51 +10:00
Connor McLaughlin 03c3b10054 CDSubChannelReplacement: Use subq union directly 2020-07-22 00:02:44 +10:00
Connor McLaughlin eb7da791ea CommonHostInterface: Fix command line help not printing on Windows 2020-07-21 20:09:54 +10:00
Connor McLaughlin 71cef1de3f GL/ContextGLX: Add additional logging 2020-07-15 15:50:30 +10:00
Connor McLaughlin 282f166e7a Vulkan/StagingBuffer: Don't try to invalidate unmapped buffer
Fixes crash on Mali.
2020-07-12 00:40:05 +10:00
Connor McLaughlin fb6538da35 Vulkan/Context: Allocate SSBO descriptors in global set
Fixes vram write buffer creation failing on Mali.
2020-07-12 00:38:27 +10:00
Connor McLaughlin 4ce5f7e802 GLContext: Wayland support 2020-07-11 03:28:25 +10:00
Connor McLaughlin a5fe740e30 Fix a bunch of compiler warnings 2020-07-09 13:30:16 +10:00
Connor McLaughlin 9685be9064 D3D11/ShaderCache: Remove feature level 12 enum usage
It's not used anyway.
2020-07-09 13:00:44 +10:00
Connor McLaughlin 46dfccef81 Common/DimensionalArray: Don't break clang 2020-07-08 15:40:08 +10:00
Connor McLaughlin a68bbb3e85 Common/DimensionalArray: Work around VC2017 issue 2020-07-08 15:04:47 +10:00
Connor McLaughlin 6ae5caa23b Common/StringUtil: Add missing include 2020-07-08 12:45:49 +10:00
Connor McLaughlin 01287cb7da build: Support building libretro core for Android 2020-07-07 20:27:14 +10:00
Connor McLaughlin 729e1b3392 GLContext: Fix Android context creation 2020-07-07 00:59:49 +10:00
Connor McLaughlin da180a1c4f Vulkan: Fix crash when device creation fails 2020-07-07 00:59:42 +10:00
Connor McLaughlin 1d4b5e22cb Vulkan: Fall back to geometryShader when fillModeNonSolid unsupported 2020-07-07 00:59:35 +10:00
Connor McLaughlin 9b3e344ad8 Renderers: Support empty shader cache 2020-07-04 22:14:07 +10:00
Connor McLaughlin f396a2c373 Renderers: Make shader cache path a prefix instead of directory 2020-07-04 22:14:07 +10:00
Connor McLaughlin b9ffca1ddf libretro: Vulkan renderer support 2020-07-04 22:14:07 +10:00
Connor McLaughlin bf08385051 WindowInfo: Add surface_scale field 2020-07-01 01:57:25 +10:00
Connor McLaughlin 7d88bba764 Common: Add an image helper class 2020-07-01 00:56:46 +10:00
Connor McLaughlin f3b2953e40 Common/StringUtil: Add FromChars overload for bool 2020-07-01 00:56:46 +10:00
Connor McLaughlin 2a38090e7a HostDisplay: Move most backend logic to FrontendCommon 2020-06-30 03:03:56 +10:00
Connor McLaughlin dc7cc3b67f Common/ByteStream: Fix buffer corruption in MemoryByteStream 2020-06-30 02:44:01 +10:00
Connor McLaughlin ea1066f76e GL/StreamBuffer: Use glBufferData() on all drivers 2020-06-29 14:44:16 +10:00
Connor McLaughlin 745b53e4cb GL/Context: Fix crash in some GLX drivers 2020-06-27 17:35:08 +10:00
Connor McLaughlin 2cfb811569
Merge pull request #565 from lioncash/stamp
timestamp: Correct duplicate conditionals
2020-06-24 01:32:52 +10:00
Connor McLaughlin 84d4423719
Merge pull request #564 from lioncash/leak
file_system: Prevent resource leaks in DeleteDirectory()
2020-06-24 01:31:52 +10:00
Lioncash 4c82705e34 timestamp: Correct duplicate conditionals
Previously, the milliseconds field wasn't being used in comparisons on
Windows.
2020-06-23 06:24:06 -04:00
Lioncash 987b11a1d2 timestamp: Implement operator!= in terms of operator==
Same behavior, less code.
2020-06-23 06:20:29 -04:00
Lioncash 83a01c27a2 file_system: Prevent resource leaks in DeleteDirectory()
We need to remember to close the search handle in the error cases.
2020-06-23 06:13:54 -04:00
Lioncash 292a0a6800 file_system: Correct duplicate conditionals in CreateDirectory() 2020-06-23 06:09:38 -04:00
Connor McLaughlin 3ca9d578b3
Merge pull request #559 from lioncash/field
bitfield: Make interface fully constexpr
2020-06-23 19:58:06 +10:00
Connor McLaughlin e228588823
Merge pull request #561 from lioncash/rectangle
rectangle: Correct assignment of right within SetExtents
2020-06-23 19:56:16 +10:00
Lioncash e064196f25 rectangle: Correct assignment of right within SetExtents
Previously left was being assigned twice in a row.
2020-06-23 05:50:43 -04:00
Lioncash 0abe4c60b4 cd_image: Make use of std::array where applicable
Simplifies array copies.
2020-06-23 05:35:26 -04:00
Lioncash a27aa45e6a bitfield: Make interface fully constexpr
Given C++17 is being used, the entire interface is capable of being
constexpr.
2020-06-23 05:27:40 -04:00
Connor McLaughlin 9265dd72ba Vulkan/ShaderCache: Skip writing pipeline cache when size matches
Comparing all the data wasn't working, at least for Intel. I'm guessing
there's some modification time field in there which keeps changing.
2020-06-22 15:58:10 +10:00
Connor McLaughlin eaca5eca07 GPU/Vulkan: Use Metal layer instead NSView on macOS. 2020-06-22 15:58:07 +10:00
Connor McLaughlin 1455e793d5 Vulkan: Fix crash when drag-resizing window 2020-06-22 15:57:54 +10:00
Connor McLaughlin bf60f9dd61 GPU/Vulkan: Use geometry shader for line rendering at >1xIR 2020-06-21 01:33:08 +10:00
Connor McLaughlin f54876deb0 Vulkan/Context: Use VK_MVK_macos_surface not VK_EXT_metal_surface
Will change this over some time in the future when I can work on a Mac
again and set up the layer.
2020-06-20 20:37:38 +10:00
Connor McLaughlin 7192b8d83a Vulkan/ShaderCache: Hopefully fix macOS build 2020-06-20 03:39:46 +10:00
Connor McLaughlin 1b5f8db2fc Vulkan/Context: Support specifying GPU to use 2020-06-20 03:34:19 +10:00
Connor McLaughlin 4a04800132 Vulkan: Handle potential duplicate GPU/adapter names 2020-06-20 03:34:19 +10:00
Connor McLaughlin c023bcd234 Linux build fix 2020-06-19 01:36:46 +10:00
Connor McLaughlin 3cd5b7ae74 Core: Add Vulkan renderer types 2020-06-19 00:18:14 +10:00
Connor McLaughlin 1399e95b77 Common: Add a range of Vulkan helper/wrapper classes 2020-06-19 00:18:07 +10:00
Connor McLaughlin bd164d2735 Common/FileSystem: Add {Read,Write}BinaryFile helpers 2020-06-19 00:16:59 +10:00
Connor McLaughlin 0890164987 Common: Add scope_guard.h from Dolphin 2020-06-19 00:16:59 +10:00
Connor McLaughlin 8daff5e677 Common: Add dimensional_array.h 2020-06-18 03:10:33 +10:00
Connor McLaughlin 86f0d32e70 CubebAudioStream: Fix crash in PulseAudio on Linux 2020-06-09 03:03:53 +10:00
Connor McLaughlin 444a09efd4 AudioStream: Don't call FramesAvailable() while locked 2020-06-09 02:05:49 +10:00
Connor McLaughlin 8b04b74f27 Common: Add a CD image hasher class 2020-06-08 01:19:35 +10:00