Add Windows PIX runtime support

Signed-off-by: Jeremy Ong <jcong@amazon.com>
monroegm-disable-blank-issue-2
Jeremy Ong 4 years ago
parent 90845313fb
commit d15d40fec6

1
.gitignore vendored

@ -3,6 +3,7 @@
.vscode/ .vscode/
__pycache__ __pycache__
AssetProcessorTemp/** AssetProcessorTemp/**
CMakeUserPresets.json
[Bb]uild/** [Bb]uild/**
[Oo]ut/** [Oo]ut/**
[Cc]ache/ [Cc]ache/

@ -18,6 +18,12 @@
#include <AzCore/std/functional.h> #include <AzCore/std/functional.h>
#include <AzCore/Math/Crc.h> #include <AzCore/Math/Crc.h>
#ifdef USE_PIX
#include <AzCore/PlatformIncl.h>
#include <WinPixEventRuntime/pix3.h>
#endif
namespace AZ namespace AZ
{ {
namespace Debug namespace Debug
@ -495,6 +501,10 @@ namespace AZ
ProfilerRegister* ProfilerRegister*
ProfilerRegister::TimerCreateAndStart(const char* systemName, const char* name, ProfilerSection * section, const char* function, int line) ProfilerRegister::TimerCreateAndStart(const char* systemName, const char* name, ProfilerSection * section, const char* function, int line)
{ {
#if defined(USE_PIX)
PIXBeginEvent(PIX_COLOR(0, 0, 1), "%s:%s", name, function);
#endif
AZStd::chrono::system_clock::time_point start = AZStd::chrono::system_clock::now(); AZStd::chrono::system_clock::time_point start = AZStd::chrono::system_clock::now();
ProfilerRegister* reg = CreateRegister(systemName, name, function, line, ProfilerRegister::PRT_TIME); ProfilerRegister* reg = CreateRegister(systemName, name, function, line, ProfilerRegister::PRT_TIME);
AZStd::chrono::system_clock::time_point end = AZStd::chrono::system_clock::now(); AZStd::chrono::system_clock::time_point end = AZStd::chrono::system_clock::now();
@ -537,6 +547,11 @@ namespace AZ
void ProfilerRegister::TimerStart(ProfilerSection* section) void ProfilerRegister::TimerStart(ProfilerSection* section)
{ {
ProfilerRegister* reg = this; ProfilerRegister* reg = this;
#if defined(USE_PIX)
PIXBeginEvent(PIX_COLOR(0, 0, 1), "%s:%s", reg->m_name, reg->m_function);
#endif
if (reg->m_isActive) if (reg->m_isActive)
{ {
section->m_register = reg; section->m_register = reg;
@ -555,6 +570,10 @@ namespace AZ
//========================================================================= //=========================================================================
void ProfilerRegister::TimerStop() void ProfilerRegister::TimerStop()
{ {
#if defined(USE_PIX)
PIXEndEvent();
#endif
AZStd::chrono::system_clock::time_point end = AZStd::chrono::system_clock::now(); AZStd::chrono::system_clock::time_point end = AZStd::chrono::system_clock::now();
ProfilerSection* section = m_threadData->m_stack.back(); ProfilerSection* section = m_threadData->m_stack.back();
AZStd::chrono::microseconds elapsedTime = end - section->m_start; AZStd::chrono::microseconds elapsedTime = end - section->m_start;

@ -5,8 +5,7 @@
* SPDX-License-Identifier: Apache-2.0 OR MIT * SPDX-License-Identifier: Apache-2.0 OR MIT
* *
*/ */
#ifndef AZCORE_PROFILER_H #pragma once
#define AZCORE_PROFILER_H 1
#include <AzCore/std/chrono/chrono.h> #include <AzCore/std/chrono/chrono.h>
#include <AzCore/std/function/function_fwd.h> #include <AzCore/std/function/function_fwd.h>
@ -615,5 +614,3 @@ namespace AZ
} }
} // namespace AZ } // namespace AZ
#endif // AZCORE_PROFILER_H
#pragma once

@ -19,6 +19,12 @@ if(LY_RAD_TELEMETRY_ENABLED)
set(AZ_CORE_RADTELEMETRY_BUILD_DEPENDENCIES 3rdParty::RadTelemetry) set(AZ_CORE_RADTELEMETRY_BUILD_DEPENDENCIES 3rdParty::RadTelemetry)
endif() endif()
if(PAL_TRAIT_PROF_PIX_SUPPORTED AND LY_PIX_ENABLED)
set(LY_PIX_PATH "${LY_3RDPARTY_PATH}/winpixeventruntime" CACHE PATH "Path to the Windows Pix Event Runtime.")
set(AZ_CORE_PIX_BUILD_DEPENDENCIES 3rdParty::pix)
set(AZ_CORE_PIX_BUILD_DEFINES "USE_PIX")
endif()
ly_add_target( ly_add_target(
NAME AzCore STATIC NAME AzCore STATIC
NAMESPACE AZ NAMESPACE AZ
@ -45,6 +51,10 @@ ly_add_target(
3rdParty::zstd 3rdParty::zstd
3rdParty::cityhash 3rdParty::cityhash
${AZ_CORE_RADTELEMETRY_BUILD_DEPENDENCIES} ${AZ_CORE_RADTELEMETRY_BUILD_DEPENDENCIES}
${AZ_CORE_PIX_BUILD_DEPENDENCIES}
COMPILE_DEFINITIONS
PUBLIC
${AZ_CORE_PIX_BUILD_DEFINES}
) )
ly_add_source_properties( ly_add_source_properties(
SOURCES SOURCES

@ -12,10 +12,8 @@ ly_get_list_relative_pal_filename(pal_source_dir ${CMAKE_CURRENT_LIST_DIR}/Sourc
include(${pal_source_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) # PAL_TRAIT_ATOM_RHI_DX12_SUPPORTED include(${pal_source_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) # PAL_TRAIT_ATOM_RHI_DX12_SUPPORTED
if(PAL_TRAIT_PIX_AVAILABLE) if(PAL_TRAIT_PIX_AVAILABLE)
set(USE_PIX_DEFINE "USE_PIX")
set(PIX_BUILD_DEPENDENCY "3rdParty::pix") set(PIX_BUILD_DEPENDENCY "3rdParty::pix")
else() else()
set(USE_PIX_DEFINE "")
set(PIX_BUILD_DEPENDENCY "") set(PIX_BUILD_DEPENDENCY "")
endif() endif()
@ -94,9 +92,6 @@ ly_add_target(
AZ::AzCore AZ::AzCore
${PIX_BUILD_DEPENDENCY} ${PIX_BUILD_DEPENDENCY}
Gem::Atom_RHI.Reflect Gem::Atom_RHI.Reflect
COMPILE_DEFINITIONS
PRIVATE
${USE_PIX_DEFINE}
) )
ly_add_target( ly_add_target(
@ -124,7 +119,6 @@ ly_add_target(
${PIX_BUILD_DEPENDENCY} ${PIX_BUILD_DEPENDENCY}
COMPILE_DEFINITIONS COMPILE_DEFINITIONS
PRIVATE PRIVATE
${USE_PIX_DEFINE}
${USE_NSIGHT_AFTERMATH_DEFINE} ${USE_NSIGHT_AFTERMATH_DEFINE}
) )
@ -149,9 +143,6 @@ ly_add_target(
Gem::Atom_RHI_DX12.Reflect Gem::Atom_RHI_DX12.Reflect
Gem::Atom_RHI_DX12.Private.Static Gem::Atom_RHI_DX12.Private.Static
${PIX_BUILD_DEPENDENCY} ${PIX_BUILD_DEPENDENCY}
COMPILE_DEFINITIONS
PRIVATE
${USE_PIX_DEFINE}
) )
if(PAL_TRAIT_BUILD_HOST_TOOLS) if(PAL_TRAIT_BUILD_HOST_TOOLS)

@ -7,5 +7,4 @@
# #
set(PAL_TRAIT_ATOM_RHI_DX12_SUPPORTED FALSE) set(PAL_TRAIT_ATOM_RHI_DX12_SUPPORTED FALSE)
set(PAL_TRAIT_PIX_AVAILABLE FALSE)
set(PAL_TRAIT_AFTERMATH_AVAILABLE FALSE) set(PAL_TRAIT_AFTERMATH_AVAILABLE FALSE)

@ -7,5 +7,4 @@
# #
set(PAL_TRAIT_ATOM_RHI_DX12_SUPPORTED FALSE) set(PAL_TRAIT_ATOM_RHI_DX12_SUPPORTED FALSE)
set(PAL_TRAIT_PIX_AVAILABLE FALSE)
set(PAL_TRAIT_AFTERMATH_AVAILABLE FALSE) set(PAL_TRAIT_AFTERMATH_AVAILABLE FALSE)

@ -7,5 +7,4 @@
# #
set(PAL_TRAIT_ATOM_RHI_DX12_SUPPORTED FALSE) set(PAL_TRAIT_ATOM_RHI_DX12_SUPPORTED FALSE)
set(PAL_TRAIT_PIX_AVAILABLE FALSE)
set(PAL_TRAIT_AFTERMATH_AVAILABLE FALSE) set(PAL_TRAIT_AFTERMATH_AVAILABLE FALSE)

@ -21,18 +21,6 @@ endif()
set(PAL_TRAIT_PIX_AVAILABLE FALSE) set(PAL_TRAIT_PIX_AVAILABLE FALSE)
unset(pix3_header CACHE) unset(pix3_header CACHE)
file(TO_CMAKE_PATH "$ENV{ATOM_PIX_PATH}" ATOM_PIX_PATH_CMAKE_FORMATTED)
find_file(pix3_header
pix3.h
PATHS
"${ATOM_PIX_PATH_CMAKE_FORMATTED}/Include/WinPixEventRuntime"
)
mark_as_advanced(pix3_header)
if(pix3_header)
set(PAL_TRAIT_PIX_AVAILABLE TRUE)
endif()
set(PAL_TRAIT_AFTERMATH_AVAILABLE FALSE) set(PAL_TRAIT_AFTERMATH_AVAILABLE FALSE)
unset(aftermath_header CACHE) unset(aftermath_header CACHE)
file(TO_CMAKE_PATH "$ENV{ATOM_AFTERMATH_PATH}" ATOM_AFTERMATH_PATH_CMAKE_FORMATTED) file(TO_CMAKE_PATH "$ENV{ATOM_AFTERMATH_PATH}" ATOM_AFTERMATH_PATH_CMAKE_FORMATTED)

@ -7,5 +7,4 @@
# #
set(PAL_TRAIT_ATOM_RHI_DX12_SUPPORTED FALSE) set(PAL_TRAIT_ATOM_RHI_DX12_SUPPORTED FALSE)
set(PAL_TRAIT_PIX_AVAILABLE FALSE)
set(PAL_TRAIT_AFTERMATH_AVAILABLE FALSE) set(PAL_TRAIT_AFTERMATH_AVAILABLE FALSE)

@ -6,15 +6,14 @@
# #
# #
file(TO_CMAKE_PATH "$ENV{ATOM_PIX_PATH}" ATOM_PIX_PATH_CMAKE_FORMATTED) if(LY_PIX_ENABLED)
file(TO_CMAKE_PATH "${LY_PIX_PATH}" PIX_PATH)
message(STATUS "PIX PATH ${PIX_PATH}")
if(EXISTS "${ATOM_PIX_PATH_CMAKE_FORMATTED}/include/WinPixEventRuntime/pix3.h")
ly_add_external_target( ly_add_external_target(
NAME pix NAME pix
3RDPARTY_ROOT_DIRECTORY "${PIX_PATH}"
VERSION VERSION
3RDPARTY_ROOT_DIRECTORY ${ATOM_PIX_PATH_CMAKE_FORMATTED}
INCLUDE_DIRECTORIES include INCLUDE_DIRECTORIES include
) )
endif() endif()

@ -9,6 +9,7 @@
set(FILES set(FILES
BuiltInPackages.cmake BuiltInPackages.cmake
FindOpenGLInterface.cmake FindOpenGLInterface.cmake
FindPIX.cmake
FindRadTelemetry.cmake FindRadTelemetry.cmake
FindVkValidation.cmake FindVkValidation.cmake
FindWwise.cmake FindWwise.cmake

@ -18,6 +18,8 @@ ly_set(PAL_TRAIT_BUILD_UNITY_EXCLUDE_EXTENSIONS)
ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE TRUE) ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE TRUE)
ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED FALSE) ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED FALSE)
ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED FALSE)
# Test library support # Test library support
ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED FALSE) ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED FALSE)
ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED FALSE) ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED FALSE)

@ -18,6 +18,8 @@ ly_set(PAL_TRAIT_BUILD_UNITY_EXCLUDE_EXTENSIONS)
ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE FALSE) ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE FALSE)
ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED FALSE) ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED FALSE)
ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED FALSE)
# Test library support # Test library support
ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED TRUE) ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED TRUE)
ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED TRUE) ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED TRUE)

@ -18,6 +18,8 @@ ly_set(PAL_TRAIT_BUILD_UNITY_EXCLUDE_EXTENSIONS ".mm")
ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE FALSE) ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE FALSE)
ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED FALSE) ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED FALSE)
ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED FALSE)
# Test library support # Test library support
ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED TRUE) ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED TRUE)
ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED TRUE) ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED TRUE)

@ -18,6 +18,8 @@ ly_set(PAL_TRAIT_BUILD_UNITY_EXCLUDE_EXTENSIONS)
ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE FALSE) ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE FALSE)
ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED TRUE) ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED TRUE)
ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED TRUE)
# Test library support # Test library support
ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED TRUE) ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED TRUE)
ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED TRUE) ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED TRUE)

@ -18,6 +18,8 @@ ly_set(PAL_TRAIT_BUILD_UNITY_EXCLUDE_EXTENSIONS ".mm")
ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE TRUE) ly_set(PAL_TRAIT_BUILD_EXCLUDE_ALL_TEST_RUNS_FROM_IDE TRUE)
ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED FALSE) ly_set(PAL_TRAIT_BUILD_CPACK_SUPPORTED FALSE)
ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED FALSE)
# Test library support # Test library support
ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED FALSE) ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED FALSE)
ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED FALSE) ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED FALSE)

Loading…
Cancel
Save