- Jan 06, 2020
-
-
ReinUsesLisp authored
MakeCurrent is a costly (according to Nsight's profiler it takes a tenth of a millisecond to complete), and we don't have a reason to call it because: - Qt no longer signals a warning if it's not called - yuzu no longer supports macOS
-
- Jan 04, 2020
-
-
Fernando Sahmkow authored
-
- Jan 03, 2020
-
-
Rodrigo Locatti authored
Co-Authored-By:
Mat M. <mathew1800@gmail.com>
-
ReinUsesLisp authored
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.
-
- Jan 01, 2020
-
-
ReinUsesLisp authored
Create a large descriptor pool where we allocate all our descriptors from. It has to be wide enough to support any pipeline, hence its large numbers. If the descritor pool is filled, we allocate more memory at that moment. This way we can take advantage of permissive drivers like Nvidia's that allocate more descriptors than what the spec requires.
-
- Dec 30, 2019
-
-
Fernando Sahmkow authored
This commit introduces a mechanism by which shader IR code can be amended and extended. This useful for track algorithms where certain information can derived from before the track such as indexes to array samplers.
-
Rodrigo Locatti authored
-
Markus Wick authored
This function is called rarely and blocks quite often for a long time. So don't waste power and let the CPU sleep. This might also increase the performance as the other cores might be allowed to clock higher.
-
- Dec 29, 2019
-
-
Rodrigo Locatti authored
-
- Dec 26, 2019
-
-
ReinUsesLisp authored
Rendering without a fragment shader is usually used in depth-only passes.
-
- Dec 25, 2019
-
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
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.
-
Fernando Sahmkow authored
This commit corrects a padding value in Ioctl Remap that was actually an offset to the mapping address.
-
- Dec 24, 2019
-
-
ReinUsesLisp authored
Marks as noexcept Hash, operator== and operator!= for consistency.
-
- Dec 23, 2019
-
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
-
ReinUsesLisp authored
Many of these topologies are exclusively available in OpenGL.
-
- Dec 22, 2019
-
-
Fernando Sahmkow authored
-
Fernando Sahmkow authored
-
Fernando Sahmkow authored
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.
-
- Dec 21, 2019
-
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
-
ReinUsesLisp authored
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.
-
- Dec 20, 2019
-
-
ReinUsesLisp authored
P2R dumps predicate or condition codes state to a register. This is useful for unit testing.
-
ReinUsesLisp authored
-
- Dec 19, 2019
-
-
ReinUsesLisp authored
-
ReinUsesLisp authored
Notify the programmer when a request to release a fence is invalid because the fence is already free.
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
When full decompilation was enabled, labels were not being inserted and instructions were misused. Fix these bugs.
-
ReinUsesLisp authored
Avoid changing gl_Position when the NDC used by the game is [0, 1] (Vulkan's native).
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
- Dec 18, 2019
-
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
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)
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
When a image format mismatches we were inserting zeroes to the texture itself. This was not handling cases were the mismatch uses less coordinates than the guest shader code. Address that by resizing the vector.
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-