aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
AgeCommit message (Collapse)Author
2019-12-13maxwell_to_vk: Improve image format table and add more formatsReinUsesLisp
A1B5G5R5 uses A1R5G5B5. This is flipped with image view swizzles; flushing is still not properly implemented on Vulkan for this particular format.
2019-12-13maxwell_to_vk: Implement more vertex formatsReinUsesLisp
2019-12-13maxwell_to_vk: Implement more primitive topologiesReinUsesLisp
Add an extra argument to query device capabilities in the future. The intention behind this is to use native quads, quad strips, line loops and polygons if these are released for Vulkan.
2019-12-13maxwell_to_vk: Approach GL_CLAMP closer to the GL specReinUsesLisp
The OpenGL spec defines GL_CLAMP's formula similarly to CLAMP_TO_EDGE and CLAMP_TO_BORDER depending on the filter mode used. It doesn't exactly behave like this, but it's the closest we can get with what Vulkan offers without emulating it by injecting shader code.
2019-12-13maxwell_to_vk: Use VK_EXT_index_type_uint8 when availableReinUsesLisp
2019-12-10shader: Implement MEMBAR.GLReinUsesLisp
Implement using memoryBarrier in GLSL and OpMemoryBarrier on SPIR-V.
2019-12-10vk_shader_decompiler: Fix build issues on old gcc versionsReinUsesLisp
2019-12-09vk_shader_decompiler: Reduce YNegate's severityReinUsesLisp
2019-12-09shader_ir/other: Implement S2R InvocationIdReinUsesLisp
2019-12-09vk_shader_decompiler: Misc changesReinUsesLisp
Update Sirit and its usage in vk_shader_decompiler. Highlights: - Implement tessellation shaders - Implement geometry shaders - Implement some missing features - Use native half float instructions when available.
2019-12-09vk_device: Misc changesReinUsesLisp
- Setup more features and requirements. - Improve logging for missing features. - Collect telemetry parameters. - Add queries for more image formats. - Query push constants limits. - Optionally enable some extensions.
2019-12-08externals: Update Vulkan-HeadersReinUsesLisp
2019-12-06vk_swapchain: Add support for swapping sRGBReinUsesLisp
We don't know until the game is running if it's using an sRGB color space or not. Add support for hot-swapping swapchain surface formats.
2019-12-06Merge pull request #3109 from FernandoS27/new-instrbunnei
Implement FLO & TXD Instructions on GPU Shaders
2019-11-26core/memory: Migrate over GetPointer()Lioncash
With all of the interfaces ready for migration, it's trivial to migrate over GetPointer().
2019-11-26core: Prepare various classes for memory read/write migrationLioncash
Amends a few interfaces to be able to handle the migration over to the new Memory class by passing the class by reference as a function parameter where necessary. Notably, within the filesystem services, this eliminates two ReadBlock() calls by using the helper functions of HLERequestContext to do that for us.
2019-11-22video_core: Unify ProgramType and ShaderStage into ShaderTypeReinUsesLisp
2019-11-14texture_cache: Drop abstracted ComponentTypeReinUsesLisp
Abstracted ComponentType was not being used in a meaningful way. This commit drops its usage. There is one place where it was being used to test compatibility between two cached surfaces, but this one is implied in the pixel format. Removing the component type test doesn't change the behaviour.
2019-11-14Shader_IR: Implement TXD instruction.Fernando Sahmkow
2019-11-14Shader_IR: Implement FLO instruction.Fernando Sahmkow
2019-11-07shader_ir/warp: Implement FSWZADDReinUsesLisp
2019-11-07gl_shader_decompiler: Reimplement shuffles with platform agnostic intrinsicsReinUsesLisp
2019-10-25Shader_IR: Implement Fast BRX and allow multi-branches in the CFG.Fernando Sahmkow
2019-10-22Merge pull request #2983 from lioncash/fallthroughFernando Sahmkow
gl_shader_decompiler/vk_shader_decompiler: Resolve implicit fallthrough cases
2019-10-17vk_shader_decompiler: Mark operator() function parameters as const referencesLioncash
These parameters aren't actually modified in any way, so they can be made const references.
2019-10-15vk_shader_decompiler: Resolve fallthrough within ExprDecompiler's ↵Lioncash
ExprCondCode operator() This would previously result in NeverExecute and UnusedIndex being treated as regular predicates.
2019-10-04Shader_Ir: Address Feedback and clang format.Fernando Sahmkow
2019-10-04vk_shader_decompiler: Correct Branches inside conditionals.Fernando Sahmkow
2019-10-04vk_shader_decompiler: Clean code and be const correct.Fernando Sahmkow
2019-10-04vk_shader_compiler: Don't enclose branches with if(true) to avoid crashing AMDFernando Sahmkow
2019-10-04vk_shader_compiler: Correct SPIR-V AST DecompilingFernando Sahmkow
2019-10-04Shader_IR: allow else derivation to be optional.Fernando Sahmkow
2019-10-04vk_shader_compiler: Implement the decompiler in SPIR-VFernando Sahmkow
2019-09-23Merge pull request #2869 from ReinUsesLisp/suldbunnei
shader/image: Implement SULD and fix SUATOM
2019-09-22video_core: Implement RGBX16F PixelFormatFearlessTobi
2019-09-21gl_shader_decompiler: Use uint for images and fix SUATOMReinUsesLisp
In the process remove implementation of SUATOM.MIN and SUATOM.MAX as these require a distinction between U32 and S32. These have to be implemented with imageCompSwap loop.
2019-09-21shader/image: Implement SULD and remove irrelevant codeReinUsesLisp
* Implement SULD as float. * Remove conditional declaration of GL_ARB_shader_viewport_layer_array.
2019-09-17shader_ir/warp: Implement SHFLReinUsesLisp
2019-09-14Merge pull request #2858 from ReinUsesLisp/vk-deviceFernando Sahmkow
vk_device: Add miscellaneous features and minor style changes
2019-09-13vk_device: Add miscellaneous features and minor style changesReinUsesLisp
* Increase minimum Vulkan requirements * Require VK_EXT_vertex_attribute_divisor * Require depthClamp, samplerAnisotropy and largePoints features * Search and expose VK_KHR_uniform_buffer_standard_layout * Search and expose VK_EXT_index_type_uint8 * Search and expose native float16 arithmetics * Track current driver with VK_KHR_driver_properties * Query and expose SSBO alignment * Query more image formats * Improve logging overall * Minor style changes * Minor rephrasing of commentaries
2019-09-10shader/image: Implement SUATOM and fix SUSTReinUsesLisp
2019-08-21shader_ir: Implement VOTEReinUsesLisp
Implement VOTE using Nvidia's intrinsics. Documentation about these can be found here https://developer.nvidia.com/reading-between-threads-shader-intrinsics Instead of using portable ARB instructions I opted to use Nvidia intrinsics because these are the closest we have to how Tegra X1 hardware renders. To stub VOTE on non-Nvidia drivers (including nouveau) this commit simulates a GPU with a warp size of one, returning what is meaningful for the instruction being emulated: * anyThreadNV(value) -> value * allThreadsNV(value) -> value * allThreadsEqualNV(value) -> true ballotARB, also known as "uint64_t(activeThreadsNV())", emits VOTE.ANY Rd, PT, PT; on nouveau's compiler. This doesn't match exactly to Nvidia's code VOTE.ALL Rd, PT, PT; Which is emulated with activeThreadsNV() by this commit. In theory this shouldn't really matter since .ANY, .ALL and .EQ affect the predicates (set to PT on those cases) and not the registers.
2019-07-20Shader_Ir: Implement F16 Variants of F2F, F2I, I2F.Fernando Sahmkow
This commit takes care of implementing the F16 Variants of the conversion instructions and makes sure conversions are done.
2019-07-19shader/half_set_predicate: Fix HSETP2 implementationReinUsesLisp
2019-07-15Merge pull request #2695 from ReinUsesLisp/layer-viewportFernando Sahmkow
gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shaders
2019-07-11Merge pull request #2609 from FernandoS27/new-scanbunnei
Implement a New Shader Scanner, Decompile Flow Stack and implement BRX BRA.CC
2019-07-10Merge pull request #2686 from ReinUsesLisp/vk-schedulerbunnei
vk_scheduler: Drop execution context in favor of views
2019-07-09shader_ir: Implement BRX & BRA.CCFernando Sahmkow
2019-07-07gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shadersReinUsesLisp
This commit implements gl_ViewportIndex and gl_Layer in vertex and geometry shaders. In the case it's used in a vertex shader, it requires ARB_shader_viewport_layer_array. This extension is available on AMD and Nvidia devices (mesa and proprietary drivers), but not available on Intel on any platform. At the moment of writing this description I don't know if this is a hardware limitation or a driver limitation. In the case that ARB_shader_viewport_layer_array is not available, writes to these registers on a vertex shader are ignored, with the appropriate logging.
2019-07-07vk_sampler_cache: Remove unused includesLioncash
These are no longer used within this header, so they can be removed.