summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_shader_decompiler.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* vk_rasterizer: Implement storage texelsReinUsesLisp2020-06-021-3/+6
| | | | | | This is the equivalent of an image buffer on OpenGL. - Used by Octopath Traveler
* vk_rasterizer: Implement constant attributesReinUsesLisp2020-05-131-1/+2
| | | | | | | | | | Constant attributes (in OpenGL known disabled attributes) are not supported on Vulkan, even with extensions. To emulate this behavior we return zero on reads from disabled vertex attributes in shader code. This has no caching cost because attribute formats are not dynamic state on Vulkan and we have to store it in the pipeline cache anyway. - Fixes Animal Crossing: New Horizons terrain borders
* vulkan: Remove unnecessary includesLioncash2020-04-291-4/+0
| | | | | | | Reduces some header churn and reduces rebuilds when some header internals change. While we're at it we can also resolve a missing include in buffer_cache.
* vk_shader_decompiler: Use registry for specializationReinUsesLisp2020-03-131-9/+4
|
* vk_shader_decompiler: Disable default values on unwritten render targetsReinUsesLisp2020-01-241-3/+0
| | | | | | | | | Some games like The Legend of Zelda: Breath of the Wild assign render targets without writing them from the fragment shader. This generates Vulkan validation errors, so silence these I previously introduced a commit to set "vec4(0, 0, 0, 1)" for these attachments. The problem is that this is not what games expect. This commit reverts that change.
* vk_shader_decompiler: Skip NDC correction when it is nativeReinUsesLisp2019-12-191-0/+1
| | | | | Avoid changing gl_Position when the NDC used by the game is [0, 1] (Vulkan's native).
* vk_shader_decompiler: Normalize output fragment attachmentsReinUsesLisp2019-12-191-0/+3
| | | | | | Some games write from fragment shaders to an unexistant framebuffer attachment or they don't write to one when it exists in the framebuffer. Fix this by skipping writes or adding zeroes.
* vk_shader_decompiler: Misc changesReinUsesLisp2019-12-101-20/+54
| | | | | | | | 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.
* video_core: Unify ProgramType and ShaderStage into ShaderTypeReinUsesLisp2019-11-231-1/+1
|
* vk_shader_decompiler: Misc fixesReinUsesLisp2019-05-261-2/+6
| | | | | | | | | | | | 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.
* vk_shader_decompiler: Declare and stub interface for a SPIR-V decompilerReinUsesLisp2019-04-101-0/+80