summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2020-01-02yuzu: Remove Maxwell debuggerReinUsesLisp
This was carried from Citra and wasn't really used on yuzu. It also adds some runtime overhead. This commit removes it from yuzu's codebase.
2020-01-01Merge pull request #3243 from ReinUsesLisp/topologiesbunnei
maxwell_to_gl: Implement missing primitive topologies
2019-12-31Merge pull request #3239 from ReinUsesLisp/p2rbunnei
shader/p2r: Implement P2R Pr
2019-12-30Merge pull request #3248 from ReinUsesLisp/vk-imageFernando Sahmkow
vk_image: Add an image object abstraction
2019-12-30vk_image: Avoid unnecesary equalsRodrigo Locatti
2019-12-30Merge pull request #3249 from ReinUsesLisp/vk-staging-buffer-poolFernando Sahmkow
vk_staging_buffer_pool: Add a staging pool for temporary operations
2019-12-29vk_staging_buffer_pool: Initialize last epoch to zeroRodrigo Locatti
2019-12-28Merge pull request #3250 from ReinUsesLisp/empty-fragmentFernando Sahmkow
gl_rasterizer: Allow rendering without fragment shader
2019-12-26Merge pull request #3228 from ReinUsesLisp/ptpbunnei
shader/texture: Implement AOFFI and PTP for TLD4 and TLD4S
2019-12-26gl_rasterizer: Allow rendering without fragment shaderReinUsesLisp
Rendering without a fragment shader is usually used in depth-only passes.
2019-12-25vk_staging_buffer_pool: Add a staging pool for temporary operationsReinUsesLisp
The job of this abstraction is to provide staging buffers for temporary operations. Think of image uploads or buffer uploads to device memory. It automatically deletes unused buffers.
2019-12-25vk_image: Add an image object abstractionReinUsesLisp
This object's job is to contain an image and manage its transitions. Since Nvidia hardware doesn't know what a transition is but Vulkan requires them anyway, we have to state track image subresources individually. To avoid the overhead of tracking each subresource in images with many subresources (think of cubemap arrays with several mipmaps), this commit tracks when subresources have diverged. As long as this doesn't happen we can check the state of the first subresource (that will be shared with all subresources) and update accordingly. Image transitions are deferred to the scheduler command buffer.
2019-12-25Merge pull request #3244 from ReinUsesLisp/vk-fpsFernando Sahmkow
fixed_pipeline_state: Define structure and loaders
2019-12-24Merge pull request #3236 from ReinUsesLisp/rasterize-enablebunnei
gl_rasterizer: Implement RASTERIZE_ENABLE
2019-12-24fixed_pipeline_state: Define symetric operator!= and mark as noexceptReinUsesLisp
Marks as noexcept Hash, operator== and operator!= for consistency.
2019-12-22fixed_pipeline_state: Define structure and loadersReinUsesLisp
The intention behind this hasheable structure is to describe the state of fixed function pipeline state that gets compiled to a single graphics pipeline state object. This is all dynamic state in OpenGL but Vulkan wants it in an immutable state, even if hardware can edit it freely. In this commit the structure is defined in an optimized state (it uses booleans, has paddings and many data entries that can be packed to single integers). This is intentional as an initial implementation that is easier to debug, implement and review. It will be optimized in later stages, or it might change if Vulkan gets more dynamic states.
2019-12-22maxwell_3d: Add depth bounds registersReinUsesLisp
2019-12-22maxwell_to_gl: Implement missing primitive topologiesReinUsesLisp
Many of these topologies are exclusively available in OpenGL.
2019-12-22Merge pull request #3241 from ReinUsesLisp/gl-shader-cachebunnei
gl_shader_cache: Style changes
2019-12-22Merge pull request #3238 from ReinUsesLisp/vk-resource-managerbunnei
vk_resource_manager: Catch device losses and other changes
2019-12-22Merge pull request #3203 from FernandoS27/tex-cache-fixesbunnei
Texture Cache: Add HLE methods for building 3D textures
2019-12-22Merge pull request #3237 from ReinUsesLisp/vk-shader-decompilerFernando Sahmkow
vk_shader_decompiler: Misc changes
2019-12-22Texture Cache: Improve documentationFernando Sahmkow
2019-12-22Texture Cache: Address FeedbackFernando Sahmkow
2019-12-22Texture Cache: Add HLE methods for building 3D textures within the GPU in ↵Fernando Sahmkow
certain scenarios. This commit adds a series of HLE methods for handling 3D textures in general. This helps games that generate 3D textures on every frame and may reduce loading times for certain games.
2019-12-22Merge pull request #3230 from ReinUsesLisp/vk-emu-shadersFernando Sahmkow
renderer_vulkan/shader: Add helper GLSL shaders
2019-12-22Merge pull request #3240 from ReinUsesLisp/decomp-cond-codeFernando Sahmkow
vk_shader_decompiler: Use Visit instead of reimplementing it
2019-12-21Merge pull request #3235 from ReinUsesLisp/ldg-u8bunnei
shader/memory: Implement LDG.U8 and unaligned U8 loads
2019-12-20gl_shader_cache: Update commentary for shared memoryReinUsesLisp
Remove false commentary. Not dividing by 4 the size of shared memory is not a hack; it describes the number of integers, not bytes. While we are at it sort the generated code to put preprocessor lines on the top.
2019-12-20gl_shader_cache: Remove unused entry in GetPrimitiveDescriptionReinUsesLisp
2019-12-20vk_shader_decompiler: Use Visit instead of reimplementing itReinUsesLisp
ExprCondCode visit implements the generic Visit. Use this instead of that one. As an intended side effect this fixes unwritten memory usages in cases when a negation of a condition code is used.
2019-12-20shader/p2r: Implement P2R PrReinUsesLisp
P2R dumps predicate or condition codes state to a register. This is useful for unit testing.
2019-12-20shader/r2p: Refactor P2R to support P2RReinUsesLisp
2019-12-19Merge pull request #3234 from ReinUsesLisp/i2f-u8-selectorbunnei
shader/conversion: Implement byte selector in I2F
2019-12-19Merge pull request #3233 from ReinUsesLisp/mismatch-sizesbunnei
shader/texture: Properly shrink unused entries in size mismatches
2019-12-19vk_resource_manager: Add entry to VKFence to test its usageReinUsesLisp
2019-12-19vk_reosurce_manager: Add assert for releasing fencesReinUsesLisp
Notify the programmer when a request to release a fence is invalid because the fence is already free.
2019-12-19vk_resource_manager: Implement VKFenceWatch move constructorReinUsesLisp
This allows us to put VKFenceWatch inside a std::vector without storing it in heap. On move we have to signal the fences where the new protected resource is, adding some overhead.
2019-12-19vk_device: Add entry to catch device lossesReinUsesLisp
VK_NV_device_diagnostic_checkpoints allows us to push data to a Vulkan queue and then query it even after a device loss. This allows us to push the current pipeline object and see what was the call that killed the device.
2019-12-19vk_shader_decompiler: Fix full decompilationReinUsesLisp
When full decompilation was enabled, labels were not being inserted and instructions were misused. Fix these bugs.
2019-12-19vk_shader_decompiler: Skip NDC correction when it is nativeReinUsesLisp
Avoid changing gl_Position when the NDC used by the game is [0, 1] (Vulkan's native).
2019-12-19vk_shader_decompiler: Normalize output fragment attachmentsReinUsesLisp
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.
2019-12-19Merge pull request #3232 from ReinUsesLisp/gl-decompiler-imagesbunnei
gl_shader_decompiler: Add missing DeclareImages
2019-12-19Merge pull request #3231 from ReinUsesLisp/tld4s-encodingbunnei
shader_bytecode: Fix TLD4S encoding
2019-12-19vk_device: Add query for RGBA8UintReinUsesLisp
2019-12-19vk_shader_decompiler: Update sirit and implement Texture AOFFIReinUsesLisp
2019-12-18Merge pull request #3221 from ReinUsesLisp/vk-schedulerbunnei
vk_scheduler: Delegate commands to a worker thread and state track
2019-12-18gl_rasterizer: Implement RASTERIZE_ENABLEReinUsesLisp
RASTERIZE_ENABLE is the opposite of GL_RASTERIZER_DISCARD. Implement it naturally using this. NVN games expect rasterize to be enabled by default, reflect that in our initial GPU state.
2019-12-18shader/memory: Implement LDG.U8 and unaligned U8 loadsReinUsesLisp
LDG can load single bytes instead of full integers or packs of integers. These have the advantage of loading bytes that are not aligned to 4 bytes. To emulate these this commit gets the byte being referenced (by doing "address & 3" and then using that to extract the byte from the loaded integer: result = bitfieldExtract(loaded_integer, (address % 4) * 8, 8)
2019-12-18shader/conversion: Implement byte selector in I2FReinUsesLisp
I2F's byte selector is used to choose what bytes to convert to float. e.g. if the input is 0xaabbccdd and the selector is ".B3" it will convert 0xaa. The default (when it's not shown in nvdisasm) is ".B0", in that example the default would convert 0xdd to float.