aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
AgeCommit message (Collapse)Author
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.
2019-07-07video_core: Add missing override specifiersLioncash
2019-07-07vk_scheduler: Drop execution context in favor of viewsReinUsesLisp
Instead of passing by copy an execution context through out the whole Vulkan call hierarchy, use a command buffer view and fence view approach. This internally dereferences the command buffer or fence forcing the user to be unable to use an outdated version of it on normal usage. It is still possible to keep store an outdated if it is casted to VKFence& or vk::CommandBuffer. While changing this file, add an extra parameter for Flush and Finish to allow releasing the fence from this calls.
2019-06-20shader: Decode SUST and implement backing image functionalityReinUsesLisp
2019-06-15Merge pull request #2538 from ReinUsesLisp/ssy-pbkZach Hilman
shader: Split SSY and PBK stack
2019-06-07Merge pull request #2514 from ReinUsesLisp/opengl-compatZach Hilman
video_core: Drop OpenGL core in favor of OpenGL compatibility
2019-06-07shader: Split SSY and PBK stackReinUsesLisp
Hardware testing revealed that SSY and PBK push to a different stack, allowing code like this: SSY label1; PBK label2; SYNC; label1: PBK; label2: EXIT;
2019-06-05shader: Use shared_ptr to store nodes and move initialization to fileReinUsesLisp
Instead of having a vector of unique_ptr stored in a vector and returning star pointers to this, use shared_ptr. While changing initialization code, move it to a separate file when possible. This is a first step to allow code analysis and node generation beyond the ShaderIR class.
2019-06-05Merge pull request #2520 from ReinUsesLisp/vulkan-refreshbunnei
vk_device,vk_shader_decompiler: Miscellaneous changes
2019-05-30maxwell_to_gl: Use GL_CLAMP to emulate Clamp wrap modeReinUsesLisp
2019-05-26vk_device: Let formats array type be deducedReinUsesLisp
2019-05-26vk_shader_decompiler: Misc fixesReinUsesLisp
Fix missing OpSelectionMerge instruction. This caused devices loses on most hardware, Intel didn't care. Fix [-1;1] -> [0;1] depth conversions. Conditionally use VK_EXT_scalar_block_layout. This allows us to use non-std140 layouts on UBOs. Update external Vulkan headers.
2019-05-26vk_device: Enable features when available and misc changesReinUsesLisp
Keeps track of native ASTC support, VK_EXT_scalar_block_layout availability and SSBO range. Check for independentBlend and vertexPipelineStorageAndAtomics as a required feature. Always enable it. Use vk::to_string format to log Vulkan enums. Style changes.
2019-05-20shader: Implement S2R Tid{XYZ} and CtaId{XYZ}ReinUsesLisp
2019-05-19Merge pull request #2441 from ReinUsesLisp/al2pbunnei
shader: Implement AL2P and ALD.PHYS
2019-05-14Merge pull request #2461 from lioncash/unused-varMat M
video_core: Remove a few unused variables and functions
2019-05-13Merge pull request #2413 from FernandoS27/opt-gpuRodrigo Locatti
Rasterizer Cache: refactor flushing & optimize memory usage of surfaces
2019-05-09renderer_vulkan/vk_shader_decompiler: Remove unused variable from ↵Lioncash
DeclareInternalFlags()
2019-05-02shader: Remove unused AbufNode Ipa modeReinUsesLisp
2019-04-28Merge pull request #2322 from ReinUsesLisp/wswitchbunnei
video_core: Silent -Wswitch warnings
2019-04-21Rasterizer Cache: Use a temporal storage for Surfaces loading/flushing.Fernando Sahmkow
This PR should heavily reduce memory usage since temporal buffers are no longer stored per Surface but instead managed by the Rasterizer Cache.
2019-04-19Merge pull request #2409 from ReinUsesLisp/half-floatsbunnei
shader_ir/decode: Miscellaneous fixes to half-float decompilation
2019-04-19RasterizerCache Redesign: Flush Fernando Sahmkow
flushing is now responsability of children caches instead of the cache object. This change will allow the specific cache to pass extra parameters on flushing and will allow more flexibility.
2019-04-18video_core: Silent -Wswitch warningsReinUsesLisp
2019-04-17Merge pull request #2318 from ReinUsesLisp/sampler-cachebunnei
gl_sampler_cache: Port sampler cache to OpenGL
2019-04-15vk_shader_decompiler: Add missing operationsReinUsesLisp
2019-04-15shader_ir/decode: Fix half float pre-operations and remove MetaHalfArithmeticReinUsesLisp
Operations done before the main half float operation (like HAdd) were managing a packed value instead of the unpacked one. Adding an unpacked operation allows us to drop the per-operand MetaHalfArithmetic entry, simplifying the code overall.
2019-04-15shader_ir/decode: Implement half float saturationReinUsesLisp
2019-04-14shader_ir: Implement STG, keep track of global memory usage and flushReinUsesLisp
2019-04-10vk_shader_decompiler: Implement flow primitivesReinUsesLisp
2019-04-10vk_shader_decompiler: Implement most common texture primitivesReinUsesLisp
2019-04-10vk_shader_decompiler: Implement texture decompilation helper functionsReinUsesLisp
2019-04-10vk_shader_decompiler: Implement Assign and LogicalAssignReinUsesLisp
2019-04-10vk_shader_decompiler: Implement non-OperationCode visitsReinUsesLisp