- Dec 11, 2019
-
-
Fernando Sahmkow authored
-
- Dec 10, 2019
-
-
ReinUsesLisp authored
-
- Nov 23, 2019
-
-
ReinUsesLisp authored
Instead of specializing shaders to separate texture buffers from 1D textures, use the locker to deduce them while they are being decoded.
-
- Nov 08, 2019
-
-
ReinUsesLisp authored
-
- Oct 31, 2019
-
-
Fernando Sahmkow authored
Originally on the last commit I thought TLD4 acted the same as TLD4S and didn't have a mask. It actually does have a component mask. This commit corrects that.
-
- Oct 30, 2019
-
-
Fernando Sahmkow authored
This commit fixes an issue where not all 4 results of tld4 were being written, the color component was defaulted to red, among other things. It also implements the bindless variant.
-
- Oct 29, 2019
-
-
ReinUsesLisp authored
Bindless textures were using u64 to pack the buffer and offset from where they come from. Drop this in favor of separated entries in the struct. Remove the usage of std::set in favor of std::list (it's not std::vector to avoid reference invalidations) for samplers and images.
-
- Oct 25, 2019
-
-
ReinUsesLisp authored
-
Fernando Sahmkow authored
Shader_IR: allow lookup of texture samplers within the shader_ir for instructions that don't provide it
-
Fernando Sahmkow authored
-
Fernando Sahmkow authored
VideoCore: Unify const buffer accessing along engines and provide ConstBufferLocker class to shaders.
-
- Oct 22, 2019
-
-
Fernando Sahmkow authored
TLD4S always outputs 4 values, the previous code checked a component mask and omitted those values that weren't part of it. This commit corrects that and makes sure all 4 values are set.
-
ReinUsesLisp authored
Ignore global memory operations instead of invoking undefined behaviour when constant buffer tracking fails and we are blasting through asserts, ignore the operation. In the case of LDG this means filling the destination registers with zeroes; for STG this means ignore the instruction as a whole. The default behaviour is still to abort execution on failure.
-
- Oct 04, 2019
-
-
Fernando Sahmkow authored
-
Fernando Sahmkow authored
-
Fernando Sahmkow authored
-
Fernando Sahmkow authored
-
- Sep 21, 2019
-
-
ReinUsesLisp authored
In the process remove implementation of SUATOM.MIN and SUATOM.MAX as these require a distinction between U32 and S32. These have to be implemented with imageCompSwap loop.
-
- Sep 19, 2019
-
-
Fernando Sahmkow authored
-
- Sep 10, 2019
-
-
ReinUsesLisp authored
-
- Sep 06, 2019
-
-
ReinUsesLisp authored
-
- Sep 05, 2019
-
-
ReinUsesLisp authored
This instruction writes to a memory buffer shared with threads within the same work group. It is known as "shared" memory in GLSL.
-
- Aug 21, 2019
-
-
ReinUsesLisp authored
Implement VOTE using Nvidia's intrinsics. Documentation about these can be found here https://developer.nvidia.com/reading-between-threads-shader-intrinsics Instead of using portable ARB instructions I opted to use Nvidia intrinsics because these are the closest we have to how Tegra X1 hardware renders. To stub VOTE on non-Nvidia drivers (including nouveau) this commit simulates a GPU with a warp size of one, returning what is meaningful for the instruction being emulated: * anyThreadNV(value) -> value * allThreadsNV(value) -> value * allThreadsEqualNV(value) -> true ballotARB, also known as "uint64_t(activeThreadsNV())", emits VOTE.ANY Rd, PT, PT; on nouveau's compiler. This doesn't match exactly to Nvidia's code VOTE.ALL Rd, PT, PT; Which is emulated with activeThreadsNV() by this commit. In theory this shouldn't really matter since .ANY, .ALL and .EQ affect the predicates (set to PT on those cases) and not the registers.
-
- Jul 22, 2019
-
-
ReinUsesLisp authored
-
- Jul 16, 2019
- Jul 15, 2019
-
-
ReinUsesLisp authored
While changing this code, simplify tracking code to allow returning the base address node, this way callers don't have to manually rebuild it on each invocation.
-
- Jul 09, 2019
-
-
Fernando Sahmkow authored
Also shows Nvidia's address space on comments.
-
Fernando Sahmkow authored
-
Fernando Sahmkow authored
-
Fernando Sahmkow authored
-
Fernando Sahmkow authored
-
- Jul 07, 2019
-
-
ReinUsesLisp authored
This commit implements gl_ViewportIndex and gl_Layer in vertex and geometry shaders. In the case it's used in a vertex shader, it requires ARB_shader_viewport_layer_array. This extension is available on AMD and Nvidia devices (mesa and proprietary drivers), but not available on Intel on any platform. At the moment of writing this description I don't know if this is a hardware limitation or a driver limitation. In the case that ARB_shader_viewport_layer_array is not available, writes to these registers on a vertex shader are ignored, with the appropriate logging.
-
- Jun 21, 2019
-
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
- Jun 06, 2019
-
-
ReinUsesLisp authored
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
-
- Jun 05, 2019
-
-
ReinUsesLisp authored
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.
-
- May 23, 2019
-
-
Lioncash authored
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).
-
- May 21, 2019
-
-
ReinUsesLisp authored
-