Commit Graph
100 Commits
Author SHA1 Message Date
gdkchanandGitHub 611bec6e44 Implement DrawTexture functionality (#2747)
* Implement DrawTexture functionality

* Non-NVIDIA support

* Disable some features that should not affect draw texture (slow path)

* Remove space from shader source

* Match 2D engine names

* Fix resolution scale and add missing XML docs

* Disable transform feedback for draw texture fallback
2021-11-10 15:37:49 -03:00
gdkchanandGitHub 911ea38e93 Support shader gl_Color, gl_SecondaryColor and gl_TexCoord built-ins (#2817)
* Support shader gl_Color, gl_SecondaryColor and gl_TexCoord built-ins

* Shader cache version bump

* Fix back color value on fragment shader

* Disable IPA multiplication for fixed function attributes and back color selection
2021-11-08 13:18:46 -03:00
gdkchanandGitHub 3dee712164 Fix bindless/global memory elimination with inverted predicates (#2826)
* Fix bindless/global memory elimination with inverted predicates

* Shader cache version bump
2021-11-08 12:57:28 -03:00
gdkchanandGitHub b7a1544e8b Fix InvocationInfo on geometry shader and bindless default integer const (#2822)
* Fix InvocationInfo on geometry shader and bindless default integer const

* Shader cache version bump

* Consistency for the default value
2021-11-08 11:39:30 -03:00
gdkchanandGitHub 81e9b86cdb Ensure syncpoints are released and event handles closed on channel close (#2812) 2021-11-04 20:27:21 -03:00
gdkchanandGitHub f78bcb8048 Clamp number of mipmap levels to avoid API errors due to invalid textures (#2808) 2021-11-03 20:58:24 -03:00
gdkchanandGitHub e48530e9d9 When waiting on CPU, do not return a time out error from EventWait (#2780)
* When waiting on CPU, do not return a time out error from EventWait

* And while I'm at it...
2021-11-01 19:10:02 -03:00
gdkchanandGitHub 99445dd0a6 Add support for fragment shader interlock (#2768)
* Support coherent images

* Add support for fragment shader interlock

* Change to tree based match approach

* Refactor + check for branch targets and external registers

* Make detection more robust

* Use Intel fragment shader ordering if interlock is not available, use nothing if both are not available

* Remove unused field
2021-10-28 19:53:12 -03:00
gdkchanandGitHub a7a40a77f2 Add support for the brazilian portuguese language code (#2792)
* Add support for the brazilian portuguese language code

* Fix error applet message
2021-10-28 23:06:45 +02:00
gdkchanandGitHub 04dfb86fde Preserve image types for shader bindless surface instructions (.D variants) (#2779)
* Preserve image types for SULD/SUST .D variants

* Make format unknown for surface atomic if bindless and not sized
2021-10-24 19:40:20 -03:00
gdkchanandGitHub 0d174cbd45 EventWait should not signal the event when it returns Success (#2739)
* Fix race when EventWait is called and a wait is done on the CPU

* This is useless now

* Fix EventSignal

* Ensure the signal belongs to the current fence, to avoid stale signals
2021-10-19 17:25:32 -03:00
gdkchanandGitHub 63f1663fa9 Fix shader 8-bit and 16-bit STS/STG (#2741)
* Fix 8 and 16-bit STG

* Fix 8 and 16-bit STS

* Shader cache version bump
2021-10-18 20:24:15 -03:00
gdkchanandGitHub d512ce122c Initial tessellation shader support (#2534)
* Initial tessellation shader support

* Nits

* Re-arrange built-in table

* This is not needed anymore

* PR feedback
2021-10-18 18:38:04 -03:00
gdkchanandGitHub 7603dbe3c8 Add missing U8/S8 types from shader I2I instruction (#2740)
* Add missing U8/S8 types from shader I2I instruction

* Better names

* Fix dstIsSignedInt
2021-10-17 17:48:36 -03:00
gdkchanandGitHub 25fd4ef10e Extend bindless elimination to work with masked and shifted handles (#2727)
* Extent bindless elimination to work with masked handles

* Extend bindless elimination to catch shifted pattern, refactor handle packing/unpacking
2021-10-17 17:28:18 -03:00
gdkchanandGitHub d05573bfd1 Implement SHF (funnel shift) shader instruction (#2702)
* Implement SHF shader instruction

* Shader cache version bump

* Better name
2021-10-17 17:02:20 -03:00
gdkchanandGitHub 464a92d8a7 Force index buffer update for games using Vulkan (#2726) 2021-10-12 23:46:42 +02:00
gdkchanandGitHub a7109c767b Rewrite shader decoding stage (#2698)
* Rewrite shader decoding stage

* Fix P2R constant buffer encoding

* Fix PSET/PSETP

* PR feedback

* Log unimplemented shader instructions

* Implement NOP

* Remove using

* PR feedback
2021-10-12 22:35:31 +02:00
gdkchanandGitHub 11b437eafc Fix DisplayInfo struct (#2708) 2021-10-05 12:38:44 -03:00
gdkchanandGitHub 75f4b1ff2d Relax sampler pool requirement (#2703) 2021-10-04 14:35:28 -03:00
gdkchanandGitHub f7aaea4300 Unref frames before decoding with FFMPEG (#2704) 2021-10-04 14:12:24 -03:00
gdkchanandGitHub fd7567a6b5 Only make render target 2D textures layered if needed (#2646)
* Only make render target 2D textures layered if needed

* Shader cache version bump

* Ensure topology is updated on channel swap
2021-09-29 01:55:12 +02:00
gdkchanandGitHub f4f496cb48 NVDEC (H264): Use separate contexts per channel and decode frames in DTS order (#2671)
* Use separate NVDEC contexts per channel (for FFMPEG)

* Remove NVDEC -> VIC frame override hack

* Add missing bottom_field_pic_order_in_frame_present_flag

* Make FFMPEG logging static

* nit: Remove empty lines

* New FFMPEG decoding approach -- call h264_decode_frame directly, trim surface cache to reduce memory usage

* Fix case

* Silence warnings

* PR feedback

* Per-decoder rather than per-codec ownership of surfaces on the cache
2021-09-29 00:43:40 +02:00
gdkchanandGitHub 83bdafccda Share scales array for graphics and compute (#2653) 2021-09-28 23:52:27 +02:00
gdkchanandGitHub f08a280ade Use shader subgroup extensions if shader ballot is not supported (#2627)
* Use shader subgroup extensions if shader ballot is not supported

* Shader cache version bump + cleanup

* The type is still required on the table
2021-09-19 14:38:39 +02:00
gdkchanandGitHub ac4ec1a015 Account for negative strides on DMA copy (#2623)
* Account for negative strides on DMA copy

* Should account for non-zero Y
2021-09-11 22:54:18 +02:00
gdkchanandGitHub 016fc64b3d Implement GetVaRegions on nvservices (#2621)
* Implement GetVaRegions on nvservices

* This would just result in 0
2021-09-11 22:39:02 +02:00
gdkchanandGitHub a4089fc878 Report 1080p resolution when in docked mode (#2618) 2021-09-11 22:24:10 +02:00
gdkchanandGitHub 416dc8fde4 Fix out-of-bounds shader thread shuffle (#2605)
* Fix out-of-bounds shader thread shuffle

* Shader cache version bump
2021-08-30 14:02:40 -03:00
gdkchanandGitHub 82cefc8dd3 Handle indirect draw counts with non-zero draw starts properly (#2593) 2021-08-29 16:52:38 -03:00
gdkchanandGitHub ee1038e542 Initial support for shader attribute indexing (#2546)
* Initial support for shader attribute indexing

* Support output indexing too, other improvements

* Fix order

* Address feedback
2021-08-27 01:44:47 +02:00
gdkchanandGitHub 5b8ceb9173 Swap BGR565 components by changing the format (#2577) 2021-08-26 22:47:21 +02:00
gdkchanandGitHub c702943af3 Swap BGR components for 16-bit BGR texture formats (#2567) 2021-08-20 18:26:25 -03:00
gdkchanandGitHub 680d3ed198 Enable transform feedback buffer flush (#2552) 2021-08-17 14:09:27 -03:00
gdkchanandGitHub eb181425b1 Fix size of cached compute shaders (#2548)
* Fix size of cached compute shaders

* Missed one
2021-08-12 15:59:24 -03:00
gdkchanandGitHub 8196086f7a Revert "Calculate vertex buffer sizes from index buffer (#1663)" (#2544)
This reverts commit 10d649e6d3.
2021-08-11 22:13:48 -03:00
gdkchanandGitHub 0ba4ade8f1 Ensure render scale is initialized to 1 on the backend (#2543) 2021-08-11 19:44:41 -03:00
gdkchanandGitHub 3148c0c21c Unify GpuAccessorBase and TextureDescriptorCapableGpuAccessor (#2542)
* Unify GpuAccessorBase and TextureDescriptorCapableGpuAccessor

* Shader cache version bump
2021-08-11 18:56:59 -03:00
gdkchanandGitHub d44d8f2eb6 Workaround for cubemap view data upload bug on Intel (#2539)
* Workaround for cubemap view data upload bug on Intel

* Trigger CI
2021-08-11 23:19:28 +02:00
gdkchanandGitHub c3e2646f9e Workaround for Intel FrontFacing built-in variable bug (#2540) 2021-08-11 23:01:06 +02:00
gdkchanandGitHub ed754af8d5 Make sure attributes used on subsequent shader stages are initialized (#2538) 2021-08-11 22:27:00 +02:00
gdkchanandGitHub 10d649e6d3 Calculate vertex buffer sizes from index buffer (#1663)
* Calculate vertex buffer size from maximum index buffer index

* Increase maximum index buffer count for it to be considered profitable for counting
2021-08-11 22:06:09 +02:00
gdkchanandGitHub bb8a920b63 Do not dirty memory tracking region handles if they are partially unmapped (#2536) 2021-08-11 21:50:33 +02:00
gdkchanandGitHub 0f6ec446ea Replace BGRA and scale uniforms with a uniform block (#2496)
* Replace BGRA and scale uniforms with a uniform block

* Setting the data again on program change is no longer needed

* Optimize and resolve some warnings

* Avoid redundant support buffer updates

* Some optimizations to BindBuffers (now inlined)

* Unify render scale arrays
2021-08-11 21:33:43 +02:00
gdkchanandGitHub d9d18439f6 Use a new approach for shader BRX targets (#2532)
* Use a new approach for shader BRX targets

* Make shader cache actually work

* Improve the shader pattern matching a bit

* Extend LDC search to predecessor blocks, catches more cases

* Nit

* Only save the amount of constant buffer data actually used. Avoids crashes on partially mapped buffers

* Ignore Rd on predicate instructions, as they do not have a Rd register (catches more cases)
2021-08-11 20:59:42 +02:00
gdkchanandGitHub ff5df5d8a1 Support non-contiguous copies on I2M and DMA engines (#2473)
* Support non-contiguous copies on I2M and DMA engines

* Vector copy should start aligned on I2M

* Nits

* Zero extend the offset
2021-08-04 22:20:58 +02:00
gdkchanandGitHub a27986c311 Make audio disposal thread safe on all 3 backends (#2527)
* Make audio disposal thread safe on all 3 backends

* Make OpenAL more consistent with the other backends

* Remove Window.Cursor = null, and change dummy TValue to byte
2021-08-04 15:28:33 -03:00
gdkchanandGitHub bb6fab2009 Ensure that DMA copy target textures are kept alive or flushed (#2478) 2021-07-14 14:48:57 -03:00
gdkchanandGitHub 96a070a9a7 Do not require texture and sampler pools being initialized (#2476) 2021-07-14 14:27:22 -03:00
gdkchanandGitHub 9d688e37d6 Close transfer memory properly on nvservices (#2477) 2021-07-14 14:09:00 -03:00
gdkchanandGitHub 04dce402ac Implement a fast path for I2M transfers (#2467) 2021-07-12 16:48:57 -03:00
gdkchanandGitHub 9b08abc644 Fix shader compilation on shaders that uses rectangle textures (#2471) 2021-07-12 16:20:33 -03:00
gdkchanandGitHub 40b21cc3c4 Separate GPU engines (part 2/2) (#2440)
* 3D engine now uses DeviceState too, plus new state modification tracking

* Remove old methods code

* Remove GpuState and friends

* Optimize DeviceState, force inline some functions

* This change was not supposed to go in

* Proper channel initialization

* Optimize state read/write methods even more

* Fix debug build

* Do not dirty state if the write is redundant

* The YControl register should dirty either the viewport or front face state too, to update the host origin

* Avoid redundant vertex buffer updates

* Move state and get rid of the Ryujinx.Graphics.Gpu.State namespace

* Comments and nits

* Fix rebase

* PR feedback

* Move changed = false to improve codegen

* PR feedback

* Carry RyuJIT a bit more
2021-07-11 17:20:40 -03:00
gdkchanandGitHub b5190f1681 Fix virtual memory allocation being out of range (#2464) 2021-07-11 16:24:31 -03:00
gdkchanandGitHub b1a9d17cf8 Fix GetWritableRegion write-back (#2456) 2021-07-10 21:50:10 +02:00
gdkchanandGitHub 59900d7f00 Unscale textureSize when resolution scaling is used (#2441)
* Unscale textureSize when resolution scaling is used

* Fix textureSize on compute

* Flag texture size as needing res scale values too
2021-07-09 00:09:07 -03:00
gdkchanandGitHub b02719cf41 Flush UBO updates more frequently (#2407) 2021-07-07 21:20:52 -03:00
gdkchanandGitHub 8b44eb1c98 Separate GPU engines and make state follow official docs (part 1/2) (#2422)
* Use DeviceState for compute and i2m

* Migrate 2D class, more comments

* Migrate DMA copy engine

* Remove now unused code

* Replace GpuState by GpuAccessorState on GpuAcessor, since compute no longer has a GpuState

* More comments

* Add logging (disabled)

* Add back i2m on 3D engine
2021-07-07 20:56:06 -03:00
gdkchanandGitHub d125fce3e8 Allow shader language and target API to be specified on the shader translator (#2402) 2021-07-06 21:20:06 +02:00
gdkchanandGitHub fbb4019ed5 Initial support for separate GPU address spaces (#2394)
* Make GPU memory manager a member of GPU channel

* Move physical memory instance to the memory manager, and the caches to the physical memory

* PR feedback
2021-06-29 19:32:02 +02:00
gdkchanandGitHub fefd4619a5 Add support for custom line widths (#2406) 2021-06-25 20:11:54 -03:00
gdkchanandGitHub 493648df31 Fix default value for unwritten shader outputs (#2412)
* Fix shader default output values

* Shader cache version bump
2021-06-25 19:56:03 -03:00
gdkchanandGitHub ed2f5ede0f Fix texture sampling with depth compare and LOD level or bias (#2404)
* Fix texture sampling with depth compare and LOD level or bias

* Shader cache version bump

* nit: Sorting
2021-06-25 00:54:50 +02:00
gdkchanandGitHub a10b2c5ff2 Initial support for GPU channels (#2372)
* Ground work for separate GPU channels

* Rename TextureManager to TextureCache

* Decouple texture bindings management from the texture cache

* Rename BufferManager to BufferCache

* Decouple buffer bindings management from the buffer cache

* More comments and proper disposal

* PR feedback

* Force host state update on channel switch

* Typo

* PR feedback

* Missing using
2021-06-24 01:51:41 +02:00
gdkchanandGitHub aea7a6631c Reduce number of dlls on distribution with single file publish (#2211)
* Enable single file publish

* Set DebugType to embedded on build scripts
2021-06-24 00:40:19 +02:00
gdkchanandGitHub c71ae9c85c Fix shader texture LOD query (#2397) 2021-06-23 23:31:14 +02:00
gdkchanandGitHub ab9d4b862d Implement VORN (register) Arm32 instruction (#2396) 2021-06-23 23:21:23 +02:00
gdkchanandGitHub 49edf14a3e Pass all inputs when geometry shader passthrough is enabled (#2362)
* Pass all inputs when geometry shader passthrough is enabled

* Shader cache version bump
2021-06-23 23:04:59 +02:00
gdkchanandGitHub 65fee49e8a Fix separate bindless sampler at offset 0 (#2360) 2021-06-20 20:48:12 +02:00
gdkchanandGitHub 02e2e561ac Support bindless textures with separate constant buffers for texture and sampler (#2339) 2021-06-09 00:42:25 +02:00
gdkchanandGitHub 3b90adcd1d Fix shaders with mixed PBK and SSY addresses on the stack (#2329)
* Fix shaders with mixed PBK and SSY addresses on the stack

* Address PR feedback and nits
2021-06-03 01:41:53 +02:00
gdkchanandGitHub b84ba43406 Fix texture blit off-by-one errors (#2335) 2021-06-03 01:30:48 +02:00
gdkchanandGitHub 79b3243f54 Do not attempt to normalize SNORM image buffers on shaders (#2317)
* Do not attempt to normalize SNORM image buffers on shaders

* Shader cache version bump
2021-05-31 21:59:23 +02:00
gdkchanandGitHub 91fdaea39b Fix guest stack trace inexistent function names (#2326) 2021-05-30 20:53:02 +02:00
gdkchanandGitHub f6fcef483f Fix inverted low/high mask value on GetThreadCoreMask32 syscall (#2325) 2021-05-30 20:44:59 +02:00
gdkchanandGitHub fb65f392d1 Improve accuracy of reciprocal step instructions (#2305)
* Improve accuracy of reciprocal step instructions

* Fix small mistake on RECPE rounding, nits, PTC version bump
2021-05-24 20:20:07 +10:00
gdkchanandGitHub 3fd6b55f04 Fix value of constant vertex attributes (#2307) 2021-05-24 17:38:38 +10:00
gdkchanandGitHub e9c15d32cb Use a different method for out of bounds blit (#2302)
* Use a different method for out of bounds blit

* This is not needed
2021-05-22 01:26:49 +02:00
gdkchanandGitHub a03bbef4d6 Add another Depth32F texture format (#2304) 2021-05-22 01:15:08 +02:00
gdkchanandGitHub f0add129e2 Fix non-independent blend state not being updated (#2303)
* Fix non-independent blend state not being updated

* Actually, this is not needed
2021-05-22 01:08:00 +02:00
gdkchanandGitHub 12533e5c9d Fix buffer and texture uses not being propagated for vertex A/B shaders (#2300)
* Fix buffer and texture uses not being propagated for vertex A/B shaders

* Shader cache version bump
2021-05-20 21:43:23 +02:00
gdkchanandGitHub b34c0a47b4 Fix constant buffer array size when indexing is used and other buffer descriptor and resolution scale regressions (#2298)
* Fix constant buffer array size when indexing is used

* Change default QueryConstantBufferUse value

* Fix more regressions

* Ensure proper order
2021-05-20 15:12:15 -03:00
gdkchanandGitHub 49745cfa37 Move shader resource descriptor creation out of the backend (#2290)
* Move shader resource descriptor creation out of the backend

* Remove now unused code, and other nits

* Shader cache version bump

* Nits

* Set format for bindless image load/store

* Fix buffer write flag
2021-05-19 23:15:26 +02:00
gdkchanandGitHub e318022b89 Fold constant offsets and group constant addresses (#2285)
* Fold constant offsets and group constant addresses

* PPTC version bump
2021-05-13 21:26:57 +02:00
gdkchanandGitHub a8022ca3a1 Fix race in SM initialization (#2280) 2021-05-12 00:57:21 +02:00
gdkchanandGitHub ebdbaa6db0 Fix a specific core migration bug on the scheduler (#2271) 2021-05-11 13:18:50 -03:00
gdkchanandGitHub 0e9823d7e6 Fix shader buffer write flag on atomic instructions (#2261)
* Fix shader buffer write flag on atomic instructions

* Shader cache version bump
2021-05-01 20:46:21 +02:00
gdkchanandGitHub 20d2347971 Fix GetClockSnapshot not writing steady clock timepoint (#2249) 2021-04-26 23:56:14 +02:00
gdkchanandGitHub 992133e9ca Fix IsRegionInUse check on NV memory allocator (#2243) 2021-04-25 02:13:58 +02:00
gdkchanandGitHub 4770cfa920 Only enable clip distance if written to on shader (#2217)
* Only enable clip distance if written to on shader

* Signal InstanceId use through FeatureFlags

* Shader cache version bump
2021-04-20 12:33:54 +02:00
gdkchanandGitHub 40e276c9b5 Improve shader global memory to storage pass (#2200)
* Improve shader global memory to storage pass

* Formatting and more comments

* Shader cache version bump
2021-04-18 12:31:39 +02:00
gdkchanandGitHub 001005b3d5 Fix sub-image copies on intel GPUs (#2198) 2021-04-13 03:09:42 +02:00
gdkchanandGitHub d43a56726c (CPU) Fix CRC32 instruction when constant values are used as input (#2183) 2021-04-07 23:43:08 +02:00
gdkchanandGitHub 874540bb5c Allow DRAM size to be increased from 4GB to 6GB (#2174)
* Allow DRAM size to be increased from 4GB to 6GB

* Add option on the UI
2021-04-04 14:06:59 +02:00
gdkchanandGitHub f665e1b409 Hold reference for render targets in use (#2156) 2021-04-02 16:33:39 +02:00
gdkchanandGitHub 524fe3bea4 Implement shader HelperThreadNV (#2163)
* Implement shader HelperThreadNV

* Bump shader cache version

* Use gl_HelperInvocation since its supported across all vendors

* Nit
2021-04-02 21:50:35 +11:00
gdkchanandGitHub a0b4799f19 Fix ZN flags set for shader instructions using RZ.CC dest (#2147)
* Fix ZN flags set for shader instructions using RZ.CC dest

* Shader cache version bump and nits
2021-03-27 22:59:05 +01:00
gdkchanandGitHub 5ab5b0e709 Close ILibraryAppletAccessor handles on disposal (#2094) 2021-03-10 21:36:38 +01:00
gdkchanandGitHub 9d82d27df2 Fix memory tracking performance regression (#2026)
* Fix memory tracking performance regression

* Set PTC version
2021-02-17 09:16:20 +11:00
715b605e95 Validate CPU virtual addresses on access (#1987)
* Enable PTE null checks again

* Do address validation on EmitPtPointerLoad, and make it branchless

* PTC version increment

* Mask of pointer tag for exclusive access

* Move mask to the correct place

Co-authored-by: LDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com>
2021-02-16 19:04:19 +01:00