aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/engines
AgeCommit message (Collapse)Author
2020-04-15Merge pull request #3612 from ReinUsesLisp/redFernando Sahmkow
shader/memory: Implement RED.E.ADD and minor changes to ATOM
2020-04-15Merge pull request #3662 from ReinUsesLisp/constant-attrsMat M
gl_rasterizer: Implement constant vertex attributes
2020-04-14shader/arithmetic: Add FCMP_CR variantReinUsesLisp
Adds another variant of FCMP.
2020-04-14gl_rasterizer: Implement constant vertex attributesReinUsesLisp
Credits go to gdkchan from Ryujinx for finding constant attributes are used in retail games.
2020-04-13gl_rasterizer: Implement line widths and smooth linesReinUsesLisp
Implements "legacy" features from OpenGL present on hardware such as smooth lines and line width.
2020-04-12Merge pull request #3578 from ReinUsesLisp/vmnmxFernando Sahmkow
shader/video: Partially implement VMNMX
2020-04-12shader/video: Partially implement VMNMXReinUsesLisp
Implements the common usages for VMNMX. Inputs with a different size than 32 bits are not supported and sign mismatches aren't supported either. VMNMX works as follows: It grabs Ra and Rb and applies a maximum/minimum on them (this is defined by .MX), having in mind the input sign. This result can then be saturated. After the intermediate result is calculated, it applies another operation on it using Rc. These operations are merges, accumulations or another min/max pass. This instruction allows to implement with a more flexible approach GCN's min3 and max3 instructions (for instance).
2020-04-12video_core: Add MSAA registers in 3D engine and TICReinUsesLisp
This adds the registers used for multisampling. It doesn't implement anything for now.
2020-04-09Merge pull request #3601 from ReinUsesLisp/some-shader-encodingsbunnei
video_core/shader: Add some instruction and S2R encodings
2020-04-06shader/memory: Implement RED.E.ADDReinUsesLisp
Implements a reduction operation. It's an atomic operation that doesn't return a value. This commit introduces another primitive because some shading languages might have a primitive for reduction operations.
2020-04-04shader_bytecode: Rename MOV_SYS to S2RReinUsesLisp
2020-04-04shader_bytecode: Add encoding for BARReinUsesLisp
2020-04-04shader_bytecode: Add encoding for VOTE.VTGReinUsesLisp
2020-04-01shader_decompiler: Remove FragCoord.w hack and change IPA implementationReinUsesLisp
Credits go to gdkchan and Ryujinx. The pull request used for this can be found here: https://github.com/Ryujinx/Ryujinx/pull/1082 yuzu was already using the header for interpolation, but it was missing the FragCoord.w multiplication described in the linked pull request. This commit finally removes the FragCoord.w == 1.0f hack from the shader decompiler. While we are at it, this commit renames some enumerations to match Nvidia's documentation (linked below) and fixes component declaration order in the shader program header (z and w were swapped). https://github.com/NVIDIA/open-gpu-doc/blob/master/Shader-Program-Header/Shader-Program-Header.html
2020-03-30shader_decode: merge GlobalAtomicOp to AtomicOpnamkazy
2020-03-28shader_bytecode: Fix I2I_IMM encodingReinUsesLisp
2020-03-27engines/const_buffer_engine_interface: Store image format typeReinUsesLisp
This information is required to properly implement SULD.B. It might also be handy for all image operations, since it would allow us to implement them on devices that require the image format to be specified (on desktop, this would be AMD on OpenGL and Intel on OpenGL and Vulkan).
2020-03-25Merge pull request #3520 from ReinUsesLisp/legacy-varyingsbunnei
gl_shader_decompiler: Implement legacy varyings
2020-03-22apply replay logic to all writes. remove replay from MacroInterpreter::Send ↵namkazy
(@fincs)
2020-03-22maxwell_3d: change declaration ordernamkazy
2020-03-22maxwell_3d: init shadow_statenamkazy
2020-03-22maxwell_3d: this seem more correct.namkazy
2020-03-22maxwell_3d: update comments for shadow ram usagenamkazy
2020-03-22maxwell_3d: track shadow ram ctrl and hw reg valueNguyen Dac Nam
2020-03-22maxwell_3d: implement MME shadow RAMNguyen Dac Nam
2020-03-18kepler_compute: Remove unused variablesReinUsesLisp
2020-03-15Merge pull request #3502 from namkazt/patch-3Rodrigo Locatti
shader_decode: Reimplement BFE instructions
2020-03-15shader/shader_ir: Track usage in input attribute and of legacy varyingsReinUsesLisp
2020-03-13maxwell_3d: Add padding words to XFB entriesReinUsesLisp
Use INSERT_UNION_PADDING_WORDS instead of alignas to ensure a size requirement.
2020-03-13gl_rasterizer: Implement transform feedback bindingsReinUsesLisp
2020-03-13Merge branch 'master' into shader-purgeRodrigo Locatti
2020-03-13shader_bytecode: update BFE instructions struct.Nguyen Dac Nam
2020-03-09gl_rasterizer: Implement polygon modes and fill rectanglesReinUsesLisp
2020-03-09engines/maxwell_3d: Add TFB registers and store them in shader registryReinUsesLisp
2020-03-09const_buffer_engine_interface: Store component typesReinUsesLisp
This is required for Vulkan. Sampling integer textures with float handles is illegal.
2020-02-28state_tracker: Remove type traits with named structuresReinUsesLisp
2020-02-28maxwell_3d: Use two tables instead of three for dirty flagsReinUsesLisp
2020-02-28maxwell_3d: Change write dirty flags to a bitsetReinUsesLisp
2020-02-28maxwell_3d: Flatten cull and front face registersReinUsesLisp
2020-02-28video_core: Reintroduce dirty flags infrastructureReinUsesLisp
2020-02-28gl_state: Remove clip distances trackingReinUsesLisp
2020-02-28gl_state: Remove viewport and depth range trackingReinUsesLisp
2020-02-28gl_rasterizer: Remove dirty flagsReinUsesLisp
2020-02-24Merge pull request #3425 from ReinUsesLisp/layered-framebufferbunnei
texture_cache: Implement layered framebuffer attachments
2020-02-19Merge pull request #3414 from ReinUsesLisp/maxwell-3d-drawbunnei
maxwell_3d: Unify draw methods
2020-02-18Merge pull request #3409 from ReinUsesLisp/host-queriesFernando Sahmkow
query_cache: Implement a query cache and query 21 (samples passed)
2020-02-16texture_cache: Implement layered framebuffer attachmentsReinUsesLisp
Layered framebuffer attachments is a feature that allows applications to write attach layered textures to a single attachment. What layer the fragments are written to is decided from the shader using gl_Layer.
2020-02-14maxwell_3d: Unify draw methodsReinUsesLisp
Pass instanced state of a draw invocation as an argument instead of having two separate virtual methods.
2020-02-14gl_query_cache: Optimize query cacheReinUsesLisp
Use a custom cache instead of relying on a ranged cache.
2020-02-14gl_query_cache: Implement host queries using a deferred cacheReinUsesLisp
Instead of waiting immediately for executed commands, defer the query until the guest CPU reads it. This way we get closer to what the guest program is doing. To archive this we have to build a dependency queue, because host APIs (like OpenGL and Vulkan) use ranged queries instead of counters like NVN. Waiting for queries implicitly uses fences and this requires a command being queued, otherwise the driver will lock waiting until a timeout. To fix this when there are no commands queued, we explicitly call glFlush.