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/
__pycache__
AssetProcessorTemp/**
CMakeUserPresets.json
[Bb]uild/**
[Oo]ut/**
[Cc]ache/

@ -18,6 +18,12 @@
#include <AzCore/std/functional.h>
#include <AzCore/Math/Crc.h>
#ifdef USE_PIX
#include <AzCore/PlatformIncl.h>
#include <WinPixEventRuntime/pix3.h>
#endif
namespace AZ
{
namespace Debug
@ -495,6 +501,10 @@ namespace AZ
ProfilerRegister*
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();
ProfilerRegister* reg = CreateRegister(systemName, name, function, line, ProfilerRegister::PRT_TIME);
AZStd::chrono::system_clock::time_point end = AZStd::chrono::system_clock::now();
@ -537,6 +547,11 @@ namespace AZ
void ProfilerRegister::TimerStart(ProfilerSection* section)
{
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)
{
section->m_register = reg;
@ -555,6 +570,10 @@ namespace AZ
//=========================================================================
void ProfilerRegister::TimerStop()
{
#if defined(USE_PIX)
PIXEndEvent();
#endif
AZStd::chrono::system_clock::time_point end = AZStd::chrono::system_clock::now();
ProfilerSection* section = m_threadData->m_stack.back();
AZStd::chrono::microseconds elapsedTime = end - section->m_start;

@ -5,8 +5,7 @@
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#ifndef AZCORE_PROFILER_H
#define AZCORE_PROFILER_H 1
#pragma once
#include <AzCore/std/chrono/chrono.h>
#include <AzCore/std/function/function_fwd.h>
@ -615,5 +614,3 @@ 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)
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(
NAME AzCore STATIC
NAMESPACE AZ
@ -45,6 +51,10 @@ ly_add_target(
3rdParty::zstd
3rdParty::cityhash
${AZ_CORE_RADTELEMETRY_BUILD_DEPENDENCIES}
${AZ_CORE_PIX_BUILD_DEPENDENCIES}
COMPILE_DEFINITIONS
PUBLIC
${AZ_CORE_PIX_BUILD_DEFINES}
)
ly_add_source_properties(
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
if(PAL_TRAIT_PIX_AVAILABLE)
set(USE_PIX_DEFINE "USE_PIX")
set(PIX_BUILD_DEPENDENCY "3rdParty::pix")
else()
set(USE_PIX_DEFINE "")
set(PIX_BUILD_DEPENDENCY "")
endif()
@ -94,9 +92,6 @@ ly_add_target(
AZ::AzCore
${PIX_BUILD_DEPENDENCY}
Gem::Atom_RHI.Reflect
COMPILE_DEFINITIONS
PRIVATE
${USE_PIX_DEFINE}
)
ly_add_target(
@ -124,7 +119,6 @@ ly_add_target(
${PIX_BUILD_DEPENDENCY}
COMPILE_DEFINITIONS
PRIVATE
${USE_PIX_DEFINE}
${USE_NSIGHT_AFTERMATH_DEFINE}
)
@ -149,9 +143,6 @@ ly_add_target(
Gem::Atom_RHI_DX12.Reflect
Gem::Atom_RHI_DX12.Private.Static
${PIX_BUILD_DEPENDENCY}
COMPILE_DEFINITIONS
PRIVATE
${USE_PIX_DEFINE}
)
if(PAL_TRAIT_BUILD_HOST_TOOLS)

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

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

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

@ -21,18 +21,6 @@ endif()
set(PAL_TRAIT_PIX_AVAILABLE FALSE)
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)
unset(aftermath_header CACHE)
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_PIX_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(
NAME pix
3RDPARTY_ROOT_DIRECTORY "${PIX_PATH}"
VERSION
3RDPARTY_ROOT_DIRECTORY ${ATOM_PIX_PATH_CMAKE_FORMATTED}
INCLUDE_DIRECTORIES include
)
endif()

@ -9,6 +9,7 @@
set(FILES
BuiltInPackages.cmake
FindOpenGLInterface.cmake
FindPIX.cmake
FindRadTelemetry.cmake
FindVkValidation.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_CPACK_SUPPORTED FALSE)
ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED FALSE)
# Test library support
ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_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_CPACK_SUPPORTED FALSE)
ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED FALSE)
# Test library support
ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_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_CPACK_SUPPORTED FALSE)
ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED FALSE)
# Test library support
ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_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_CPACK_SUPPORTED TRUE)
ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED TRUE)
# Test library support
ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_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_CPACK_SUPPORTED FALSE)
ly_set(PAL_TRAIT_PROF_PIX_SUPPORTED FALSE)
# Test library support
ly_set(PAL_TRAIT_TEST_GOOGLE_TEST_SUPPORTED FALSE)
ly_set(PAL_TRAIT_TEST_GOOGLE_BENCHMARK_SUPPORTED FALSE)

Loading…
Cancel
Save