Commit Graph

121 Commits

Author SHA1 Message Date
Tommy Walton 7de6bc5b23 Add RoundUpToMultiple and DivideAndRoundUp functions to MathUtils.h (#6989)
* Add RoundUpToMultiple and DivideAndRoundUp functions to MathUtils.h

Signed-off-by: Tommy Walton <waltont@amazon.com>

* Rename DivideByMultiple2 back to DivideByMultiple, now that I've confirmed it's not in use in the codebase. RHI::DivideByMultiple can be fully deprecated in favor of AZ::DivideAndRoundUp at a later date, once the deprecation strategy has been finalized.

Signed-off-by: Tommy Walton <waltont@amazon.com>

* Update based on PR feedback

Signed-off-by: Tommy Walton <waltont@amazon.com>

* Switched from std::numeric_limits to AZStd::numeric_limits and updated the header to indicate it works for non-power of two alignments, but that SizeAlignUp is more efficient if the alignment is a power of 2

Signed-off-by: Tommy Walton <waltont@amazon.com>

* Added missing arguments to the assert, and a missing namespace and include that failed to compile on non-unity builds

Signed-off-by: Tommy Walton <waltont@amazon.com>
2022-02-18 12:29:44 -08:00
Chris Burel fc2fc8459b Fix missing return; statement (this is why we use -Wunused-value)
Signed-off-by: Chris Burel <burelc@amazon.com>
2022-02-10 15:36:21 -08:00
Jeremy Ong aec7b58c39 Introduce Atom/GraphicsDevMode settings registry key
When `"Atom": {"GraphicsDevMode": true}` is found in a `.setreg` file,
PDBs for all shaders will be emitted to their corresponding output
locations. This allows global PDB generation without needing to
explicitly modify each `.shader` file to include the `GenerateDebugInfo`
compilation option.

Signed-off-by: Jeremy Ong <jcong@amazon.com>
2022-02-10 02:27:49 -07:00
moudgils 608411ab99 Metal pso caching support via MTLBinaryArchive (#7212)
* PipelineLibrary (PSO Caching) support for Metal

- API changes to handle Metal drivers implictly doing save/load of PipelineLibrary data
- Fixed up code related to Metal device selection
- PipelineLibrary support for Mac and ios

Signed-off-by: moudgils <moudgils@amazon.com>

* Fix compile errors for Dx12, Vulkan backend + Unit tests

Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>

* Fixed errors related to M1 GPU

Signed-off-by: moudgils <moudgils@amazon.com>

* Fix a minor 'tab' validation issue

Signed-off-by: moudgils <moudgils@amazon.com>

* Addressed feedback

Signed-off-by: moudgils <moudgils@amazon.com>

* Minor feedback

Signed-off-by: moudgils <moudgils@amazon.com>

* Added a few asserts

Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>

* Fix a typo

Signed-off-by: moudgils <moudgils@amazon.com>
2022-02-02 10:50:37 -08:00
dmcdiarmid-ly 5f7a30f8da Added DiffuseProbeGrid Visualization passes, shaders, and editor controls.
Changed the DiffuseGI passes to override IsEnabled() instead of exiting early from FrameBeginInternal.

Signed-off-by: dmcdiarmid-ly <63674186+dmcdiarmid-ly@users.noreply.github.com>
2022-01-29 19:37:46 -07:00
lumberyard-employee-dm b9824ed172 Updated all array_view uses with the C++20 span. (#7157)
* Updated all array_view uses with the C++20 span.

The updates were done in the following order
1. `AZStd::array_view<([^>].+)\* ?>`  -> `AZStd::span<\1 const>`
2. `AZStd::array_view<(?:const )(.+)>` -> `AZStd::span<const \1>`
3. `AZStd::array_view` -> `AZStd::span`

Removed the implementation of array_view.

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Added missing whitespace between `const` and the typename for spans.

Updated the ShaderTest comparison of the ShaderResourceGroupLayout span
to compare the sizes as well

Updated comments on some of the methods that stated that they return "an
array" to mention they return "a span".

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
2022-01-26 16:15:47 -06:00
moudgils d95e157f48 Different Pso cache per vendor/driver (#6893)
* Support to add a different PSO cache per vendor/driver version. Also added support to have a differnt cache for Warp

Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>

* Added a way to reset PSO cache for everyone

Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>

* Fix tabbing for one line which is failing validation

Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>
2022-01-14 12:24:58 -08:00
AMZN-byrcolin c778606c89 Templates restricted (#6498)
* Templates/Restricted upgrade/fixes:
Fixed template storage format: templates now only store true relative paths and no longer save "origin" paths and "optional" has been removed, it was never used.
Upgraded all templates to new standard
Template system now correctly handles child objects: Child objects no longer have to specify restricted they inherit from parent
Restricted now operates at the object level and makes no assumptions about parent
Restricted templates can now be combined and seperated on creation
ly_get_list_relative_filename has been deprecated for o3de_pal_dir
All Gems/Projects/Templates updated to use new code

Signed-off-by: byrcolin <byrcolin@amazon.com>
2022-01-14 10:27:20 -08:00
Chris Galvan 7c8d1cdf8c Merge pull request #6258 from aws-lumberyard-dev/Network/olexl/rhi_compile_fixes
Network/olexl/rhi compile fixes
2022-01-04 11:29:27 -06:00
Mike Balfour 17f928cddd Removed chatty profile markers. (#6556)
* Removed chatty profile markers.
These 4 markers removed tens of thousands of events, which reduced an example capture from 1685 ms to 1614 ms and made it far more readable.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Restored one marker

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>
2021-12-23 11:53:17 -06:00
rgba16f d5e6ec5758 Change the nvidia Aftermath integration to use c strings directly rather than convert to an AZStd::string (#6535)
Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>
2021-12-22 11:30:32 -06:00
bosnichd d5b9cf10cf Collection of miscellaneous PAL changes required for restricted platforms. (#6482)
Signed-off-by: bosnichd <bosnichd@amazon.com>
2021-12-20 08:15:10 -07:00
rgba16f f82b329291 Minor optimizations from profiling. (#6416)
Remove noisy profile marker in the SRG validator
Make the SRG compile marker say which srg is being compiled
Move some dx12 validation code behind the AZ_RHI_ENABLE_VALIDATION define

Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>
2021-12-15 15:06:05 -06:00
dmcdiarmid-ly 4d187b0980 Minor changes to RayTracingScratchBuffer flag.
Signed-off-by: dmcdiarmid-ly <63674186+dmcdiarmid-ly@users.noreply.github.com>
2021-12-12 18:43:12 -07:00
moudgils 2aecf9557c Fixed SRG updated related crash (#6317)
Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>
2021-12-10 09:26:41 -08:00
moudgils 3540974b08 Multiple bug fixes (#6221)
* Multiple bug fixes
 - Handle Dx12 validation error related to multiple resource transitions happening on the same resource.
 - Added API to better query for image/buffer views associated with an attachment.
 - Address possible serialization issues by usage of size_t
 - Reduced number of Descriptor sets allowed per SRG Pool in order to reduce descriptor waste.

Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>

* Addressed minor feedback

Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>

* Fix compile issues

Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>

* Missed a few other fixes

Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>
2021-12-09 09:45:45 -08:00
AMZN-Olex d39ae32f2d Cleanup
Signed-off-by: AMZN-Olex <5432499+AMZN-Olex@users.noreply.github.com>
2021-12-08 14:32:20 -05:00
AMZN-Olex b5e61356b1 Compile time fixes for AZ_PROFILE macros
Signed-off-by: AMZN-Olex <5432499+AMZN-Olex@users.noreply.github.com>
2021-12-08 14:30:45 -05:00
Esteban Papp e79d79ec45 Fixes some missing includes/declaring budgets (#6238)
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
2021-12-08 09:53:37 -08:00
Esteban Papp 5cca52e73c Merge branch 'development' into redcode/driller_removal
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>

# Conflicts:
#	Code/Framework/AzCore/AzCore/azcore_files.cmake
#	Gems/Atom/Feature/Common/Assets/Materials/Presets/MacBeth/15_red_sRGB.tif
2021-12-07 13:31:55 -08:00
rgba16f aad16acf1f Jobify the draw item list sort in View::FinalizeDrawLists (#6176)
Jobification of the sort saves 0.7ms/frame on the HighInstanceTest on my pc.
Make MeshFeatureProcessor update of the mesh cull bounds part of the job work rather than part of the simulate work. This saves 0.1ms/frame on the HighInstanceTest

Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>
2021-12-07 10:44:12 -06:00
Esteban Papp bb685ee40b Merge branch 'development' into redcode/driller_removal
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
2021-12-02 18:12:48 -08:00
Esteban Papp 0b9497cd45 Changes call from AZ_TRACE to AZ_PROFILE. AZ_TRACE uses a driller bus that is going to be removed
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
2021-12-02 17:12:25 -08:00
Esteban Papp bda818dec0 Removes driller usage from Atom
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
2021-12-02 14:04:18 -08:00
bosnichd 7a0282a534 Fix debug ImGui asserts I introduced in [b2c13b2]. (#6104)
Also allow different D3D12_ROOT_SIGNATURE flags to be set for each platform.

Signed-off-by: bosnichd <bosnichd@amazon.com>
2021-12-02 14:17:12 -07:00
Jeremy Ong 816d1f1b3d Add CLI option to enable PIX GPU events without expressing loading the
Pix runtime

Signed-off-by: Jeremy Ong <jcong@amazon.com>
2021-12-01 11:09:01 -07:00
Tommy Walton 214b47a0d5 Merge commit 'b20a9b5f39b025475d74f166a2634f74b835fdca' into amzn-tommy/gitflow_211116_o3de2 2021-11-16 12:55:14 -08:00
bosnichd b20a9b5f39 Some modifications required for restricted platforms: (#5624)
- Replace AZ_TRAIT_MAX_JOB_MANAGER_WORKER_THREADS with AZ_TRAIT_THREAD_NUM_JOB_MANAGER_WORKER_THREADS that allows the number of threads created by the job manager to be set directly.
- Add AZ_TRAIT_THREAD_NUM_TASK_GRAPH_WORKER_THREADS that allows the number of threads created by the task graph to be set directly.
- Add a define that forces the AsyncUploadQueue to use the primary copy queue instead of creating a secondary copy queue.

Signed-off-by: bosnichd <bosnichd@amazon.com>
2021-11-16 08:27:32 -07:00
rgba16f 394ba9a8bc Atom CPU threading optimization (#5481)
* Small change to make the RasterPass Scope jobs split the work more evenly over the cores

Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>

* Update with PR feedback. Remove scale of EstimatedItemCount, modify the command list cost threshold instead

Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>
2021-11-11 14:32:42 -06:00
rgba16f cebf6e2de3 Atom CPU threading optimization (#5481)
* Small change to make the RasterPass Scope jobs split the work more evenly over the cores

Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>

* Update with PR feedback. Remove scale of EstimatedItemCount, modify the command list cost threshold instead

Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>
2021-11-10 12:08:55 -08:00
bosnichd 600bb5b34e Fix alt-tabbing out of full screen on Windows. (#5288)
Signed-off-by: bosnichd <bosnichd@amazon.com>
2021-11-04 11:17:52 -06:00
Esteban Papp 475338cfad Merge branch 'development' into o3de_sdk/installer_configs
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
2021-10-28 18:29:52 -07:00
Esteban Papp 46fc1a720c Fixes monolithic and non-monolithic installed builds (test project builds against debug/profile non-monolithic and release monolithic)
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
2021-10-27 13:04:10 -07:00
galibzon 42a14079f2 Fix naming for DisableOptimizations vs DxcDisableOptimizations (#5016)
Signed-off-by: garrieta <garrieta@amazon.com>
2021-10-26 17:48:28 -05:00
moudgils 5cefd552a6 - Optimize SRG compilation to not update the whole SRG if not needed across all backends (#4499)
- Each resource type is tracked and updated separately
- Added caching ability for Raytracing srg to save ~2ms for a scene containing 100 x 50 vegetation patch

Signed-off-by: moudgils <moudgils@amazon.com>
2021-10-12 13:24:40 -07:00
Scott Romero a95c609bd8 [development] Migrate Atom CPU timing stats tracking to use global stats profiler (#4549)
This change is a preparation for moving the CPU profiler/visualization system from Atom into its own Gem by removing the dependency on local time tracking object AZ::RHI::CpuTimingStatistics

Full changes include:
- Removed all usage of AZ::RHI::CpuTimingStatistics
-- Replaced with pushing to AZ::Statistics::StatisticalProfilerProxy global instance
- Promoted VariableTimer from AZ::RHI to AZ::Debug
- Removed now unused CpuTimingStatistics.h

Signed-off-by: AMZN-ScottR 24445312+AMZN-ScottR@users.noreply.github.com
2021-10-11 14:00:42 -07:00
Qing Tao 5f8e60f4bb ATOM-16558 Buffer memory leak (#4444)
Fixed the memory leaking with ID3D12CommandAllocator in DX12 AsyncUploadQueue. Add reset for the ID3D12CommandAllocator when the commandlist was executed.
Fixed another small memory leak in NativeWindow.

Signed-off-by: Qing Tao <qingtao@amazon.com>
2021-10-01 15:55:37 -07:00
Jeremy Ong 96fed44fe8 Merge pull request #4342 from aws-lumberyard-dev/pdbfix
Disable Vulkan PDB generation and fix D3D12 PDBs
2021-09-27 10:54:50 -06:00
moudgils 5b6e342fe1 Add support for gpu descriptor heap compaction amongst other things (#4219)
* Primary Support to compact shader visible Cbv/Srv/Uav heap if it fragments enough to run out of descriptor handles

- Split the main heap into two sections - static handles and dynamic handles for descriptor tables
- Add support to data drive number of allowed static handles
- Add support to data drive ability to compact the relevant shader visible heap as there is overhead associated with compaction
- If compaction is enabled we create two shader visible ehaps and ping pong between them since you can not compact an active heap as it needs to stay active for 3 frames atleast
- As part of compaction we copy over the static handles as is but recreate all the dynamic section(i.e descriptaor tables) by tracking all the active SRGs, reallocating the descriptor tables and updating them from the non-shader visible heap
- Enabled 3 fences for cpu/gpu synchronization so that cpu can get 3 frames ahead of gpu
- Use fixed_wstring for commandlist name as a perf optimization

Signed-off-by: moudgils <moudgils@amazon.com>

* - Disable Heap compaction by default
- Disable PSO caching when WARP is enabled
- Misc cleanup

Signed-off-by: moudgils <moudgils@amazon.com>

* Address Feedback

Signed-off-by: moudgils <moudgils@amazon.com>

* Address feedback

Signed-off-by: moudgils <moudgils@amazon.com>
2021-09-27 09:38:56 -07:00
Jeremy Ong a3cc8845dd Disable Vulkan PDB generation and fix D3D12 PDBs
Vulkan PDBs are currently broken because debug data isn't stripped from
the shader binary. Furthermore, sub-id hashing is broken because sub-ids
count from 1 which generates a collision on the first sub-object.
Changing the default value for the sub-id argument resolves this.

Signed-off-by: Jeremy Ong <jcong@amazon.com>
2021-09-27 01:21:31 -06:00
Scott Romero 8cbc5bc447 [development] Atom CPU profiler include cleanup (#4272)
- Removed all unnecessary includes to Atom CpuProfiler.h
 - Added includes to AzCore Profiler.h where necessary

Signed-off-by: AMZN-ScottR 24445312+AMZN-ScottR@users.noreply.github.com
2021-09-23 11:14:22 -07:00
Scott Romero 36bcf5849a [development] Migrated Atom CPU profiler to utilize new AzCore Profiler interface and related macros (#4160)
- Added new interface type AZ::Debug::Profiler to externally register profiler systems
 - Modified the Atom CPU profiler to register as an AzCore profiler
 -- This allows full engine markers to be visualized in the associated ImGui tool
 - Converted all AZ_ATOM_PROFILE_* macros to use AZ_PROFILE_* macros instead

Signed-off-by: AMZN-ScottR 24445312+AMZN-ScottR@users.noreply.github.com
2021-09-20 11:40:57 -07:00
Esteban Papp 9f0de3b916 Fixes for toolchain 19.28.29913.0
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
2021-09-14 18:20:44 -07:00
Mike Balfour 2629216e46 Optimize MemoryView::SetName (#4052)
* Optimize MemoryView SetName
Added a second version that uses wstring_view instead of string_view so that no temporaries need to be created when passing in a string literal that's already a wstring.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Changed to use SetPrivateData

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>
2021-09-10 14:37:32 -05:00
bosnichd d366620818 More PAL related changes required for restricted platforms. (#4037)
Signed-off-by: bosnichd <bosnichd@amazon.com>
2021-09-10 09:08:07 -06:00
moudgils 10900fee38 Disable PSO caching if Renderdoc or Pix dlls are loaded as they confl… (#3976)
* Disable PSO caching if Renderdoc or Pix dlls are loaded as they conflict with dx12 api

* Add support for command line param --enablePixGPU which manually loads the pix gpu capture dll
 - This will allow pix to attach to a running process if the enablePixGPU is enabled
 - Support for enabling/disabling gpu markers based on enablePixGPU

Signed-off-by: moudgils <moudgils@amazon.com>
2021-09-09 14:30:35 -07:00
bosnichd 9976ee2b8e Miscellaneous fixes and PAL changes required for restricted platforms. (#4021)
* Miscellaneous fixes and PAL changes required for restricted platforms.

Signed-off-by: bosnichd <bosnichd@amazon.com>

* Rename O3DE::ProjectManager::ProjectUtils::ReplaceFile -> ReplaceProjectFile to prevent conflict with Windows ReplaceFile #define

Signed-off-by: bosnichd <bosnichd@amazon.com>
2021-09-09 12:09:17 -06:00
moudgils 4d5b047c1b Fix PipelineLibraries (DX12 backend). (#3768)
* Fix loading of PipelineLibraries from disk for DX12 backend.

Signed-off-by: moudgils <moudgils@amazon.com>

* Disabled Saving out PipelineLibraries (for DX12) if pix or Renderdoc is enabled.
Addressed some feedback

Signed-off-by: moudgils <moudgils@amazon.com>

* Fixed an issue withe loading PipelineLibraries and added a cleaner abstraction to not save empty libraries for dx12

Signed-off-by: moudgils <moudgils@amazon.com>
2021-09-07 11:03:11 -07:00
Esteban Papp 39cf45e544 Setting /permissive- to make MSVC more "standard" (#3701)
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
2021-08-31 14:46:50 -07:00
jiaweig a7309cf2eb ATOM-16346 Change Atom setreg path (#3690)
* Changed path Amazon to O3DE. Fixed issues that setreg is not loaded in game launchers.

Signed-off-by: jiaweig <jiaweig@amazon.com>

* Add brackets.

Signed-off-by: jiaweig <jiaweig@amazon.com>
2021-08-30 14:57:46 -07:00