- Jan 04, 2020
-
-
Fernando Sahmkow authored
-
- 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.
-
- Dec 26, 2019
-
-
ReinUsesLisp authored
Rendering without a fragment shader is usually used in depth-only passes.
-
- 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
-
- 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 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
-
- Dec 17, 2019
-
-
bunnei authored
-
- Dec 16, 2019
-
-
ReinUsesLisp authored
These shaders are used to specify code that is not dynamically generated in the Vulkan backend. Instead of packing it inside the build system, it's manually built and copied to the C++ file to avoid adding unnecessary build time dependencies. quad_array should be dropped in the future since it can be emulated with a memory pool generated from the CPU.
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
- Dec 13, 2019
-
-
ReinUsesLisp authored
A1B5G5R5 uses A1R5G5B5. This is flipped with image view swizzles; flushing is still not properly implemented on Vulkan for this particular format.
-
ReinUsesLisp authored
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
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.
-
ReinUsesLisp authored
-
ReinUsesLisp authored
Introduce a worker thread approach for delegating Vulkan work derived from dxvk's approach. https://github.com/doitsujin/dxvk Now that the scheduler is what handles all Vulkan work related to command streaming, store state tracking in itself. This way we can know when to reupload Vulkan dynamic state to the queue (since this one is invalidated between command buffers unlike NVN). We can also store the renderpass state and graphics pipeline bound to avoid redundant binds and renderpass begins/ends.
-