Commit Graph

151 Commits

Author SHA1 Message Date
twinaphex 920e89a506 Move pass set texture to vulkan_common.c 2020-01-22 14:27:24 +01:00
twinaphex 376ad6d61d move more C functions over to gl_core.c 2020-01-22 13:12:00 +01:00
twinaphex 90874b434e (shader_vulkan.cpp) Move more C code to vulkan_common.c 2020-01-22 12:09:08 +01:00
twinaphex b8cd37aef7 (shader_vulkan.cpp) Get rid of ConfigDeleter 2020-01-22 11:29:40 +01:00
twinaphex f853632260 Move framebuffer generate_mips function to vulkan_common.c 2020-01-22 10:52:20 +01:00
twinaphex e9c73bd9a6 (Vulkan) Move more C code to vulkan_common.c 2020-01-22 10:41:38 +01:00
twinaphex ef27a660a7 (shader vulkan) Cleanups - moving C code out of the C++ file 2020-01-22 10:11:42 +01:00
LazyBumHorse a882901e39 save unmodified auto-shaders as a reference instead of a copy, see:
- implement #reference directive for auto-shaders
 - replace usual preset saving and loading functions with video_shader_read_preset() and video_shader_write_preset()
 - apply saved presets automatically for console menus
 - move auto-shader saving logic from menus into menu_shader.c menu_shader_manager_save_auto_preset()
 - refactor menu_shader_manager_save_preset() into menu_shader_manager_save_preset_internal()
2019-08-22 16:57:28 +02:00
twinaphex aaeff6c888 Move C code over to glslang_util.c 2019-08-18 18:01:21 +02:00
LazyBumHorse f8b92770d4 simplify video_shader_read_conf_preset() calls 2019-07-21 18:15:28 +02:00
LazyBumHorse 2245af23e9 much improved handling of relative shader paths
- save texture paths in relative format as well
 - always write portable relative paths on Windows using '/' instead of '\'
 - remove an ancient piece of code that could sometimes fail loading relative paths
 - fix absolute path handling between different drives for Windows
 - integrate video_shader_resolve_relative() into video_shader_parse_* functions
2019-07-20 18:29:46 +02:00
twinaphex da29fd61bb (shader_vulkan.cpp) Fix another 'declaration hides parameter' warning 2019-07-18 19:25:25 +02:00
twinaphex 41a2fabb4e Create config_file_new_from_path_to_string 2019-07-18 12:03:50 +02:00
twinaphex ee3208ac39 Integrate video_driver.c into retroarch.c 2019-06-17 15:10:22 +02:00
twinaphex b26a5badfd Fix typo 2019-06-15 10:00:20 +02:00
twinaphex f60306b232 Rename read_conf_cgp/write_conf_cgp to
read_conf_preset/write_conf_preset
2019-06-15 09:00:35 +02:00
LazyBumHorse 4c272973f1 fix frame_direction type for vulkan 2019-05-29 15:29:37 +02:00
LazyBumHorse ee3cda8abf added "FrameDirection" slang semantic and implementation for glcore and vulkan 2019-05-24 22:11:12 +02:00
twinaphex bc2bdd5734 config_file_read not needed anymore 2019-04-30 13:37:10 +02:00
twinaphex 0bae77d199 (Shaders Vulkan/GLcore) Cleanups 2019-04-25 02:37:13 +02:00
twinaphex 15afaedaa8 (Shaders vulkan/GLcore) Simplify 2019-04-25 02:34:26 +02:00
twinaphex e40c3ec07b (Shader Vulkan/GL core) Make code more the same 2019-04-25 01:42:56 +02:00
twinaphex 55b53929db (shader GL/Vulkan) Cleanups 2019-04-24 23:45:57 +02:00
twinaphex 604403fe90 (shader_vulkan) Simplifications - start making shader_gl_Core
and shader_vulkan more alike
2019-04-24 23:13:42 +02:00
twinaphex 955a149ce9 Use config_file_read where we can assume we are reading a file 2019-04-22 01:56:24 +02:00
twinaphex 3619fae2d9 (LGTM) Silence some warnings 2019-04-13 02:15:26 +02:00
Themaister 1ba8c626ed Minor build fixes. 2019-03-09 12:42:23 +01:00
Themaister 3029f96511 Add a new "glcore" driver with slang support.
This driver should sunset the old gl2 driver, but that driver will
likely live on to support really ancient and terrible GL stacks.
All the worst legacy cruft has been ripped out, and it's almost a decent
backend now.

Requirements for slang are GL 3.2+ or GLES3.
Some shaders require features which are not directly compatible with
GLES2 or legacy GL.

This driver shares a lot of concepts from the Vulkan driver.
The slang shader stack and SPIRV-Cross are used to implement the shader
spec, and the menu shaders are also shared with Vulkan.
2019-03-09 12:30:49 +01:00
orbea 28ff4b391a Clean up white space. 2019-02-03 16:00:50 -08:00
twinaphex 1a0d5030f9 shader_vulkan.cpp - doesn't need math.h 2019-01-19 23:02:48 +01:00
orbea e062b98088 Remove trailing blank lines.
find . -type f -exec sed -i '${/^[[:space:]]*$/d;}' {} \+
2019-01-17 19:39:38 -08:00
twinaphex 6ca9afbd57 Silence more warnings with CXX_BUILD 2019-01-12 18:51:06 +01:00
orbea 4bc0aacd8b Fix clang -Wreorder warnings.
gfx/drivers_shader/shader_vulkan.cpp:1109:6: warning: field 'id' will be initialized after field 'device' [-Wreorder]
   : id(move(id)),
     ^
gfx/drivers_shader/shader_vulkan.cpp:2107:4: warning: field 'device' will be initialized after field 'memory_properties' [-Wreorder]
   device(device),
   ^
2 warnings generated.
2018-12-16 16:16:07 -08:00
Themaister 124d9b57d6 Vulkan: Fix blue/red flip when using HW rendered cores with history.
Was using frontend format of BGRA8 when core was RGBA8, with blind
vkCmdCopyImage. Fix is to use the same format as core is pushing to
history buffer.
2018-12-06 11:38:30 +01:00
twinaphex 72428a23c5 (shader_vulkan.cpp) Move some functions to vulkan_common.c 2018-04-24 07:07:58 +02:00
twinaphex 311de8138e (Griffin) shader_vulkan - Uniquely name set_unique_map to avoid collision 2018-02-03 17:20:23 +01:00
aliaspider 3865856aa2 (D3D11) add support for `#pragma format` in slang shaders. 2018-02-01 15:07:12 +01:00
aliaspider 5bc78d3ad5 (D3D11) Implement slang shader specification using Spirv-Cross.
(incomplete)
2018-01-31 01:08:36 +01:00
twinaphex 59b3344e72 Combine video_driver.c and video_shader_driver.c 2017-05-18 14:47:24 +02:00
twinaphex e0c0815f42 (shader_vulkan.cpp) cleanups - don't use memset 2017-05-10 06:40:21 +02:00
twinaphex 1b302d6e40 (shader_vulkan.cpp) Cleanups 2017-05-10 06:31:06 +02:00
Hans-Kristian Arntzen 2d88530c98 Vulkan: Simple snow pipeline works.
Some other fixes too.
2017-02-20 20:53:59 +01:00
twinaphex 96c8ca5a09 Header update #1 2017-01-22 13:40:32 +01:00
twinaphex 0354ced675 Style nits 2017-01-17 19:02:49 +01:00
twinaphex 68d484bf60 Set supports_rgba before calling image_texture_load 2017-01-08 21:49:23 +01:00
Hans-Kristian Arntzen 53c30cacd5 Correctly check errors if preset cannot be found. 2016-12-03 16:05:04 +01:00
twinaphex b3ec735e75 Silence some more scan-build warnings 2016-09-25 15:25:20 +02:00
twinaphex 6002fd9f2a (shader_vulkan.cpp) Nits 2016-09-16 17:50:57 +02:00
twinaphex 99aae8537b Use string_is_equal/stdstring.h 2016-09-16 17:33:18 +02:00
twinaphex 075aea2289 Header include cleanups 2016-09-06 00:56:00 +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 fb407796e9 Vulkan: Add push constant support to slang.
Usually, the UBO is very small, so we can fit everything in fast-access
uniforms.
2016-08-02 12:51:30 +02:00
Hans-Kristian Arntzen 00de5aa2f0 Vulkan: Filter out duplicated parameters. 2016-08-01 22:10:14 +02:00
Hans-Kristian Arntzen efd3067903 Vulkan: Hook up shader parameters. 2016-08-01 22:10:14 +02:00
Hans-Kristian Arntzen a50c204d5e Vulkan: Begin parsing parameters. 2016-08-01 22:10:14 +02:00
Hans-Kristian Arntzen bdcbc56507 Vulkan: Fix validation errors. 2016-07-31 19:59:36 +02:00
Hans-Kristian Arntzen e61ec38543 Vulkan: Mipmapped FBOs work. 2016-07-31 19:52:15 +02:00
Hans-Kristian Arntzen a48ba6c68b Vulkan: Add mipmapping support to Framebuffer class. 2016-07-31 19:23:42 +02:00
Hans-Kristian Arntzen 9a613ef8bf Vulkan: Actually bind correct part of the UBO. 2016-07-31 18:25:42 +02:00
Hans-Kristian Arntzen c0e752c53c Persistently map filter chain UBO. 2016-07-31 18:19:35 +02:00
Hans-Kristian Arntzen 10e864b26b Hook up wrapping modes. 2016-07-31 16:32:55 +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 e846bd4955 Vulkan: Hook up preliminary support for mip/wrapping modes. 2016-07-31 15:42:57 +02:00
Hans-Kristian Arntzen e57997bb82 Make image barriers hit the entire mipchain. 2016-07-31 13:05:07 +02:00
Hans-Kristian Arntzen cbca9513ab Basic LUT work. 2016-07-31 13:01:31 +02:00
Hans-Kristian Arntzen f208bba41e Add USER semantic to match user textures. 2016-07-31 12:39:07 +02:00
Hans-Kristian Arntzen d39a3619d6 Begin implementation of LUTs in Vulkan. 2016-07-31 12:26:14 +02:00
Hans-Kristian Arntzen e35191765c Vulkan: Fix PassOutput.
Oddly enough it worked during testing, but turns out it was never set
:')
2016-07-23 23:39:57 +02:00
Hans-Kristian Arntzen 4b7cadbae7 Vulkan: Fix silly bug with alias handling. 2016-07-23 23:23:22 +02:00
twinaphex 2a9bf91e0d Use MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE 2016-06-29 02:40:05 +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 b013a9c863 Vulkan: Replace prebaked shaders with glslc -mfmt=c.
Far more clean and avoids illegal punning.
2016-06-25 14:55:03 +02:00
Hans-Kristian Arntzen de36f572d1 Vulkan: Fix more validation issues. 2016-06-25 14:01:10 +02:00
Hans-Kristian Arntzen 8c2664e5fb Vulkan: Add explicit render target format support.
Supports all required formats in Vulkan 1.0 as well as GLES 3.x/GL 3.x
(for future).
2016-03-26 23:49:57 +01:00
Hans-Kristian Arntzen 82db5a4950 Vulkan: Use single UBO for all passes and sync indices.
Significantly reduces number of allocations.
2016-03-26 19:39:51 +01:00
Hans-Kristian Arntzen 200b88c3ca Vulkan: Add detection for non-causal filter chains. 2016-03-26 18:27:17 +01:00
Hans-Kristian Arntzen 7d5eb2bc27 Vulkan: Add pass name handling.
Add #pragma name.
2016-03-26 18:00:09 +01:00
Hans-Kristian Arntzen 21c7ff99d1 Vulkan: Add semantic name remapping.
Will be useful for custom named passes.
2016-03-25 23:15:23 +01:00
Hans-Kristian Arntzen 3838b3c045 Vulkan: Add frame count suport. 2016-03-25 22:06:31 +01:00
Hans-Kristian Arntzen b7b03c531a Vulkan: Use single VBO in filter chain.
No need to have two separate buffers here.
2016-03-25 19:23:58 +01:00
Hans-Kristian Arntzen 939bc70ac6 Vulkan: Properly resize and clear feedback textures. 2016-03-25 19:16:39 +01:00
Hans-Kristian Arntzen ca62f342b0 Vulkan: Fix original history.
Verified to work now.
2016-03-25 18:50:49 +01:00
Hans-Kristian Arntzen 79f5e9ca98 Vulkan: Add logging about feedback/history. 2016-03-25 17:45:30 +01:00
Hans-Kristian Arntzen 92601a0fb8 Vulkan: Set arrayed semantic textures. 2016-03-25 17:39:24 +01:00
Hans-Kristian Arntzen 80df588cf0 Vulkan: Implement feedback/history. 2016-03-25 15:32:04 +01:00
Hans-Kristian Arntzen e35e0e0f23 Vulkan: Nits. 2016-03-25 14:53:47 +01:00
Hans-Kristian Arntzen 83ab0d799f Vulkan: Begin implementing history and feedback. 2016-03-25 14:51:37 +01:00
Hans-Kristian Arntzen 4f3ade1b95 Vulkan: Begin sketching out support for complete filter chain. 2016-03-25 13:26:36 +01:00
Hans-Kristian Arntzen d5dc50c436 Vulkan: Allow no UBO even if it makes little sense. 2016-03-23 00:19:24 +01:00
Hans-Kristian Arntzen c17755ab1a Vulkan: Default construct slang_reflection instead.
We will use non-POD when dealing with user-defined inputs.
2016-03-23 00:19:24 +01:00
Hans-Kristian Arntzen 39149b36b2 Vulkan: Clean up semantic parsing a lot.
Split up into two kinds of semantics, textured and not.
2016-03-23 00:19:24 +01:00
Hans-Kristian Arntzen 6add83e3ec Vulkan: Use reflection output for source/original.
Fix some logging messages in reflection.
2016-03-21 16:18:43 +01:00
Hans-Kristian Arntzen 1822f3bf90 Vulkan: Begin hooking up SPIR-V reflection. 2016-03-21 15:12:12 +01:00
Hans-Kristian Arntzen 5dcb78ea21 Vulkan: Include spir2cross in shader_vulkan.cpp. 2016-03-21 11:56:09 +01:00
Hans-Kristian Arntzen 840278796e Vulkan: Refactor out common resources in filter chain. 2016-03-21 11:45:59 +01:00
Hans-Kristian Arntzen 84923a0465 Vulkan: Tighten up pipeline barrier usage.
Lots of memory barriers used with TOP_OF_PIPE which is not valid.
2016-03-21 10:02:00 +01:00
Themaister bce0d55a43 Vulkan: Allocate correct number of descriptors.
Have to allocate for entire pool, not per set.
2016-03-01 09:44:18 +01:00
twinaphex de27720044 We don't need to link against libvulkan.so implicitly anymore 2016-03-01 02:47:16 +01:00
twinaphex ae5d7849af (shader_vulkan.cpp) Don't have to include general.h for this 2016-02-29 19:23:51 +01:00
twinaphex 4bb3f35a02 80-char width limit style nits 2016-02-20 16:36:54 +01:00