* shader_recompiler: Account for instruction array flag in image type.
* shader_recompiler: Check da flag for all mimg instructions.
* shader_recompiler: Convert cube images into 2D arrays.
* shader_recompiler: Move image resource functions into sharp type.
* shader_recompiler: Use native AMD cube instructions when possible.
* specialization: Fix buffer storage mistake.
* shader_recompiler: Add swizzle support for unsupported formats.
* renderer_vulkan: Rework MRT swizzles and add unsupported format swizzle support.
* shader_recompiler: Clean up swizzle handling and handle ImageRead storage swizzle.
* shader_recompiler: Fix type errors
* liverpool_to_vk: Remove redundant clear color swizzles.
* shader_recompiler: Reduce CompositeConstruct to constants where possible.
* shader_recompiler: Fix ImageRead/Write and StoreBufferFormatF32 types.
* amdgpu: Add a few more unsupported format remaps.
* coroutine code prettification
* asc queues submission refactoring
* better asc ring context handling
* final touches and review notes
* even more simplification for context saving
* shader_recompiler: Tessellation WIP
* fix compiler errors after merge
DONT MERGE set log file to /dev/null
DONT MERGE linux pthread bb fix
save work
DONT MERGE dump ir
save more work
fix mistake with ES shader
skip list
add input patch control points dynamic state
random stuff
* WIP Tessellation partial implementation. Squash commits
* test: make local/tcs use attr arrays
* attr arrays in TCS/TES
* dont define empty attr arrays
* switch to special opcodes for tess tcs/tes reads and tcs writes
* impl tcs/tes read attr insts
* rebase fix
* save some work
* save work probably broken and slow
* put Vertex LogicalStage after TCS and TES to fix bindings
* more refactors
* refactor pattern matching and optimize modulos (disabled)
* enable modulo opt
* copyright
* rebase fixes
* remove some prints
* remove some stuff
* Add TCS/TES support for shader patching and use LogicalStage
* refactor and handle wider DS instructions
* get rid of GetAttributes for special tess constants reads. Immediately replace some upon seeing readconstbuffer. Gets rid of some extra passes over IR
* stop relying on GNMX HsConstants struct. Change runtime_info.hs_info and some regs
* delete some more stuff
* update comments for current implementation
* some cleanup
* uint error
* more cleanup
* remove patch control points dynamic state (because runtime_info already depends on it)
* fix potential problem with determining passthrough
---------
Co-authored-by: IndecisiveTurtle <47210458+raphaelthegreat@users.noreply.github.com>
* page_manager: Enable userfaultfd by default
* Much faster than page faults and causes less problems
* shader_recompiler: Add texel buffer multiplier
* Fixes format mismatch assert when vsharp stride is multiple of format stride
* shader_recompiler: Specialize UBOs on size
* Some games can perform manual vertex pulling and thus bind read only buffers of varying size. We only recompile when the vsharp size is larger than size in shader, in opposite case its not needed
* clang format
* shader_recompiler: Read image format info directly from sharps instead of storing in shader info.
* renderer_vulkan: Parse fetch shader per-pipeline
* Few minor fixes.
* shader_recompiler: Specialize on vertex attribute number types.
* shader_recompiler: Move GetDrawOffsets to fetch shader
* Implement shader resource tables
* fix after rebase + squash
* address some review comments
* fix pipeline_common
* cleanup debug stuff
* switch to using single codegenerator
* shader_recompiler: Move sampling parameter resolution to tracking pass and support more derivative types.
* shader_recompiler: Only track sampler sharp on sample instructions.
* shader_recompiler: Fix Inst args size.
* Add shader debug print opcode that uses NonSemantic DebugPrintf extension
* small correction for flags in Inst
* Fix IR Debug Print. Add StringLiteral op
* add missing microinstruction changes for debugprint
* cleanup. delete vaarg stuff. Smuggle format string in Info and flags
* more cleanup
* more
* (dont merge??) update sirit submodule
* fix num args 4 -> 5
* add notes about DebugPrint IR op
* use NumArgsOf again
* copyright
* update sirit submodule
* fix clangformat
* add new Value variant for string literal. Use arg0 for fmt string
* remove string pool changes
* Update src/shader_recompiler/ir/value.cpp
Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
---------
Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
* shader_recompiler: Define fragment output type based on number format.
* shader_recompiler: Fix GetAttribute SPIR-V output type.
* shader_recompiler: Don't bitcast on SetAttribute unless integer target.
* vulkan: Fix some extension support related validation errors.
* vulkan: Fix validation error on zero-size buffer.
* vulkan: Fix primitive list restart validation error.
* shader_recompiler: Use push constants for user data regs
* shader: Add some GR2 instructions
* shader: Add some instructions
* shader: Add instructions for knack
* touchups
* spirv: Better names
* buffer_cache: Ignore non gpu modified images
* clang format
* Add log
* more fixes
* video_core: texture: image subresources state tracking
* shader_recompiler: use one binding if the same image is read and written
* video_core: added rebinding of changed textures after overlap resolve
* don't use pointers; slight `FindTexture` refactoring
* video_core: buffer_cache: don't copy over the image size
* redundant barriers removed; fixes
* regression fixes
* texture_cache: 3d texture layers count fixup
* shader_recompiler: support for partially bound cubemaps
* added support for cubemap arrays
* don't bind unused color buffers
* fixed depth promotion to do not use stencil
* doors
* bonfire lit
* cubemap array index calculation
* final touches
* shader_recompiler: Add more format swap modes
* texture_cache: Handle stencil texture reads
* emulator: Support loading font library
* readme: Add thanks section
* shader_recompiler: Constant buffers as integers
* shader_recompiler: Typed buffers as integers
* shader_recompiler: Separate thread bit scalars
* We can assume guest shader never mixes them with normal sgprs. This helps avoid errors where ssa could view an sgpr write dominating a thread bit read, due to how control flow is structurized, even though its not possible in actual control flow
* shader_recompiler: Implement data append/consume operations
* clang format
* buffer_cache: Simplify invalidation scheme
* video_core: Remove some invalidation remnants
* adjust
* shader_recompiler: Implement V_MOVRELS_B32, V_MOVRELD_B32,
V_MOVRELSD_B32
Generates a ton of OpSelects to hardcode reading or writing from each
possible vgpr depending on the value of m0
Future work is to do range analysis to put an upper bound on m0 and
check fewer registers.
* fix runtime info after rebase