An open source re-implementation of the “NvDisplayConfigLDJ" tool with additional enhancements. This can be used to tweak your nvidia GPU driver settings to create custom display timings to address IIDX’s requirement if expecting proper display timings. This can also be used for any legacy IIDX versions that even expect very specific display timings, e.g. 59.95 or 60.05 hz. Furthermore, creating application profiles allows further tweaks to important GPU settings such as the current performance mode setting. This is crucial to ensure the GPU is not going into any kind of power saving states which results in non-smooth scrolling during gameplay and micro stuttering that cannot be measured on application level. Summary: Test Plan:
143 lines
8.6 KiB
C
143 lines
8.6 KiB
C
/*********************************************************************************************************\
|
|
|* *|
|
|
|* SPDX-FileCopyrightText: Copyright (c) 2019-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. *|
|
|
|* SPDX-License-Identifier: MIT *|
|
|
|* *|
|
|
|* Permission is hereby granted, free of charge, to any person obtaining a *|
|
|
|* copy of this software and associated documentation files (the "Software"), *|
|
|
|* to deal in the Software without restriction, including without limitation *|
|
|
|* the rights to use, copy, modify, merge, publish, distribute, sublicense, *|
|
|
|* and/or sell copies of the Software, and to permit persons to whom the *|
|
|
|* Software is furnished to do so, subject to the following conditions: *|
|
|
|* *|
|
|
|* The above copyright notice and this permission notice shall be included in *|
|
|
|* all copies or substantial portions of the Software. *|
|
|
|* *|
|
|
|* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *|
|
|
|* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *|
|
|
|* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *|
|
|
|* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *|
|
|
|* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *|
|
|
|* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *|
|
|
|* DEALINGS IN THE SOFTWARE. *|
|
|
|* *|
|
|
|* *|
|
|
\*********************************************************************************************************/
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////// NVIDIA SHADER EXTENSIONS ////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// This file can be included both from HLSL shader code as well as C++ code.
|
|
// The app should call NvAPI_D3D11_IsNvShaderExtnOpCodeSupported() / NvAPI_D3D12_IsNvShaderExtnOpCodeSupported()
|
|
// to check for support for every nv shader extension opcode it plans to use
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------//
|
|
//---------------------------- NV Shader Extn Version -----------------------//
|
|
//----------------------------------------------------------------------------//
|
|
#define NV_SHADER_EXTN_VERSION 1
|
|
|
|
//----------------------------------------------------------------------------//
|
|
//---------------------------- Misc constants --------------------------------//
|
|
//----------------------------------------------------------------------------//
|
|
#define NV_WARP_SIZE 32
|
|
#define NV_WARP_SIZE_LOG2 5
|
|
|
|
//----------------------------------------------------------------------------//
|
|
//---------------------------- opCode constants ------------------------------//
|
|
//----------------------------------------------------------------------------//
|
|
|
|
|
|
#define NV_EXTN_OP_SHFL 1
|
|
#define NV_EXTN_OP_SHFL_UP 2
|
|
#define NV_EXTN_OP_SHFL_DOWN 3
|
|
#define NV_EXTN_OP_SHFL_XOR 4
|
|
|
|
#define NV_EXTN_OP_VOTE_ALL 5
|
|
#define NV_EXTN_OP_VOTE_ANY 6
|
|
#define NV_EXTN_OP_VOTE_BALLOT 7
|
|
|
|
#define NV_EXTN_OP_GET_LANE_ID 8
|
|
#define NV_EXTN_OP_FP16_ATOMIC 12
|
|
#define NV_EXTN_OP_FP32_ATOMIC 13
|
|
|
|
#define NV_EXTN_OP_GET_SPECIAL 19
|
|
|
|
#define NV_EXTN_OP_UINT64_ATOMIC 20
|
|
|
|
#define NV_EXTN_OP_MATCH_ANY 21
|
|
|
|
// FOOTPRINT - For Sample and SampleBias
|
|
#define NV_EXTN_OP_FOOTPRINT 28
|
|
#define NV_EXTN_OP_FOOTPRINT_BIAS 29
|
|
|
|
#define NV_EXTN_OP_GET_SHADING_RATE 30
|
|
|
|
// FOOTPRINT - For SampleLevel and SampleGrad
|
|
#define NV_EXTN_OP_FOOTPRINT_LEVEL 31
|
|
#define NV_EXTN_OP_FOOTPRINT_GRAD 32
|
|
|
|
// SHFL Generic
|
|
#define NV_EXTN_OP_SHFL_GENERIC 33
|
|
|
|
#define NV_EXTN_OP_VPRS_EVAL_ATTRIB_AT_SAMPLE 51
|
|
#define NV_EXTN_OP_VPRS_EVAL_ATTRIB_SNAPPED 52
|
|
|
|
// HitObject API
|
|
#define NV_EXTN_OP_HIT_OBJECT_TRACE_RAY 67
|
|
#define NV_EXTN_OP_HIT_OBJECT_MAKE_HIT 68
|
|
#define NV_EXTN_OP_HIT_OBJECT_MAKE_HIT_WITH_RECORD_INDEX 69
|
|
#define NV_EXTN_OP_HIT_OBJECT_MAKE_MISS 70
|
|
#define NV_EXTN_OP_HIT_OBJECT_REORDER_THREAD 71
|
|
#define NV_EXTN_OP_HIT_OBJECT_INVOKE 72
|
|
#define NV_EXTN_OP_HIT_OBJECT_IS_MISS 73
|
|
#define NV_EXTN_OP_HIT_OBJECT_GET_INSTANCE_ID 74
|
|
#define NV_EXTN_OP_HIT_OBJECT_GET_INSTANCE_INDEX 75
|
|
#define NV_EXTN_OP_HIT_OBJECT_GET_PRIMITIVE_INDEX 76
|
|
#define NV_EXTN_OP_HIT_OBJECT_GET_GEOMETRY_INDEX 77
|
|
#define NV_EXTN_OP_HIT_OBJECT_GET_HIT_KIND 78
|
|
#define NV_EXTN_OP_HIT_OBJECT_GET_RAY_DESC 79
|
|
#define NV_EXTN_OP_HIT_OBJECT_GET_ATTRIBUTES 80
|
|
#define NV_EXTN_OP_HIT_OBJECT_GET_SHADER_TABLE_INDEX 81
|
|
#define NV_EXTN_OP_HIT_OBJECT_LOAD_LOCAL_ROOT_TABLE_CONSTANT 82
|
|
#define NV_EXTN_OP_HIT_OBJECT_IS_HIT 83
|
|
#define NV_EXTN_OP_HIT_OBJECT_IS_NOP 84
|
|
#define NV_EXTN_OP_HIT_OBJECT_MAKE_NOP 85
|
|
|
|
// Micro-map API
|
|
#define NV_EXTN_OP_RT_TRIANGLE_OBJECT_POSITIONS 86
|
|
#define NV_EXTN_OP_RT_MICRO_TRIANGLE_OBJECT_POSITIONS 87
|
|
#define NV_EXTN_OP_RT_MICRO_TRIANGLE_BARYCENTRICS 88
|
|
#define NV_EXTN_OP_RT_IS_MICRO_TRIANGLE_HIT 89
|
|
#define NV_EXTN_OP_RT_IS_BACK_FACING 90
|
|
#define NV_EXTN_OP_RT_MICRO_VERTEX_OBJECT_POSITION 91
|
|
#define NV_EXTN_OP_RT_MICRO_VERTEX_BARYCENTRICS 92
|
|
|
|
//----------------------------------------------------------------------------//
|
|
//-------------------- GET_SPECIAL subOpCode constants -----------------------//
|
|
//----------------------------------------------------------------------------//
|
|
#define NV_SPECIALOP_THREADLTMASK 4
|
|
#define NV_SPECIALOP_FOOTPRINT_SINGLELOD_PRED 5
|
|
#define NV_SPECIALOP_GLOBAL_TIMER_LO 9
|
|
#define NV_SPECIALOP_GLOBAL_TIMER_HI 10
|
|
|
|
//----------------------------------------------------------------------------//
|
|
//----------------------------- Texture Types -------------------------------//
|
|
//----------------------------------------------------------------------------//
|
|
#define NV_EXTN_TEXTURE_1D 2
|
|
#define NV_EXTN_TEXTURE_1D_ARRAY 3
|
|
#define NV_EXTN_TEXTURE_2D 4
|
|
#define NV_EXTN_TEXTURE_2D_ARRAY 5
|
|
#define NV_EXTN_TEXTURE_3D 6
|
|
#define NV_EXTN_TEXTURE_CUBE 7
|
|
#define NV_EXTN_TEXTURE_CUBE_ARRAY 8
|
|
|
|
|
|
//---------------------------------------------------------------------------//
|
|
//----------------FOOTPRINT Enums for NvFootprint* extns---------------------//
|
|
//---------------------------------------------------------------------------//
|
|
#define NV_EXTN_FOOTPRINT_MODE_FINE 0
|
|
#define NV_EXTN_FOOTPRINT_MODE_COARSE 1
|