Age | Commit message (Collapse) | Author |
|
nvdrv: Fix GetTPCMasks for ioctl3
|
|
kernel: Account for system resource size for memory usage
|
|
gl_rasterizer: Mark vertex buffers as dirty after buffer cache invalidation
|
|
shader/texture: Join separate image and sampler pairs offline
|
|
shader_cache: Implement a generic runtime shader cache
|
|
kernel: ResourceLimit::Reserve remove useless while loop
|
|
Fixes animal crossing svcBreak on launch
|
|
GetTotalPhysicalMemoryAvailableWithoutSystemResource & GetTotalPhysicalMemoryUsedWithoutSystemResource seem to subtract the resource size from the usage.
|
|
texture_cache: Implement rendering to 3D textures
|
|
Vertex buffers bindings become invalid after the stream buffer is
invalidated. We were originally doing this, but it got lost at some
point.
- Fixes Animal Crossing: New Horizons, but it affects everything.
|
|
We have to invalidate whatever cache is being used before uploading the
data, hence it makes more sense to return this on Map instead of Unmap.
|
|
gl_rasterizer: Use NV_transform_feedback for XFB on assembly shaders
|
|
renderer_opengl: Only enable DEBUG_OUTPUT when graphics debugging is enabled
|
|
Handle blits to images as 2D, even when they have block depth.
- Fixes rendering issues on Luigi's Mansion 3
|
|
|
|
|
|
This allows rendering to 3D textures with more than one slice.
Applications are allowed to render to more than one slice of a texture
using gl_Layer from a VTG shader.
This also requires reworking how 3D texture collisions are handled, for
now, this commit allows rendering to slices but not to miplevels. When a
render target attempts to write to a mipmap, we fallback to the previous
implementation (copying or flushing as needed).
- Fixes color correction 3D textures on UE4 games (rainbow effects).
- Allows Xenoblade games to render to 3D textures directly.
|
|
vk_rasterizer: Implement storage texels and atomic image operations
|
|
The rasterizer cache is no longer used. Each cache has its own generic
implementation optimized for the cached data.
|
|
Trivial port the generic shader cache to Vulkan.
|
|
Trivially port the generic shader cache to OpenGL.
|
|
Implement a generic shader cache for fast lookups and invalidations.
Invalidations are cheap but expensive when a shader is invalidated.
Use two mutexes instead of one to avoid locking invalidations for
lookups and vice versa. When a shader has to be removed, lookups are
locked as expected.
|
|
Skip fast buffer uploads on Nvidia 443.24 Vulkan beta driver on OpenGL.
This driver throws the following error when calling BufferSubData or
BufferData on buffers that are candidates for fast constant buffer
uploads. This is the equivalens to push constants on Vulkan, except that
they can access the full buffer. The error:
Unknown internal debug message. The NVIDIA OpenGL driver has encountered
an out of memory error. This application might
behave inconsistently and fail.
If this error persists on future drivers, we might have to look deeper
into this issue. For now, we can black list it and log it as a temporary
solution.
|
|
Avoids logging when it's not relevant. This can potentially reduce
driver's internal thread overhead.
|
|
vk_rasterizer: Skip transform feedbacks when extension is unavailable
|
|
Games using D3D idioms can join images and samplers when a shader
executes, instead of baking them into a combined sampler image. This is
also possible on Vulkan.
One approach to this solution would be to use separate samplers on
Vulkan and leave this unimplemented on OpenGL, but we can't do this
because there's no consistent way of determining which constant buffer
holds a sampler and which one an image. We could in theory find the
first bit and if it's in the TIC area, it's an image; but this falls
apart when an image or sampler handle use an index of zero.
The used approach is to track for a LOP.OR operation (this is done at an
IR level, not at an ISA level), track again the constant buffers used as
source and store this pair. Then, outside of shader execution, join
the sample and image pair with a bitwise or operation.
This approach won't work on games that truly use separate samplers in a
meaningful way. For example, pooling textures in a 2D array and
determining at runtime what sampler to use.
This invalidates OpenGL's disk shader cache :)
- Used mostly by D3D ports to Switch
|
|
|
|
gl_shader_decompiler: Fix geometry shader outputs on Intel drivers
|
|
Downgrade "handle not signaled" error to trace
|
|
video_core: Implement Macro JIT
|
|
clogs logs quite a bit
|
|
|
|
Port citra-emu/citra#5376: "Actually save the input when clearing/resetting to default"
|
|
NV_transform_feedback, NV_transform_feedback2 and
ARB_transform_feedback3 with NV_transform_feedback interactions allows
implementing transform feedbacks as dynamic state.
Maxwell implements transform feedbacks as dynamic state, so using these
extensions with TransformFeedbackStreamAttribsNV allows us to properly
emulate transform feedbacks without having to recompile shaders when the
state changes.
|
|
texture_cache: Handle overlaps with multiple subresources
|
|
|
|
Co-Authored-By: xperia64 <xperiancedapps@gmail.com>
|
|
gl_device: Avoid devices with CAVEAT_SUPPORT on ASTC
|
|
hid: Stub GetXpadIDs
|
|
glsl: Squash constant buffers into a single SSBO when we hit the limit
|
|
shader/other: Fix hardcoded value in S2R INVOCATION_INFO
|
|
maxwell_to_vk: Add R16UI image format
|
|
|
|
Implement atomic operations on images.
On GLSL these are atomicImage* functions (e.g. atomicImageAdd).
|
|
This is the equivalent of an image buffer on OpenGL.
- Used by Octopath Traveler
|
|
- Used by Octopath Traveler
|
|
buffer_cache: Avoid copying twice on certain cases
|
|
maxwell_3d: Initialize more registers to their expected value
|
|
gl_PerVertex for vertex and tessellation shaders
|
|
On Intel's proprietary drivers, gl_Layer and gl_ViewportIndex are not allowed members of gl_PerVertex block, causing the shader to fail to compile. Fix this by declaring these variables outside of gl_PerVertex.
|