Commit graph

619 commits

Author SHA1 Message Date
kd-11 996534c559 rsx: Fixup for aspect mismatch 2019-10-20 15:25:07 +03:00
kd-11 404073c74a rsx: Force-align compressed formats to 4x4 texel blocks and disable 1D compressed textures.
- The PS3 allows defining 1D compressed images but this obviously doesn't work well on desktop.
2019-10-18 14:46:37 +03:00
kd-11 eff4e95c99 rsx: Minor cache fixup for cyclic references.
- Logic was broken by mipmaps PR. Do not issue a texture barrier if a temp copy is being done.
2019-10-18 14:46:37 +03:00
kd-11 eee2237e19 rsx: Track uncached cache resources
- Uncacheable resources can be reused as soon as they're made visible to the draw call.
- Since they're likely to be reused every draw call until the shader changes, it is important to reuse as much as possible
2019-10-18 14:46:37 +03:00
kd-11 decf9cfcf6 rsx: Notify the backend to release or delete temporary surfaces after we're done with them. 2019-10-18 14:46:37 +03:00
kd-11 a936e43ff6 rsx: Fixup for slice gathering for structures with multiple mipmap levels
- TODO: Proper multi-level assembly for non-2D structures
2019-10-17 18:18:00 +03:00
kd-11 e166dbccc8 rsx: Fix visibility of blit destination targets 2019-10-17 18:18:00 +03:00
kd-11 0c35595ce2 rsx: Remove the alpha-to-coverage hack that was added to hide the missing mipmaps in games
- Moves to a purely stochastic function using dithering to simlulate coverage
2019-10-17 18:18:00 +03:00
kd-11 f0ed0285f3 rsx: Implement range-based subresource descriptor cache
- The previous address-based approach was pretty awful when it comes to invalidating
2019-10-17 18:18:00 +03:00
kd-11 fbb9ed4e25 rsx: Add explicit range to cached subresource descriptors 2019-10-17 18:18:00 +03:00
kd-11 c9e3a321b2 rsx: Fixup for surface cache scanning
- Fix regression when gathering cubemaps
2019-10-17 18:18:00 +03:00
kd-11 1ac976771c rsx: Add some texture search options for the cache
- Potentially optimizes texture cache searching using explicit options
2019-10-17 18:18:00 +03:00
kd-11 840b52fe80 rsx: Implement mipmap gathering from texture cache 2019-10-17 18:18:00 +03:00
kd-11 d6d8766f8d rsx: Refactoring
- Move some helper routines out of the cache core
- Prep for multi-layered image search
2019-10-17 18:18:00 +03:00
kd-11 4a19a2dd24 rsx: Explicity describe transfer regions for both source and destination blocks 2019-10-04 18:10:46 +03:00
kd-11 ef5b56bc48 rsx: Align width properly when normalizing to avoid fractional results being lowered to 0 2019-09-29 11:39:22 +03:00
kd-11 c59cb1bdd3 rsx: Allow only sse4.1 capable CPUs to take the accelerated index path
- Older sets lack the required min/max functionality
2019-09-13 12:28:52 +03:00
kd-11 cc313b052f rsx: Improve hit testing when scanning for overlapping surfaces
- Calculate exact sizes when doing hit tests to avoid false negatives
- Defer page checking until actually require to do memory setup
- Introduce align2 helper to do non-pow2 alignments
2019-09-12 23:32:21 +03:00
kd-11 9842823a8c rsx: Check if memory actually exists when overallocating blit targets 2019-09-12 23:32:21 +03:00
kd-11 cd1345b6bb rsx: Do not use nul section if resolution scaling is active on a surface 2019-09-12 23:32:21 +03:00
kd-11 858014b718 rsx: Experiments with nul sink 2019-09-12 23:32:21 +03:00
kd-11 212ac19c11 vk: Reimplement DMA synchronization 2019-09-12 23:32:21 +03:00
kd-11 60845daf45 rsx: Improve use of CPU vector extensions
- Allow use of intrinsics when SSSE3 and SSSE4.1 are not available in the build target environment
- Properly separate SSE4.1 code from SSSE3 code for some older proceessors without SSE4.1
2019-09-12 14:08:21 +03:00
kd-11 27af75fe71 rsx: Fixup for blit engine when moving inverted regions
- Properly calculate overlap range when sections are inverted
- Simplify transfer logic for inverted regions
2019-09-11 23:30:55 +03:00
kd-11 412c620b9d rsx: Allow sampling from shader_read resources for blit engine
- With harmonization between all texture types implemented, there is no difference between blit_engine_src and shader_read for supported formats
- Adds extra format filtering to ensure no conflicts when copying data
2019-09-10 16:54:02 +03:00
kd-11 75fcfac00e rsx: Modify find_cached_texture to respect gcm_format. Can pass 0 for "dont care" 2019-09-10 16:54:02 +03:00
kd-11 f53361b966 rsx: Fix fast texture copy when src_pitch != width * block_size
- Happens on mipmapped linear images
2019-09-08 18:22:27 +03:00
kd-11 0af9685381 rsx: Deprecate surface_transform::argb_to_bgra which is no longer required.
- vulkan now uses native swizzle mapping for both surface and texture
2019-09-08 13:56:41 +03:00
kd-11 6aa0b49dbc vk: Prefer using native alignment when uploading.
- Allows using fast copy paths and reduces memory and compute footprint
2019-09-07 16:23:20 +03:00
kd-11 a3a0cb8c17 rsx: Minor texture optimizations 2019-09-07 16:23:20 +03:00
kd-11 efa501dac6 rsx/vp: Set default inputs to (0, 0, 0, 1)
- From some hw tests, it seems this is the default.
2019-09-06 17:08:28 +03:00
kd-11 f8dbe281a5 glsl: Explicitly declare const inputs as such
- Avoids copying the values to temp variables before invoking function calls
- Generates shorter, cleaner AST and SPV bytecode
2019-09-06 17:08:28 +03:00
kd-11 9dc06cef7f rsx: Do not include ro data when attempting to do section merge
- Avoids crazy situations like trying to merge from a 3d or cubemap in memory
2019-09-02 16:49:04 +03:00
kd-11 e99e8460fe rsx/texture_cache_utils: Warnings cleanup 2019-09-01 18:59:50 +03:00
kd-11 27fabd7607 rsx/ring_buffer: Warnings cleanup 2019-09-01 18:59:50 +03:00
kd-11 0158a88c88 rsx/textures: Warnings cleanup 2019-09-01 18:59:50 +03:00
kd-11 401bd9112a rsx/prog: Warnings cleanup 2019-09-01 18:59:50 +03:00
kd-11 652f18ebaa rsx/buffers: Warnings cleanup 2019-09-01 18:59:50 +03:00
kd-11 94656ac1e3 rsx/vp: Warnings cleanup 2019-09-01 18:59:50 +03:00
kd-11 0ee9d7b46d rsx/fp: Warnings cleanup 2019-09-01 18:59:50 +03:00
kd-11 7f99de36c1 rsx: Fixup for surface_target_a flag being broken
- While the mask for surface_a is at index 0, the surface cache expects the order to be maintained correctly!
  Set the correct mask since surface store now checks each RTT individually
2019-08-30 21:46:19 +03:00
kd-11 99fb6d6a5d rsx: Allow GPU-accelerated stream manipulation when doing texture uploads 2019-08-30 21:46:19 +03:00
kd-11 e55d216619 rsx: Workarounds for some buggy games
- Replace assert with log message until hardware testing confirms findings
2019-08-28 14:54:51 +03:00
kd-11 e334a43169 rsx: Fix surface cache hit tests
- Avoid silly broken tests due to queue_tag being called before pitch is initialized.
- Return actual memory range covered and exclude trailing padding.
- Coordinates in src are to be calculated with src_pitch, not required_pitch.
2019-08-28 14:54:51 +03:00
kd-11 2962e05f26 rsx: Implement per-RTT color masks
- Also refactors and simplifies some common code in surface store and rsx core
2019-08-27 21:59:02 +03:00
kd-11 27aeaf66bc gl: Restructure buffer objects to give more control over usage
- This allows creating buffers with no MAP bits set which should ensure they are created for VRAM usage only
- TODO: Implement compute kernels to avoid software fallback mode for pack/unpack operations
2019-08-27 21:59:02 +03:00
kd-11 eed32cf3a4 rsx: Decompiler fixups and improvements
- Fix 2D coordinate sampling of W coordinate.
  W is actually HPOS.w and not 1. Z is however always 0.
- Optimize register usage a bit
  Disassembling compiled SPV shows that global declaration results in less ops than using inout modifiers. Modifiers generate extra mov instructions.
2019-08-26 20:03:31 +03:00
kd-11 3e28e4b1e0 rsx/decompiler: Restructure program register behavior
- Fix reading of varying registers in FP
  Different registers have different behavior
- Always write to varying registers. If a register is not written to, it is initialized to (0, 0, 0, 1)
- Reimplements two-sided lighting correctly without hacks
- Also bumps shader cache version
2019-08-26 20:03:31 +03:00
kd-11 fe6ff8622a rsx: Decompiler fixups for conditional execution
- Cond actually obeys vector mask
2019-08-26 20:03:31 +03:00
kd-11 f9aea076ae rsx: Implement depth_buffer_float support.
- Since this is transparent to the application at all time, it only becomes a problem when doing memory transfer or DEPTH->RGBA conversion in shaders.
2019-08-26 20:03:31 +03:00