| Age | Commit message (Collapse) | Author |
|
GPUVM: Correct GPU VM virtual address space
|
|
|
|
|
|
|
|
video_core: Drop OpenGL core in favor of OpenGL compatibility
|
|
Reflect std::shared_ptr nature of Node on initializers and remove
constant members in nodes.
Add some commentaries.
|
|
Analysis passes do not have a good reason to depend on shader_ir.h to
work on top of nodes. This splits node-related declarations to their own
file and leaves the IR in shader_ir.h
|
|
Instead of having a vector of unique_ptr stored in a vector and
returning star pointers to this, use shared_ptr. While changing
initialization code, move it to a separate file when possible.
This is a first step to allow code analysis and node generation beyond
the ShaderIR class.
|
|
vk_device,vk_shader_decompiler: Miscellaneous changes
|
|
gl_shader_decompiler: Remove guest "position" varying
|
|
gl_shader_decompiler: Pessimize uniform buffer access on AMD's prorpietary driver
|
|
core/core_timing_util: Use std::chrono types for specifying time units
|
|
gl_shader_cache: Minor style changes
|
|
Makes the interface more type-safe and consistent in terms of return
values.
|
|
|
|
"position" was being written but not read anywhere besides geometry
shaders, where it had the same value as gl_Position.
This commit replaces "position" with gl_Position, reducing the
complexity of our code and the emitted GLSL code.
|
|
|
|
|
|
|
|
|
|
|
|
Removes the alpha testing code from each fragment shader invocation.
|
|
|
|
shader: Implement S2R Tid{XYZ} and CtaId{XYZ}
|
|
The intention behind this commit is to hint someone inspecting an
apitrace dump to ignore this ill-formed GLSL code.
|
|
This addresses a bug on geometry shaders where code was being written
before all #extension declarations were done. Ref to #2523
|
|
|
|
Fix missing OpSelectionMerge instruction. This caused devices loses on
most hardware, Intel didn't care.
Fix [-1;1] -> [0;1] depth conversions.
Conditionally use VK_EXT_scalar_block_layout. This allows us to use
non-std140 layouts on UBOs.
Update external Vulkan headers.
|
|
Keeps track of native ASTC support, VK_EXT_scalar_block_layout
availability and SSBO range.
Check for independentBlend and vertexPipelineStorageAndAtomics as a
required feature. Always enable it.
Use vk::to_string format to log Vulkan enums.
Style changes.
|
|
Uses a std::string_view instead of a std::string, given the pointed to
string isn't modified and is only used in a formatting operation.
This is nice because a few usages directly supply a string literal to
the function, allowing these usages to otherwise not heap allocate,
unlike the std::string overloads.
While we're at it, we can combine the address formatting into a single
formatting call.
|
|
gl_shader_cache: Use shared contexts to build shaders in parallel at boot
|
|
shader/memory: Implement generic memory stores and loads (ST and LD)
|
|
The following code is broken on AMD's proprietary GLSL compiler:
```glsl
uint idx = ...;
vec4 values = ...;
float some_value = values[idx & 3];
```
It index the wrong components, to fix this the following pessimized code
is emitted when that bug is present:
```glsl
uint idx = ...;
vec4 values = ...;
float some_value;
if ((idx & 3) == 0) some_value = values.x;
if ((idx & 3) == 1) some_value = values.y;
if ((idx & 3) == 2) some_value = values.z;
if ((idx & 3) == 3) some_value = values.w;
```
|
|
Component indexing on AMD's proprietary driver is broken. This commit adds
a test to detect when we are on a driver that can't successfully manage
component indexing.
It dispatches a dummy draw with just one vertex shader that writes to an
indexed SSBO from the GPU with data sent through uniforms, it then reads
that data from the CPU and compares the expected output.
|
|
This allows for forming comment nodes without making unnecessary copies
of the std::string instance.
e.g. previously:
Comment(fmt::format("Base address is c[0x{:x}][0x{:x}]",
cbuf->GetIndex(), cbuf_offset));
Would result in a copy of the string being created, as CommentNode()
takes a std::string by value (a const ref passed to a value parameter
results in a copy).
Now, only one instance of the string is ever moved around. (fmt::format
returns a std::string, and since it's returned from a function by value,
this is a prvalue (which can be treated like an rvalue), so it's moved
into Comment's string parameter), we then move it into the CommentNode
constructor, which then moves the string into its member variable).
|
|
Keeps the shader code file endings consistent.
|
|
Amends cases where we were using things that were indirectly being
satisfied through other headers. This way, if those headers change and
eliminate dependencies on other headers in the future, we don't have
cascading compilation errors.
|
|
|
|
format string
This accidentally slipped through a rebase.
|
|
|
|
|
|
|
|
|
|
gl_shader_decompiler: Add AddLine() overloads with single function that forwards to libfmt
|
|
|
|
|
|
std::string concatenation
|
|
Gets rid of the need to special-case brace handling depending on the
overload used, and makes it consistent across the board with how fmt
handles them.
Strings with compile-time deducible strings are directly forwarded to
std::string's constructor, so we don't need to worry about the
performance difference here, as it'll be identical.
|
|
|
|
This reverts a tested behavior on delay slots not exiting if the exit
flag is set. Currently new tests are required in order to ensure this
behavior.
|