Commit Graph

72 Commits

Author SHA1 Message Date
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
rob krajcarski
941e82a956 Cherry pick SseMath changes (10103273 & 10114181), and also move VMVector over to use it (as well as create safe versions to protect against div/0 issues)
#rb stu.mckenna

#ushell-cherrypick of 10103273 by john.hable
#ushell-cherrypick of 10114181 by john.hable


#ROBOMERGE-SOURCE: CL 10481339 via CL 10481342
#ROBOMERGE-BOT: (v605-10478255)

[CL 10481343 by rob krajcarski in Main branch]
2019-11-30 15:58:53 -05:00
stu mckenna
746ee72100 - Fix for static analysis warning
- Warning is because a compare flags against a uint32 value and it assumes you should be doing an & == v which isn't correct in this instance

#rb none
#jira UE-83124
#rnx


#ROBOMERGE-SOURCE: CL 10034568 via CL 10034570
#ROBOMERGE-BOT: (v565-10026848)

[CL 10034571 by stu mckenna in Main branch]
2019-11-05 18:22:19 -05:00
stu mckenna
7d21538025 - Fix static analysis warning
#jira UE-83124
#rb none
#rnx


#ROBOMERGE-SOURCE: CL 10017401 via CL 10017403
#ROBOMERGE-BOT: (v562-10004402)

[CL 10017405 by stu mckenna in Main branch]
2019-11-05 12:55:06 -05:00
stu mckenna
087fd80d15 - Fix some static analysis warnings
[FYI] marc.audy
#rnx


#ROBOMERGE-SOURCE: CL 9975688 via CL 9975689
#ROBOMERGE-BOT: (v560-9963197)

[CL 9975690 by stu mckenna in Main branch]
2019-11-04 18:29:26 -05:00
stu mckenna
b6010254ab - Write VectorVM code in LittleEndian as opposed to BigEndian, this avoids runtime byte swapping
- Read ByteCode directly if unalgned loads are supported to condense 3 opts into 1 when reading a uint16
- Pre-calculate instance loops for VECTOR_WIDTH_FLOATS to avoid each vector op having to round / divide instance counts
- Added runtime optimization of the VM script, this currently boils down to a function call per VM invoke + storing the data required
- Use vm.OptimizeVMByteCode to enable optimized code generation
- Use vm.UseOptimizedVMByteCode to enable running optimized code rather the traditional byte code

[FYI] simon.tovey,rob.krajcarski,shaun.kime
#rnx


#ROBOMERGE-SOURCE: CL 9962648 via CL 9964955
#ROBOMERGE-BOT: (v560-9963197)

[CL 9965540 by stu mckenna in Main branch]
2019-11-03 14:40:53 -05:00
simon tovey
6e2874c958 - Removing a bunch of setup work we do for VM exectuion with remapping of register tables.
- VM is now directly fed a set of pre generated register tables from the datasets.
- Split the monolithic register table in the VM up so there are explicit I/O and temp register tables the script indexes into directly.
- Avoids some recreation of expensve objects in favour of manual reset calls.
- Re-wrote Oupt kernel to be more explicit. Going via templated handler in this case didn't get us any code reuse and just obfuscated it's workings.

Saves ~10-25us of overhead per VM involcation which soon adds up.
Saves ~1-2us inside each VM exec itself.

#rb Stu.Mckenna


#ROBOMERGE-SOURCE: CL 9743796 via CL 9743798
#ROBOMERGE-BOT: (v542-9736015)

[CL 9745804 by simon tovey in Main branch]
2019-10-22 11:10:29 -04:00
simon tovey
1f28bf6921 Made VM context TLS again as the pooled version was causing a perf issue.
#rb none
[FYI] shaun.kime, arne.shober


#ROBOMERGE-SOURCE: CL 9031014 via CL 9042170 via CL 9042350
#ROBOMERGE-BOT: (v443-9013191)

[CL 9042481 by simon tovey in Main branch]
2019-09-24 13:10:00 -04:00
simon tovey
c1a674c709 - Storing compact form of databuffer layout in single array to reduce cache misses in register setup.
- Optimizing temp register layout for better cache usage.
- Moving VM context from TLS to pool.

#rb Stu.Mckenna, Shaun.Kime


#ROBOMERGE-OWNER: simon.tovey
#ROBOMERGE-AUTHOR: simon.tovey
#ROBOMERGE-SOURCE: CL 8886792 via CL 8886955 via CL 8889429
#ROBOMERGE-BOT: (v427-8887818)

[CL 8890014 by simon tovey in Main branch]
2019-09-19 12:36:11 -04:00
uriel doyon
e3ea5b67cf Added "vm.InstancesPerChunk" to replace VectorVM::InstancesPerChunk
[FYI] shaun.kime


#ROBOMERGE-SOURCE: CL 8504670 via CL 8507808
#ROBOMERGE-BOT: (v406-8472469)

[CL 8509774 by uriel doyon in Main branch]
2019-09-05 15:53:24 -04:00
simon tovey
e0150fbea6 Tick Refactor.
- Moves Niagara tick work into tick function in LastDemotable. In future CL we can push other work into earlier tick groups.
- Can now optioally push system simulation work off the GT.
- Can now optionally push system instance tick work off the GT in batches. Currently of 8.
- Refactor of system simulation code to be far more clear and maintainable.
- Modified spawn flow to facilitate ticking inside main world tick. Now we spawn all our new systems at the end of the frames actor ticking so we catch any new systems spwaned during the frame.
- Various infrastructure changes to support the above.

- Misc:
Changed some checks to check slow.
Fixed a UI crash
Removed VM stat scope that was too granular.
Moved some static functions relating to the world manager actually into the world manager rather than in the NiagaraModule

#rb Shaun.kime


#ROBOMERGE-SOURCE: CL 8210774 via CL 8212467
#ROBOMERGE-BOT: (v401-8057353)

[CL 8212517 by simon tovey in Main branch]
2019-08-22 12:20:52 -04:00
shaun kime
4adf3597b6 Fixing Simon Tovey's previous checkin on non-Stat builds
#rb none
[FYI] Simon.Tovey


#ROBOMERGE-SOURCE: CL 8012424 via CL 8015591
#ROBOMERGE-BOT: (v396-7974030)

[CL 8015684 by shaun kime in Main branch]
2019-08-13 21:14:43 -04:00
simon tovey
7d1e67f92f Can now optionally enable detailed stats for niagara modules.
Turn on via vm.DetailedVMScriptStats

#rb Shaun.kime


#ROBOMERGE-SOURCE: CL 8008309 via CL 8014925
#ROBOMERGE-BOT: (v396-7974030)

[CL 8015123 by simon tovey in Main branch]
2019-08-13 21:05:49 -04:00
alexander chan
70f468a541 Fix persistent ID to index table writing incorrect index
#rb Simon.Tovey


#ROBOMERGE-SOURCE: CL 7441225 via CL 7445126
#ROBOMERGE-BOT: (v371-7306989)

[CL 7445189 by alexander chan in Main branch]
2019-07-18 20:15:23 -04:00
Michael Lentine
f9b3324b32 Copying //UE4/Dev-Physics to Dev-Main (//UE4/Dev-Main) @ 6903150
#rb none
#rnx

[CL 6903163 by Michael Lentine in Main branch]
2019-06-08 17:15:34 -04:00
shaun kime
d4cc05f31d Pulling over Simon's ExecState fix CL#6675144
Fix for ExecutionState crash with many emitters.

[FYI] Stu.Mckenna
#rb none


#ROBOMERGE-SOURCE: CL 6676038 via CL 6678350
#ROBOMERGE-BOT: (v363-6677109)

[CL 6678803 by shaun kime in Main branch]
2019-05-30 15:55:06 -04:00
Shaun Kime
bb2de288f6 Copying //UE4/Dev-Niagara to Dev-Main (//UE4/Dev-Main)
#rb none
#tests enginetests pass

[CL 6666942 by Shaun Kime in Main branch]
2019-05-29 16:05:33 -04:00
shaun kime
364c6629dc Copying //UE4/Dev-Niagara to Dev-Main (//UE4/Dev-Main) as of Niagara CL 4733936
#rb none
#tests Niagara auto-tests for DX11 pass

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: shaun.kime
#ROBOMERGE-SOURCE: CL 4734948 in //UE4/Main/...
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 4735344 by shaun kime in Dev-Core branch]
2019-01-16 14:58:33 -05:00
Shaun Kime
4ae7273fa2 Copying //UE4/Dev-Niagara to Dev-Main (//UE4/Dev-Main) as of Niagara CL 4733936
#rb none
#tests Niagara auto-tests for DX11 pass

[CL 4734948 by Shaun Kime in Main branch]
2019-01-16 14:29:53 -05:00
Robert Manuszewski
2752c82adc Merging //UE4/Dev-Main @ 4664414 to Dev-Core (//UE4/Dev-Core)
#rb none

[CL 4675693 by Robert Manuszewski in Dev-Core branch]
2019-01-02 00:55:51 -05:00
Ben Marsh
7598af0532 Update copyright notices to 2019.
#rb none
#lockdown Nick.Penwarden

[CL 4662404 by Ben Marsh in Main branch]
2018-12-14 13:41:00 -05:00
Steve Robb
7fa474ae63 GitHub 5032 : Added templated StaticClass, StaticStruct and StaticEnum free functions, which are specialized for every reflected type by the generated code that UHT produces
#rb steve.robb
#jira UE-63337

[CL 4591484 by Steve Robb in Dev-Core branch]
2018-11-26 02:38:35 -05:00
simon tovey
4e47cd83e2 Fix for VectorVM race condition crash.
Adding a lock around places that modify the free table.
Keeping thread local array of IDs to free to minimize locks.
Modified free table allocation. Previously size could be insuffiicient in some cases.

#rb Shaun.Kime
#jira UE-59768

#ROBOMERGE-SOURCE: CL 4512863 in //UE4/Release-4.21/...
#ROBOMERGE-BOT: RELEASE (Release-4.21 -> Release-Staging-4.21)

[CL 4512865 by simon tovey in Staging-4.21 branch]
2018-10-26 14:45:57 -04:00