NVAPI Reference Documentation 545
Loading...
Searching...
No Matches
nvShaderExtnEnums.h
1 /************************************************************************************************************************************\
2|* *|
3|* Copyright © 2012 NVIDIA Corporation. All rights reserved. *|
4|* *|
5|* NOTICE TO USER: *|
6|* *|
7|* This software is subject to NVIDIA ownership rights under U.S. and international Copyright laws. *|
8|* *|
9|* This software and the information contained herein are PROPRIETARY and CONFIDENTIAL to NVIDIA *|
10|* and are being provided solely under the terms and conditions of an NVIDIA software license agreement. *|
11|* Otherwise, you have no rights to use or access this software in any manner. *|
12|* *|
13|* If not covered by the applicable NVIDIA software license agreement: *|
14|* NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. *|
15|* IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. *|
16|* NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, *|
17|* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. *|
18|* IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, *|
19|* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, *|
20|* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE. *|
21|* *|
22|* U.S. Government End Users. *|
23|* This software is a "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT 1995), *|
24|* consisting of "commercial computer software" and "commercial computer software documentation" *|
25|* as such terms are used in 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government only as a commercial end item. *|
26|* Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), *|
27|* all U.S. Government End Users acquire the software with only those rights set forth herein. *|
28|* *|
29|* Any use of this software in individual and commercial software must include, *|
30|* in the user documentation and internal comments to the code, *|
31|* the above Disclaimer (as applicable) and U.S. Government End Users Notice. *|
32|* *|
33 \************************************************************************************************************************************/
34
38
39// This file can be included both from HLSL shader code as well as C++ code.
40// The app should call NvAPI_D3D11_IsNvShaderExtnOpCodeSupported() / NvAPI_D3D12_IsNvShaderExtnOpCodeSupported()
41// to check for support for every nv shader extension opcode it plans to use
42
43
44
45//----------------------------------------------------------------------------//
46//---------------------------- NV Shader Extn Version -----------------------//
47//----------------------------------------------------------------------------//
48#define NV_SHADER_EXTN_VERSION 1
49
50//----------------------------------------------------------------------------//
51//---------------------------- Misc constants --------------------------------//
52//----------------------------------------------------------------------------//
53#define NV_WARP_SIZE 32
54#define NV_WARP_SIZE_LOG2 5
55
56//----------------------------------------------------------------------------//
57//---------------------------- opCode constants ------------------------------//
58//----------------------------------------------------------------------------//
59
60
61#define NV_EXTN_OP_SHFL 1
62#define NV_EXTN_OP_SHFL_UP 2
63#define NV_EXTN_OP_SHFL_DOWN 3
64#define NV_EXTN_OP_SHFL_XOR 4
65
66#define NV_EXTN_OP_VOTE_ALL 5
67#define NV_EXTN_OP_VOTE_ANY 6
68#define NV_EXTN_OP_VOTE_BALLOT 7
69
70#define NV_EXTN_OP_GET_LANE_ID 8
71#define NV_EXTN_OP_FP16_ATOMIC 12
72#define NV_EXTN_OP_FP32_ATOMIC 13
73
74#define NV_EXTN_OP_GET_SPECIAL 19
75
76#define NV_EXTN_OP_UINT64_ATOMIC 20
77
78#define NV_EXTN_OP_MATCH_ANY 21
79
80// FOOTPRINT - For Sample and SampleBias
81#define NV_EXTN_OP_FOOTPRINT 28
82#define NV_EXTN_OP_FOOTPRINT_BIAS 29
83
84#define NV_EXTN_OP_GET_SHADING_RATE 30
85
86// FOOTPRINT - For SampleLevel and SampleGrad
87#define NV_EXTN_OP_FOOTPRINT_LEVEL 31
88#define NV_EXTN_OP_FOOTPRINT_GRAD 32
89
90// SHFL Generic
91#define NV_EXTN_OP_SHFL_GENERIC 33
92
93#define NV_EXTN_OP_VPRS_EVAL_ATTRIB_AT_SAMPLE 51
94#define NV_EXTN_OP_VPRS_EVAL_ATTRIB_SNAPPED 52
95
96// HitObject API
97#define NV_EXTN_OP_HIT_OBJECT_TRACE_RAY 67
98#define NV_EXTN_OP_HIT_OBJECT_MAKE_HIT 68
99#define NV_EXTN_OP_HIT_OBJECT_MAKE_HIT_WITH_RECORD_INDEX 69
100#define NV_EXTN_OP_HIT_OBJECT_MAKE_MISS 70
101#define NV_EXTN_OP_HIT_OBJECT_REORDER_THREAD 71
102#define NV_EXTN_OP_HIT_OBJECT_INVOKE 72
103#define NV_EXTN_OP_HIT_OBJECT_IS_MISS 73
104#define NV_EXTN_OP_HIT_OBJECT_GET_INSTANCE_ID 74
105#define NV_EXTN_OP_HIT_OBJECT_GET_INSTANCE_INDEX 75
106#define NV_EXTN_OP_HIT_OBJECT_GET_PRIMITIVE_INDEX 76
107#define NV_EXTN_OP_HIT_OBJECT_GET_GEOMETRY_INDEX 77
108#define NV_EXTN_OP_HIT_OBJECT_GET_HIT_KIND 78
109#define NV_EXTN_OP_HIT_OBJECT_GET_RAY_DESC 79
110#define NV_EXTN_OP_HIT_OBJECT_GET_ATTRIBUTES 80
111#define NV_EXTN_OP_HIT_OBJECT_GET_SHADER_TABLE_INDEX 81
112#define NV_EXTN_OP_HIT_OBJECT_LOAD_LOCAL_ROOT_TABLE_CONSTANT 82
113#define NV_EXTN_OP_HIT_OBJECT_IS_HIT 83
114#define NV_EXTN_OP_HIT_OBJECT_IS_NOP 84
115#define NV_EXTN_OP_HIT_OBJECT_MAKE_NOP 85
116
117// Micro-map API
118#define NV_EXTN_OP_RT_TRIANGLE_OBJECT_POSITIONS 86
119#define NV_EXTN_OP_RT_MICRO_TRIANGLE_OBJECT_POSITIONS 87
120#define NV_EXTN_OP_RT_MICRO_TRIANGLE_BARYCENTRICS 88
121#define NV_EXTN_OP_RT_IS_MICRO_TRIANGLE_HIT 89
122#define NV_EXTN_OP_RT_IS_BACK_FACING 90
123#define NV_EXTN_OP_RT_MICRO_VERTEX_OBJECT_POSITION 91
124#define NV_EXTN_OP_RT_MICRO_VERTEX_BARYCENTRICS 92
125
126//----------------------------------------------------------------------------//
127//-------------------- GET_SPECIAL subOpCode constants -----------------------//
128//----------------------------------------------------------------------------//
129#define NV_SPECIALOP_THREADLTMASK 4
130#define NV_SPECIALOP_FOOTPRINT_SINGLELOD_PRED 5
131#define NV_SPECIALOP_GLOBAL_TIMER_LO 9
132#define NV_SPECIALOP_GLOBAL_TIMER_HI 10
133
134//----------------------------------------------------------------------------//
135//----------------------------- Texture Types -------------------------------//
136//----------------------------------------------------------------------------//
137#define NV_EXTN_TEXTURE_1D 2
138#define NV_EXTN_TEXTURE_1D_ARRAY 3
139#define NV_EXTN_TEXTURE_2D 4
140#define NV_EXTN_TEXTURE_2D_ARRAY 5
141#define NV_EXTN_TEXTURE_3D 6
142#define NV_EXTN_TEXTURE_CUBE 7
143#define NV_EXTN_TEXTURE_CUBE_ARRAY 8
144
145
146//---------------------------------------------------------------------------//
147//----------------FOOTPRINT Enums for NvFootprint* extns---------------------//
148//---------------------------------------------------------------------------//
149#define NV_EXTN_FOOTPRINT_MODE_FINE 0
150#define NV_EXTN_FOOTPRINT_MODE_COARSE 1