mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-17 17:25:47 -04:00
dep: Add WinPixEventRuntime
This commit is contained in:
175
dep/msvc/winpixeventruntime/include/WinPixEventRuntime/pix3.h
Normal file
175
dep/msvc/winpixeventruntime/include/WinPixEventRuntime/pix3.h
Normal file
@ -0,0 +1,175 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
|
||||
/*==========================================================================;
|
||||
*
|
||||
* Copyright (C) Microsoft Corporation. All Rights Reserved.
|
||||
*
|
||||
* File: pix3.h
|
||||
* Content: PIX include file
|
||||
*
|
||||
****************************************************************************/
|
||||
#pragma once
|
||||
|
||||
#ifndef _PIX3_H_
|
||||
#define _PIX3_H_
|
||||
|
||||
#include <sal.h>
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error "Only C++ files can include pix3.h. C is not supported."
|
||||
#endif
|
||||
|
||||
#if !defined(USE_PIX_SUPPORTED_ARCHITECTURE)
|
||||
#if defined(_M_X64) || defined(USE_PIX_ON_ALL_ARCHITECTURES) || defined(_M_ARM64)
|
||||
#define USE_PIX_SUPPORTED_ARCHITECTURE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(USE_PIX)
|
||||
#if defined(USE_PIX_SUPPORTED_ARCHITECTURE) && (defined(_DEBUG) || DBG || defined(PROFILE) || defined(PROFILE_BUILD)) && !defined(_PREFAST_)
|
||||
#define USE_PIX
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(USE_PIX) && !defined(USE_PIX_SUPPORTED_ARCHITECTURE)
|
||||
#pragma message("Warning: Pix markers are only supported on AMD64 and ARM64")
|
||||
#endif
|
||||
|
||||
|
||||
// These flags are used by both PIXBeginCapture and PIXGetCaptureState
|
||||
#define PIX_CAPTURE_TIMING (1 << 0)
|
||||
#define PIX_CAPTURE_GPU (1 << 1)
|
||||
#define PIX_CAPTURE_FUNCTION_SUMMARY (1 << 2)
|
||||
#define PIX_CAPTURE_FUNCTION_DETAILS (1 << 3)
|
||||
#define PIX_CAPTURE_CALLGRAPH (1 << 4)
|
||||
#define PIX_CAPTURE_INSTRUCTION_TRACE (1 << 5)
|
||||
#define PIX_CAPTURE_SYSTEM_MONITOR_COUNTERS (1 << 6)
|
||||
#define PIX_CAPTURE_VIDEO (1 << 7)
|
||||
#define PIX_CAPTURE_AUDIO (1 << 8)
|
||||
#define PIX_CAPTURE_RESERVED (1 << 15)
|
||||
|
||||
union PIXCaptureParameters
|
||||
{
|
||||
enum PIXCaptureStorage
|
||||
{
|
||||
Memory = 0,
|
||||
};
|
||||
|
||||
struct GpuCaptureParameters
|
||||
{
|
||||
PCWSTR FileName;
|
||||
} GpuCaptureParameters;
|
||||
|
||||
struct TimingCaptureParameters
|
||||
{
|
||||
PCWSTR FileName;
|
||||
UINT32 MaximumToolingMemorySizeMb;
|
||||
PIXCaptureStorage CaptureStorage;
|
||||
|
||||
BOOL CaptureGpuTiming;
|
||||
|
||||
BOOL CaptureCallstacks;
|
||||
BOOL CaptureCpuSamples;
|
||||
UINT32 CpuSamplesPerSecond;
|
||||
|
||||
BOOL CaptureFileIO;
|
||||
|
||||
BOOL CaptureVirtualAllocEvents;
|
||||
BOOL CaptureHeapAllocEvents;
|
||||
BOOL CaptureXMemEvents; // Xbox only
|
||||
BOOL CapturePixMemEvents; // Xbox only
|
||||
} TimingCaptureParameters;
|
||||
};
|
||||
|
||||
typedef PIXCaptureParameters* PPIXCaptureParameters;
|
||||
|
||||
#if defined(XBOX) || defined(_XBOX_ONE) || defined(_DURANGO) || defined(_GAMING_XBOX) || defined(_GAMING_XBOX_SCARLETT)
|
||||
#include "pix3_xbox.h"
|
||||
#else
|
||||
#include "pix3_win.h"
|
||||
#endif
|
||||
|
||||
#if defined(USE_PIX_SUPPORTED_ARCHITECTURE) && (defined(USE_PIX) || defined(USE_PIX_RETAIL))
|
||||
|
||||
#define PIX_EVENTS_ARE_TURNED_ON
|
||||
|
||||
#include "PIXEventsCommon.h"
|
||||
#include "PIXEvents.h"
|
||||
|
||||
#ifdef USE_PIX
|
||||
// Starts a programmatically controlled capture.
|
||||
// captureFlags uses the PIX_CAPTURE_* family of flags to specify the type of capture to take
|
||||
extern "C" HRESULT WINAPI PIXBeginCapture2(DWORD captureFlags, _In_opt_ const PPIXCaptureParameters captureParameters);
|
||||
inline HRESULT PIXBeginCapture(DWORD captureFlags, _In_opt_ const PPIXCaptureParameters captureParameters) { return PIXBeginCapture2(captureFlags, captureParameters); }
|
||||
|
||||
// Stops a programmatically controlled capture
|
||||
// If discard == TRUE, the captured data is discarded
|
||||
// If discard == FALSE, the captured data is saved
|
||||
// discard parameter is not supported on Windows
|
||||
extern "C" HRESULT WINAPI PIXEndCapture(BOOL discard);
|
||||
|
||||
extern "C" DWORD WINAPI PIXGetCaptureState();
|
||||
|
||||
extern "C" void WINAPI PIXReportCounter(_In_ PCWSTR name, float value);
|
||||
|
||||
#endif // USE_PIX
|
||||
|
||||
#endif // (USE_PIX_SUPPORTED_ARCHITECTURE) && (USE_PIX || USE_PIX_RETAIL)
|
||||
|
||||
#if !defined(USE_PIX_SUPPORTED_ARCHITECTURE) || !defined(USE_PIX)
|
||||
|
||||
// Eliminate these APIs when not using PIX
|
||||
inline HRESULT PIXBeginCapture2(DWORD, _In_opt_ const PIXCaptureParameters*) { return S_OK; }
|
||||
inline HRESULT PIXBeginCapture(DWORD, _In_opt_ const PIXCaptureParameters*) { return S_OK; }
|
||||
inline HRESULT PIXEndCapture(BOOL) { return S_OK; }
|
||||
inline HRESULT PIXGpuCaptureNextFrames(PCWSTR, UINT32) { return S_OK; }
|
||||
inline HRESULT PIXSetTargetWindow(HWND) { return S_OK; }
|
||||
inline HRESULT PIXForceD3D11On12() { return S_OK; }
|
||||
inline HRESULT WINAPI PIXSetHUDOptions(PIXHUDOptions) { return S_OK; }
|
||||
inline bool WINAPI PIXIsAttachedForGpuCapture() { return false; }
|
||||
inline HINSTANCE WINAPI PIXOpenCaptureInUI(PCWSTR) { return 0; }
|
||||
inline HMODULE PIXLoadLatestWinPixGpuCapturerLibrary() { return nullptr; }
|
||||
inline HMODULE PIXLoadLatestWinPixTimingCapturerLibrary() { return nullptr; }
|
||||
inline DWORD PIXGetCaptureState() { return 0; }
|
||||
inline void PIXReportCounter(_In_ PCWSTR, float) {}
|
||||
inline void PIXNotifyWakeFromFenceSignal(_In_ HANDLE) {}
|
||||
|
||||
#if !defined(USE_PIX_RETAIL)
|
||||
|
||||
inline void PIXBeginEvent(UINT64, _In_ PCSTR, ...) {}
|
||||
inline void PIXBeginEvent(UINT64, _In_ PCWSTR, ...) {}
|
||||
inline void PIXBeginEvent(void*, UINT64, _In_ PCSTR, ...) {}
|
||||
inline void PIXBeginEvent(void*, UINT64, _In_ PCWSTR, ...) {}
|
||||
inline void PIXEndEvent() {}
|
||||
inline void PIXEndEvent(void*) {}
|
||||
inline void PIXSetMarker(UINT64, _In_ PCSTR, ...) {}
|
||||
inline void PIXSetMarker(UINT64, _In_ PCWSTR, ...) {}
|
||||
inline void PIXSetMarker(void*, UINT64, _In_ PCSTR, ...) {}
|
||||
inline void PIXSetMarker(void*, UINT64, _In_ PCWSTR, ...) {}
|
||||
inline void PIXBeginRetailEvent(void*, UINT64, _In_ PCSTR, ...) {}
|
||||
inline void PIXBeginRetailEvent(void*, UINT64, _In_ PCWSTR, ...) {}
|
||||
inline void PIXEndRetailEvent(void*) {}
|
||||
inline void PIXSetRetailMarker(void*, UINT64, _In_ PCSTR, ...) {}
|
||||
inline void PIXSetRetailMarker(void*, UINT64, _In_ PCWSTR, ...) {}
|
||||
inline void PIXScopedEvent(UINT64, _In_ PCSTR, ...) {}
|
||||
inline void PIXScopedEvent(UINT64, _In_ PCWSTR, ...) {}
|
||||
inline void PIXScopedEvent(void*, UINT64, _In_ PCSTR, ...) {}
|
||||
inline void PIXScopedEvent(void*, UINT64, _In_ PCWSTR, ...) {}
|
||||
|
||||
#endif // !USE_PIX_RETAIL
|
||||
|
||||
// don't show warnings about expressions with no effect
|
||||
#pragma warning(disable:4548)
|
||||
#pragma warning(disable:4555)
|
||||
|
||||
#endif // !USE_PIX_SUPPORTED_ARCHITECTURE || !USE_PIX
|
||||
|
||||
// Use these functions to specify colors to pass as metadata to a PIX event/marker API.
|
||||
// Use PIX_COLOR() to specify a particular color for an event.
|
||||
// Or, use PIX_COLOR_INDEX() to specify a set of unique event categories, and let PIX choose
|
||||
// the colors to represent each category.
|
||||
inline UINT PIX_COLOR(BYTE r, BYTE g, BYTE b) { return 0xff000000 | (r << 16) | (g << 8) | b; }
|
||||
inline UINT PIX_COLOR_INDEX(BYTE i) { return i; }
|
||||
const UINT PIX_COLOR_DEFAULT = PIX_COLOR_INDEX(0);
|
||||
|
||||
#endif // _PIX3_H_
|
Reference in New Issue
Block a user