Age | Commit message (Collapse) | Author |
|
Many of these topologies are exclusively available in OpenGL.
|
|
vk_resource_manager: Catch device losses and other changes
|
|
Texture Cache: Add HLE methods for building 3D textures
|
|
vk_shader_decompiler: Misc changes
|
|
|
|
|
|
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.
|
|
renderer_vulkan/shader: Add helper GLSL shaders
|
|
vk_shader_decompiler: Use Visit instead of reimplementing it
|
|
shader/memory: Implement LDG.U8 and unaligned U8 loads
|
|
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.
|
|
shader/conversion: Implement byte selector in I2F
|
|
shader/texture: Properly shrink unused entries in size mismatches
|
|
|
|
Notify the programmer when a request to release a fence is invalid
because the fence is already free.
|
|
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.
|
|
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.
|
|
When full decompilation was enabled, labels were not being inserted and
instructions were misused. Fix these bugs.
|
|
Avoid changing gl_Position when the NDC used by the game is [0, 1]
(Vulkan's native).
|
|
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.
|
|
gl_shader_decompiler: Add missing DeclareImages
|
|
shader_bytecode: Fix TLD4S encoding
|
|
|
|
|
|
vk_scheduler: Delegate commands to a worker thread and state track
|
|
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)
|
|
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.
|
|
delete appveyor config
|
|
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.
|
|
|
|
|
|
common: SPSCQueue: Notify after incrementing queue size.
|
|
|
|
|
|
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.
|
|
renderer_opengl: Miscellaneous clean ups
|
|
Corrections and fixes to TLD4S & bindless samplers failing
|
|
|
|
maxwell_to_vk: Use VK_EXT_index_type_uint8 and misc changes
|
|
externals: Update boost-ext to include safe_numerics.
|
|
gl_device: Enable compute shaders for Intel Mesa drivers
|
|
- This is useful to me for an upcoming change.
|
|
gl_shader_cache: Add missing new-line on emitted GLSL
|
|
A1B5G5R5 uses A1R5G5B5. This is flipped with image view swizzles;
flushing is still not properly implemented on Vulkan for this particular
format.
|
|
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
kernel/svc: Amend function signature of SignalProcessWideKey
|