Commit Graph

78 Commits

Author SHA1 Message Date
shawn mcgrath
b03432bbb0 New VectorVM optimizer fixes. Fixes some invalid instruction removal bugs as well as incorrect SSA calculation on re-ordered instructions. Also fixed potential external function register alignment bugs. Turned new VectorVM back on by default and bumped the Niagara script compiled version. #preflight 62438337c51908059aa24096 #rb rob.krajcarski
[CL 19551771 by shawn mcgrath in ue5-main branch]
2022-03-29 20:09:16 -04:00
rob krajcarski
b281028c38 Additional support for new experimental VM
-moves optimization pass to the async compilation pipeline (including moving it to it's own file, out of NiagaraSystem)
-splits up the NIAGARA_VM_EXP preprocessor define into VECTORVM_SUPPORTS_LEGACY & VECTORVM_SUPPORTS_EXPERIMENTAL allowing support of one, the other or both (the default)
#rb shawn.mcgrath
#jira none
#preflight 623c85cd1302f69e9aa0b1d7

[CL 19496739 by rob krajcarski in ue5-main branch]
2022-03-24 11:52:03 -04:00
shawn mcgrath
817835763e New VectorVM bug fixes.
Fixed pointer alignment causing compiler to generate aligned instructions on unaligned data.  Fixed optimization bug on empty scripts.
#jira UE-146424 UE-146342
#rb jeff.roberts
#preflight 62361e7948746817f1491ef8

[CL 19446753 by shawn mcgrath in ue5-main branch]
2022-03-19 23:27:04 -04:00
rob krajcarski
9fc29320b1 Fixup some warnings generated from usage of VectorRegister2Int64 with new experimental VectorVM
#jira UE-146165
#preflight 623231286c05dd6bbc6e005a
#rb stu.mckenna

[CL 19410336 by rob krajcarski in ue5-main branch]
2022-03-16 15:26:36 -04:00
shawn mcgrath
61cf03bac1 VectorVM bug fixes & half float support. Experimental VM on by default. #rb Rob.Krajcarski #preflight 6230b204421403c1553829fc
[CL 19388907 by shawn mcgrath in ue5-main branch]
2022-03-15 13:46:08 -04:00
aurel cordonnier
ac54844eff Fix for "Include after first code block" include tool error
#fyi Shawn.McGrath
#preflight 622fb4d8511d438d6b6f1beb
#jira UE-143216
#rnx

[CL 19379414 by aurel cordonnier in ue5-main branch]
2022-03-14 17:53:12 -04:00
shawn mcgrath
3302307688 Added markup for PVS studio warning. #rb none #preflight none
[CL 19035109 by shawn mcgrath in ue5-main branch]
2022-02-17 10:32:48 -05:00
shawn mcgrath
cb83612158 - New Vector VM with optimizer and serialization.
- curve sampling DIs changed to 4-wide
- Off by default
#rb stu.mckenna #preflight 620bba0e4353dc61c7f60f39

[CL 18996550 by shawn mcgrath in ue5-main branch]
2022-02-15 11:01:00 -05:00
michael galetzka
479f74fe22 Some code cleanup, mainly in Niagara data interfaces
#jira none
#rb stu.mckenna

#ROBOMERGE-AUTHOR: michael.galetzka
#ROBOMERGE-SOURCE: CL 18353646 in //UE5/Release-5.0/... via CL 18353672
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18353697 by michael galetzka in ue5-release-engine-test branch]
2021-12-02 12:09:13 -05:00
stu mckenna
9762b2c0a5 - Static Mesh Data Interface API consistency changes
#rb shaun.kime, simon.tovey
#jira none
#preflight 6153a558f4d2a40001f80468

#ROBOMERGE-AUTHOR: stu.mckenna
#ROBOMERGE-SOURCE: CL 17655365 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v875-17642767)

[CL 17655388 by stu mckenna in ue5-release-engine-test branch]
2021-09-28 20:57:43 -04:00
andrew davidson
57beb335f2 Merging //UE5/Dev-LargeWorldCoordinates [at] 17581892 to //UE5/Main
#ROBOMERGE-AUTHOR: andrew.davidson
#ROBOMERGE-SOURCE: CL 17595295 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)

[CL 17595306 by andrew davidson in ue5-release-engine-test branch]
2021-09-22 10:01:48 -04:00
shawn mcgrath
cc848ed446 Wrapped FVectorVMContext in NiagaraDataInterfaceFunctionContext for external functions to facilitate running an experimental VM in parallel.
External functions should no longer access FVectorVMContext directly and instead use the helper member functions in the NiagaraDataInterfaceFunctionContext class... this should have zero effect without NIAGARA_EXP_VM defined... if it is defined then it'll use the experimental VM functions, which are not included in this CL.
#rb shaun.kime #jira none #okforgithub public

#ROBOMERGE-SOURCE: CL 16908052 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16908059 by shawn mcgrath in ue5-release-engine-test branch]
2021-07-21 07:43:14 -04:00
Marc Audy
a7f9391231 Merge UE5/Release-Engine-Staging @ 14811410 to UE5/Main
This represents UE4/Main @ 14768117

For ReleaseObjectVersion.h
#lockdown Marcus.Wassmer

[CL 14811440 by Marc Audy in ue5-main branch]
2020-11-24 18:42:39 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
Marc Audy
7379fa99c5 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14229157
[CL 14233282 by Marc Audy in ue5-main branch]
2020-09-01 14:07:48 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00
rob krajcarski
5f2b4ebba6 Generates function bindings for external DI functions that don't require user poitners so that we can share them across instances
-changes the function table to be an array of function pointers to allow for the redirection without copies/reallocations
-eliminates 2nd most common allocation in cases with large instance counts in niagara
#rb stu.mckenna


#ROBOMERGE-SOURCE: CL 12146347 via CL 12146348
#ROBOMERGE-BOT: (v659-12123632)

[CL 12146350 by rob krajcarski in Main branch]
2020-03-11 22:27:39 -04:00
arne schober
8ebb9182e7 FNM - Added Compression option for Niagara Systems. Thge Option will try to compress some of the parameters to use half precission, which can be a performance benefit on the GPU and sometimes also on the CPU.
#RB Rob.Krajcarski, Stu.McKenna
#JIRA UE-84463


#ROBOMERGE-OWNER: arne.schober
#ROBOMERGE-AUTHOR: arne.schober
#ROBOMERGE-SOURCE: CL 12105113 via CL 12121713
#ROBOMERGE-BOT: (v657-12064184)

[CL 12121717 by arne schober in Main branch]
2020-03-10 21:00:17 -04:00
shaun kime
de14270ed2 Adding a check if we are overflowing the specified constant buffer table
#rb Rob.Krajcarski
#jira none

#ROBOMERGE-SOURCE: CL 11575449 in //UE4/Release-4.25/... via CL 11575450
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v654-11333218)

[CL 11585320 by shaun kime in Main branch]
2020-02-22 18:11:14 -05:00
mihnea balta
ff43248d11 Particle read DI:
* added functions which can retrieve the IDs of the particles spawned in the last tick
* added missing barriers on source buffers when reading from another emitter
* fixed bug when more than one DI function was used in a module (bad alignment on the elements of the array of attribute indices)

Persistent IDs:
* replaced ClearUAV with a custom shader, so we can set sane barriers instead of the stuff that ClearUAV() forces. Dev-Rendering replaced ClearUAV() with a better API, but I didn't want to wait for that merge.
* grouped together all the ID buffer clears before the simulation dispatches, and all the free ID list updates after rendering, so they can overlap and to avoid stalls

Barriers:
* fixed a bogus compute to graphics transition on the ID to index buffer
* when running multiple ticks, only the outputs of the final tick are transitioned to graphics
* automatic CS cache flushes are disabled once before running all the ticks and enabled at the end, instead of doing it for each tick

#jira UE-84717
#rb Stu.McKenna


#ROBOMERGE-OWNER: mihnea.balta
#ROBOMERGE-AUTHOR: mihnea.balta
#ROBOMERGE-SOURCE: CL 11163241 via CL 11163243
#ROBOMERGE-BOT: (v640-11091645)

[CL 11167081 by mihnea balta in Main branch]
2020-01-29 15:31:45 -05:00
rob krajcarski
c5f7899345 Adds a set of constant buffers to hold engine driven niagara variables so that we can reduce the cost of managing the parameters through the script execution pipeline
-reduces fixed concurrent CPU costs of emitters by about 15%
-emitter parameter storage remains in place for non-system parameters
#rb stu.mckenna, simon.tovey


#ROBOMERGE-OWNER: rob.krajcarski
#ROBOMERGE-AUTHOR: rob.krajcarski
#ROBOMERGE-SOURCE: CL 11082540 via CL 11082550
#ROBOMERGE-BOT: (v637-11041722)

[CL 11082603 by rob krajcarski in Main branch]
2020-01-22 10:22:18 -05:00
ryan durand
0f0464a30e Updating copyright for Engine Runtime.
#rnx
#rb none


#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870549 by ryan durand in Main branch]
2019-12-26 14:45:42 -05:00
rob krajcarski
ac25478aa1 Optimization to the VectorVM pattern of acquiring indices and outputting stream of attribute data.
Left packs the data with shuffles instead of branching on if a particle is valid, and claims blocks of indices rather than one at a time.
VectorIntShuffle intrinsic has been added locally to the VectorVM and is only included for selected platforms
#rb stu.mckenna, simon.tovey


#ROBOMERGE-SOURCE: CL 10594706 via CL 10594709
#ROBOMERGE-BOT: (v607-10590470)

[CL 10594712 by rob krajcarski in Main branch]
2019-12-06 13:41:14 -05:00
rob krajcarski
9903fc14f4 Back out changelist 10593082
#rb None


#ROBOMERGE-SOURCE: CL 10593938 via CL 10593945
#ROBOMERGE-BOT: (v607-10590470)

[CL 10593947 by rob krajcarski in Main branch]
2019-12-06 12:37:57 -05:00
rob krajcarski
f907fec87c Optimization to the VectorVM pattern of acquiring indices and outputting stream of attribute data.
Left packs the data with shuffles instead of branching on if a particle is valid, and claims blocks of indices rather than one at a time.
#rb stu.mckenna, simon.tovey


#ROBOMERGE-SOURCE: CL 10593082 via CL 10593089
#ROBOMERGE-BOT: (v607-10590470)

[CL 10593090 by rob krajcarski in Main branch]
2019-12-06 11:26:55 -05:00