aboutsummaryrefslogtreecommitdiff
path: root/src/video_core
AgeCommit message (Collapse)Author
2019-06-20texture_cache: Flush 3D textures in the order they are drawnReinUsesLisp
2019-06-20gl_texture_cache: Minor changesReinUsesLisp
2019-06-20gl_texture_cache: Add copy from multiple overlaps into a single surfaceReinUsesLisp
2019-06-20gl_texture_cache: Attach surface textures instead of viewsReinUsesLisp
2019-06-20gl_texture_cache: Add fast copy pathReinUsesLisp
2019-06-20gl_texture_cache: Initial implementationReinUsesLisp
2019-06-19Merge pull request #2591 from lioncash/recordbunnei
core: Remove unused CiTrace source files
2019-06-18core: Remove unused CiTrace source filesLioncash
These source files have been unused for the entire lifecycle of the project. They're a hold-over from Citra and only add to the build time of the project, so they can be removed. There's also likely no way this would ever work in yuzu in its current form without revamping quite a bit of it, given how different the GPU on the Switch is compared to the 3DS.
2019-06-17Merge pull request #2562 from ReinUsesLisp/split-cbuf-uploadbunnei
video_core/engines: Move ConstBufferInfo out of Maxwell3D
2019-06-15Merge pull request #2538 from ReinUsesLisp/ssy-pbkZach Hilman
shader: Split SSY and PBK stack
2019-06-11gl_device: Fix TestVariableAoffi testReinUsesLisp
This test is intended to be invalid GLSL, but it was being invalid in two points instead of one. The intention is to use a non-immediate parameter in a textureOffset like function. The problem is that this shader was being compiled as a separable shader object and the text was writting to gl_Position without a redeclaration, being invalid GLSL. Address that issue by using a user-defined output attribute.
2019-06-11Merge pull request #2572 from FernandoS27/gpu-membunnei
GPUVM: Correct GPU VM virtual address space
2019-06-09GPUVM: Correct GPU VM virtual address spaceFernando Sahmkow
2019-06-07kepler_compute: Use std::array for cbuf infoReinUsesLisp
2019-06-07kepler_compute: Fix block_dim_x encodingReinUsesLisp
2019-06-07gl_shader_cache: Use static constructors for CachedShader initializationReinUsesLisp
2019-06-07gl_rasterizer: Remove unused parameters in descriptor uploadsReinUsesLisp
2019-06-07video_core/engines: Move ConstBufferInfo out of Maxwell3DReinUsesLisp
2019-06-07Merge pull request #2514 from ReinUsesLisp/opengl-compatZach Hilman
video_core: Drop OpenGL core in favor of OpenGL compatibility
2019-06-07shader: Split SSY and PBK stackReinUsesLisp
Hardware testing revealed that SSY and PBK push to a different stack, allowing code like this: SSY label1; PBK label2; SYNC; label1: PBK; label2: EXIT;
2019-06-06shader/node: Minor changesReinUsesLisp
Reflect std::shared_ptr nature of Node on initializers and remove constant members in nodes. Add some commentaries.
2019-06-06shader: Move Node declarations out of the shader IR headerReinUsesLisp
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
2019-06-05shader: Use shared_ptr to store nodes and move initialization to fileReinUsesLisp
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.
2019-06-05Merge pull request #2520 from ReinUsesLisp/vulkan-refreshbunnei
vk_device,vk_shader_decompiler: Miscellaneous changes
2019-06-05Merge pull request #2540 from ReinUsesLisp/remove-guest-positionbunnei
gl_shader_decompiler: Remove guest "position" varying
2019-06-05Merge pull request #2512 from ReinUsesLisp/comp-indexingbunnei
gl_shader_decompiler: Pessimize uniform buffer access on AMD's prorpietary driver
2019-06-05Merge pull request #2545 from lioncash/timingZach Hilman
core/core_timing_util: Use std::chrono types for specifying time units
2019-06-05Merge pull request #2534 from ReinUsesLisp/shader-cleanupZach Hilman
gl_shader_cache: Minor style changes
2019-06-04core/core_timing_util: Use std::chrono types for specifying time unitsLioncash
Makes the interface more type-safe and consistent in terms of return values.
2019-06-04shader_bytecode: Mark EXIT as flow instructionFernando Sahmkow
2019-06-03gl_shader_decompiler: Remove guest "position" varyingReinUsesLisp
"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.
2019-05-30gl_shader_cache: Store a system class and drop global accessorsReinUsesLisp
2019-05-30gl_shader_cache: Add commentaries explaining the intention in shaders creationReinUsesLisp
2019-05-30gl_shader_cache: Flip if condition in GetStageProgram to reduce indentationReinUsesLisp
2019-05-30gl_buffer_cache: Remove unused ReserveMemory methodReinUsesLisp
2019-05-30maxwell_to_gl: Use GL_CLAMP to emulate Clamp wrap modeReinUsesLisp
2019-05-30gl_rasterizer: Move alpha testing to the OpenGL pipelineReinUsesLisp
Removes the alpha testing code from each fragment shader invocation.
2019-05-30gl_rasterizer: Use GL_QUADS to emulate quads renderingReinUsesLisp
2019-05-29Merge pull request #2446 from ReinUsesLisp/tidbunnei
shader: Implement S2R Tid{XYZ} and CtaId{XYZ}
2019-05-27gl_device: Add commentary to AOFFI unit test source codeReinUsesLisp
The intention behind this commit is to hint someone inspecting an apitrace dump to ignore this ill-formed GLSL code.
2019-05-27gl_shader_gen: Always declare extensions after the version declarationReinUsesLisp
This addresses a bug on geometry shaders where code was being written before all #extension declarations were done. Ref to #2523
2019-05-26vk_device: Let formats array type be deducedReinUsesLisp
2019-05-26vk_shader_decompiler: Misc fixesReinUsesLisp
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.
2019-05-26vk_device: Enable features when available and misc changesReinUsesLisp
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.
2019-05-24renderer_opengl/utils: Use a std::string_view with LabelGLObject()Lioncash
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.
2019-05-24Merge pull request #2358 from ReinUsesLisp/parallel-shaderbunnei
gl_shader_cache: Use shared contexts to build shaders in parallel at boot
2019-05-24Merge pull request #2485 from ReinUsesLisp/generic-memorybunnei
shader/memory: Implement generic memory stores and loads (ST and LD)
2019-05-24gl_shader_decompiler: Use an if based cbuf indexing for broken driversReinUsesLisp
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; ```
2019-05-24gl_device: Add test to detect broken component indexingReinUsesLisp
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.
2019-05-23shader/shader_ir: Make Comment() take a std::string by valueLioncash
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).