* 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>
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>
* 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>
* 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>
* 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>
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>
* 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>
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>
- 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>
* 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>
* 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>
- 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>
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
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>
* 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>
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>
- 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
- 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
* 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>
* 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>
* 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>
* 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>
* 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>