Commit Graph

237 Commits

Author SHA1 Message Date
LazyBumHorse 3c6a46d95d fix handling of vulkan_gpu_list (use after free, not always being initialized) 2019-08-15 17:52:24 +02:00
twinaphex c4c7a1b8cc (Vulkan) Dehardcode application name 2019-07-19 20:12:12 +02:00
twinaphex b04e057b5d Revert "(Win32/Vulkan) Dehardcode more program name strings"
This reverts commit 5cefcb8327.
2019-07-19 19:39:43 +02:00
twinaphex 5cefcb8327 (Win32/Vulkan) Dehardcode more program name strings 2019-07-19 19:27:24 +02:00
stoofin 1b57cf6112 Fall back to libvulkan.so.1 if libvulkan.so isn't present 2019-06-27 14:08:14 -07:00
twinaphex 48eeb15d2c Silence warnings 2019-06-20 01:16:05 +02:00
Brad Parker d01f04c146 d3d10/11/12: add GPU selection 2019-06-18 16:35:50 -04:00
Brad Parker c962da0ddb add video setting to select gpu (currently implemented for vulkan) 2019-06-13 12:47:08 -04:00
twinaphex 17b2019e11 (Vulkan) Fix potential memory leak 2019-05-26 08:18:42 +02:00
Nathan S 775c272029 Menu widgets stuff + vulkan sanity check (#8710)
* task_screenshot: fix hang with menu widgets

* word_wrap: add max_lines parameter

* vulkan: better instance creation sanity check
2019-05-06 21:10:57 +02:00
Huw Pascoe fed06044c4 silence warnings 2019-04-12 17:32:11 +01:00
Brad Parker 10df615d14 add "Send Debug Info" option under Help 2019-03-07 19:17:54 -05:00
orbea 28ff4b391a Clean up white space. 2019-02-03 16:00:50 -08:00
twinaphex 83241ed0b1 Some header cleanups 2019-01-19 23:27:59 +01:00
twinaphex b027395341 (Android/Vulkan) Enable 'emulate mailbox' for Android 2018-12-03 00:40:50 +01:00
Themaister f51ef85f27 Vulkan: Fix scissor in menu driver. 2018-11-08 21:57:53 +01:00
twinaphex 77fba6d58d (Vulkan) Silence warning 2018-10-01 00:41:29 +02:00
twinaphex 2125f92281 Silence warnings/cleanups 2018-09-30 13:43:56 +02:00
twinaphex 4c23fa02e9 (MSVC 2013) Fix build for rcheevos
(MSVC) Fix some warnings; unused variables, etc.
2018-09-30 13:38:58 +02:00
Themaister a1989afba9 Vulkan: Fix race condition in threaded mailbox emulation. 2018-09-10 19:35:13 +02:00
Themaister d338dac277 Only do mailbox emulation for fullscreen.
Too large impact on performance in Windowed mode.
2018-09-08 16:27:25 +02:00
Themaister d39f66a738 Emulate mailbox by wrapping acquire in a thread.
Needed on nVidia Windows since they don't support timeout == 0 ...
2018-09-08 15:56:49 +02:00
Themaister 157d1e7e63 Only use mailbox emulation on AMD. 2018-09-08 11:47:58 +02:00
Themaister 66c4f8fd35 Make sure to always clear out swapchain_fence_signalled. 2018-09-08 11:47:58 +02:00
Themaister 9ebac87638 Vulkan: Emulate mailbox on Windows. 2018-09-08 11:47:58 +02:00
Themaister af534f0fa8 Vulkan maintenance fixes.
- Use VkBuffer instead of linear VkImage for staging uploads.
  Not guaranteed to be supported, and desktop IHVs recommend using
  buffers.

- Fix validation error where swapchain recreation with reuse of the old
  VkSwapchainKHR does not create a fence properly, leading to validation
  error next time that swapchain index is observed.
2018-09-08 11:47:58 +02:00
orbea 260ce526c2 Fix segfaults when starting vulkan without a working vulkan driver.
RetroArch will crash in several places when running vulkan in an
environment that does not have working vulkan drivers.

This should guard against those crashes and allow RetroArch to fail
safely in those cases.
2018-08-24 19:36:03 -07:00
twinaphex 4a54826d9b Remove unused variable 2018-08-16 21:14:56 +02:00
twinaphex a1d5b0fd03 Update MSVC 2012 solution 2018-08-16 20:49:31 +02:00
Hans-Kristian Arntzen 52cb0fe375 Vulkan: Fix crash when we get two create_swapchain errors in a row. 2018-07-04 20:25:03 +02:00
Hans-Kristian Arntzen f1d2dac213 Vulkan: Fix various stability issues with WSI.
Added an ifdef to trigger "hardening" which will return spurious errors
for critical WSI things like acquire next image, queue submit and
surface dimension queries.
2018-07-04 19:45:54 +02:00
Themaister f2cae17021 Vulkan: Try to avoid creating swapchains redundantly.
Win32: Only make resize events when needed.
Do not create swapchain unless necessary.
Deal better with Windows WSI workarounds.
2018-07-01 16:21:09 +02:00
Themaister c4ba8d26a0 Support multiple displays in VK_KHR_display. 2018-07-01 01:21:51 +02:00
Stuart Carnie 411bcf8bdd feat(apple): Metal support for macOS
* includes rgui
* shader support

This is a work-in-progress and there are some bugs and visual artifacts
still to be fixed.
2018-06-20 21:33:45 -07:00
Hans-Kristian Arntzen 16c797f057 Vulkan: Fix two validation errors.
- Mipgen was only transitioning the first miplevel to GENERAL.
  Fix the image barrier helper function to transition all levels and
  layers.

- Validation layer was complaining that a VkSwapchainKHR was not
  properly destroyed. After recycling the swapchain, destroy the old
  one.
2018-06-06 23:23:32 +02:00
Stuart Carnie 0a4ff225be Update Vulkan 2018-05-13 21:35:18 +02:00
twinaphex 72428a23c5 (shader_vulkan.cpp) Move some functions to vulkan_common.c 2018-04-24 07:07:58 +02:00
twinaphex 163be3ccfd (vulkan_common.c) Prevent some more collissions in the future 2018-03-28 17:41:04 +02:00
twinaphex de1efd7878 This hack is no longer needed with latest nvidia windows
drivers (390.77)
2018-01-31 18:10:53 +01:00
twinaphex 2178b6d10f Vulkan temporary workaround for swapchain recycling (nvidia) -
Both swapchain recreation methods are proper andwithin the Vulkan specs.
The differnece is retroarch follows method (apparently proposed in
vulkan samples) that "hopes" the driver will reuse some of the old
swapchain resources, while the other method destroys everything and
recreates from scratch. At the moment on Nvidia drivers the second
method is stable while the first method is unreliable in all cases
today.
2018-01-21 04:40:01 +01:00
gblues 6904101c44 Clean up trailing whitespace
== DETAILS

Really simple code cleanup, because my editor flags trailing whitespaces
and it's pretty annoying.
2017-12-12 00:24:18 -08:00
Themaister f8447c4648 Set correct buffer size. 2017-12-09 17:28:20 +01:00
Themaister 75b84b4f94 Support pending swapchain creation. 2017-12-09 17:28:20 +01:00
Themaister ac42b87400 Recreate swapchain directly if vkAcquireNextImageKHR fails. 2017-12-09 17:28:20 +01:00
Themaister 714684a4d3 Don't wait for WSI fence unless it has been signalled. 2017-12-09 17:28:20 +01:00
twinaphex d5b3104cfb Cleanups/warning fixes 2017-12-06 19:51:07 +01:00
Hans-Kristian Arntzen 5c67fc3040 Vulkan: Enable VK_KHR_sampler_mirror_clamp_to_edge extension. 2017-10-01 20:20:45 +02:00
twinaphex 9c32d03c1e (Vulkan/Win32) C89_BUILD fixes 2017-08-12 17:56:30 +02:00
twinaphex 126a5bf121 Use string_is_equal_fast/string_is_not_equal_fast 2017-05-16 04:00:37 +02:00
aliaspider 36137d22e5 Vulkan: use the command buffer provided as parameter in
vulkan_copy_staging_to_dynamic.
2017-05-15 05:35:17 +01:00
twinaphex 05e4ec733e Move uint variables 2017-04-28 21:03:04 +02:00
twinaphex 765e636214 (Vulkan) Cleanups 2017-04-24 17:21:29 +02:00
Hans-Kristian Arntzen 2d88530c98 Vulkan: Simple snow pipeline works.
Some other fixes too.
2017-02-20 20:53:59 +01:00
Hans-Kristian Arntzen 6395907887 Vulkan: Find supported composite alpha in swapchain. 2017-02-13 16:30:02 +01:00
twinaphex 374fd57270 Remove the few performance counters that depend on runloop_ctl 2017-01-25 18:15:58 +01:00
twinaphex 6661c0fb94 Rewrite performance counter stop/start/init into macros 2017-01-25 16:53:06 +01:00
twinaphex 96c8ca5a09 Header update #1 2017-01-22 13:40:32 +01:00
Hans-Kristian Arntzen 4c99809cde Vulkan: Fix VSync toggling on Windows.
Retarded bug, but haven't actually had access to a Windows machine until
now.
2016-12-17 12:06:43 +01:00
twinaphex b43f786f89 Cleanups 2016-09-08 08:15:40 +02:00
twinaphex 467451fccc Cleanup more header includes 2016-09-01 18:18:55 +02:00
twinaphex ba7d638b99 Use string_is_equal 2016-08-29 18:46:41 +02:00
Hans-Kristian Arntzen 96818a297c Vulkan: Fix validation errors with OriginalHistory.
For some reason, OriginalHistory blit happened inside a render pass.
Also add more TRANSFER_SRC_BIT caps to images as they might have to be
copied to history.
2016-08-07 01:09:15 +02:00
Hans-Kristian Arntzen 4ac9ebd579 Vulkan: Allow configuring mip/wrap/filter for LUTs.
LUTs are feature complete with CGP now.
2016-07-31 16:16:47 +02:00
Hans-Kristian Arntzen 0eca956789 Vulkan: Create image views with right amount of mip levels. 2016-07-31 14:01:39 +02:00
Hans-Kristian Arntzen 4e8e79eabd Vulkan: Add mipmapping support. 2016-07-31 13:47:10 +02:00
Hans-Kristian Arntzen 7813d40c9e Log if Vulkan debug layers are enabled. 2016-07-31 12:54:10 +02:00
Hans-Kristian Arntzen f54b0c0ff0 Vulkan: Implement swap_interval > 1.
We have to fake it by duping since Vulkan has no native support for
this.
2016-07-24 00:34:48 +02:00
Hans-Kristian Arntzen 8c1b935969 Vulkan: Implement BFI. 2016-07-24 00:07:32 +02:00
twinaphex 4e68bc0b53 CXX_BUILD fix 2016-07-21 21:54:43 +02:00
Hans-Kristian Arntzen 8569028189 Vulkan: Use manual memory management for cached/incoherent devices. 2016-07-15 16:12:30 +00:00
Hans-Kristian Arntzen f5bddd45e8 Vulkan: Don't query layout if we have optimal tiling. 2016-07-14 23:15:39 +02:00
Hans-Kristian Arntzen d382e1069e Basic VK_KHR_display integration works! :) 2016-07-07 19:28:27 +02:00
Hans-Kristian Arntzen d2fafc5451 Sketch out vulkan_create_display_surface. 2016-07-06 20:27:39 +02:00
Hans-Kristian Arntzen e9046dd06f Begin implementing VK_KHR_display. 2016-07-06 19:37:47 +02:00
twinaphex 9fab75c4b5 Cleanups; 80-char width limit 2016-06-30 07:40:25 +02:00
Hans-Kristian Arntzen c80127d29d Vulkan: Hook up async compute test more properly.
Supports multiple queues and queues from different families.
2016-06-27 20:54:53 +02:00
Hans-Kristian Arntzen 4abb0ef331 Vulkan: Cache destroy device callback. 2016-06-27 20:54:53 +02:00
Hans-Kristian Arntzen 6841b5ad00 Vulkan: Keep dylib around if caching instance. 2016-06-27 20:54:53 +02:00
Hans-Kristian Arntzen 54c1759f45 Vulkan: Make a more general purpose symbol loader.
Avoids painful manual loading and wrapping function pointers everywhere
...

Reusable for cores, so move to libretro-common.
Also update built-in Vulkan headers.
2016-06-26 13:10:58 +02:00
Hans-Kristian Arntzen 1da2e2dbab Vulkan: Hook up negotiation interface device creation. 2016-06-26 10:40:07 +02:00
Hans-Kristian Arntzen 10a6d7a458 Vulkan: Begin hooking up negotiation interface. 2016-06-25 21:01:36 +02:00
Hans-Kristian Arntzen 972a5db7ae Vulkan: Fix shader module leak. 2016-06-25 14:06:14 +02:00
Hans-Kristian Arntzen de36f572d1 Vulkan: Fix more validation issues. 2016-06-25 14:01:10 +02:00
Hans-Kristian Arntzen 07880e3f45 Vulkan: Begin hooking up validation layers.
Found lots of regressions due to bad reformatting.
2016-06-25 13:52:33 +02:00
Hans-Kristian Arntzen d043123f71 Vulkan: Add support for queue transfers in HW rendering. 2016-06-25 11:39:52 +02:00
Hans-Kristian Arntzen 82c7aa0e6f Use max swapchain image setting when creating swapchain. 2016-06-25 09:52:46 +02:00
Hans-Kristian Arntzen 21be54501b Log which present modes are supported. 2016-06-13 22:00:32 +02:00
Hans-Kristian Arntzen e7b4f4fd4d Fix various Android Vulkan issues.
Was getting bogus swapchain width/height causing weird issues.
Also, create swapchain after swap interval is correctly set.
2016-06-13 19:51:44 +02:00
Hans-Kristian Arntzen c374c9853d Some potential fixes for Android Vulkan. 2016-06-07 01:43:14 +02:00
twinaphex 6bd7fd482c Performance counters got function name changes 2016-05-21 13:14:25 +02:00
Twinaphex 72e1a33715 Merge pull request #3016 from Themaister/master
Add perf counter to fence waits.
2016-05-21 12:36:25 +02:00
Hans-Kristian Arntzen 218ecc07c1 Add perf counter to fence waits.
Makes it easy to check if we're GPU bound or not.
2016-05-21 12:13:46 +02:00
twinaphex 0d833c903a Merge remote-tracking branch 'origin/vulkan-windows' 2016-05-16 07:51:01 +02:00
twinaphex fc56f6ebdb Add some HAVE_THREADS ifdefs 2016-05-11 10:10:30 +02:00
Hans-Kristian Arntzen d723411436 De ioctl video_driver. 2016-05-08 14:00:51 +02:00
Hans-Kristian Arntzen 464a4add66 XMB ribbon works in Vulkan. 2016-05-08 11:11:28 +02:00
Hans-Kristian Arntzen e04bbfbae2 Vulkan: Add more logging ... 2016-03-29 17:57:13 +02:00
Hans-Kristian Arntzen c7b96b75b8 Vulkan: Add more error logging. 2016-03-29 17:36:13 +02:00
Hans-Kristian Arntzen 8ade7fb274 Vulkan: Attempt Windows backend support.
Completely bind since I cannot test myself, but compiles.
2016-03-29 15:50:12 +02:00
Hans-Kristian Arntzen ca62f342b0 Vulkan: Fix original history.
Verified to work now.
2016-03-25 18:50:49 +01:00