File: ShaderTypesConst.h

package info (click to toggle)
intel-graphics-compiler 1.0.12504.6-1%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 83,912 kB
  • sloc: cpp: 910,147; lisp: 202,655; ansic: 15,197; python: 4,025; yacc: 2,241; lex: 1,570; pascal: 244; sh: 104; makefile: 25
file content (311 lines) | stat: -rw-r--r-- 15,296 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
/*========================== begin_copyright_notice ============================

Copyright (C) 2019-2021 Intel Corporation

SPDX-License-Identifier: MIT

============================= end_copyright_notice ===========================*/

#ifndef STRUCTURE_ALINGMENT_VERIFICATION
#pragma once
#endif


/*****************************************************************************\
MACRO: MAX
\*****************************************************************************/
#ifndef MAX
#define MAX( x, y ) (((x)>=(y))?(x):(y))
#endif

namespace USC
{

/*****************************************************************************\

\*****************************************************************************/
const unsigned int NUM_COLOR_BUFFER_SLOTS          = 8;
const unsigned int NUM_VIEWPORT_SLOTS              = 16;

const unsigned int BITS_PER_BYTE = 8;
const unsigned int BITS_PER_QWORD = BITS_PER_BYTE * sizeof( unsigned long long );
const unsigned int INPUT_RESOURCE_SLOT_COUNT = 128;
const unsigned int NUM_SHADER_RESOURCE_VIEW_SIZE   = ( INPUT_RESOURCE_SLOT_COUNT + 1 ) / BITS_PER_QWORD;

const unsigned int NUM_CONSTANT_REGISTER_SLOTS_OCL     = 96;
const unsigned int NUM_CONSTANT_REGISTER_SLOTS_NONOCL  = 32;
const unsigned int NUM_CONSTANT_REGISTER_SLOTS         =
    MAX( NUM_CONSTANT_REGISTER_SLOTS_OCL,
         NUM_CONSTANT_REGISTER_SLOTS_NONOCL );

const unsigned int NUM_SAMPLER_SLOTS_IN_DESCRIPTOR = 16;
const unsigned int NUM_SAMPLER_SLOTS               = 32;
const unsigned int NUM_SAMPLER_SLOTS_DECLARED_NOT_OPENGL   = 16; // Only ever declare 16 sampler slots for non gl
const unsigned int NUM_SURFACE_SLOTS               = 128;
const unsigned int NUM_TEXTURE_COORDINATES         = 16;
const unsigned int NUM_INDEX_BUFFER_SLOTS          = 1;
const unsigned int NUM_VERTEX_BUFFER_SLOTS         = 33;
const unsigned int NUM_VERTEX_ELEMENT_SLOTS        = 34;
const unsigned int NUM_STREAM_OUTPUT_BUFFER_SLOTS  = 4;
const unsigned int NUM_TEXTURE_BLEND_STAGES        = 8;
const unsigned int NUM_UNORDERED_ACCESS_VIEW_SLOTS = 159;
const unsigned int NUM_TGSM_SLOTS                  = 1;
const unsigned int NUM_JOURNAL_SLOTS               = 1;
const unsigned int NUM_TEXTURE_SLOTS               = 32;
const unsigned int NUM_EXTRA_PLANES                = 2;

// OGL: __GL_MAX_STAGE_SHADER_STORAGE_BLOCKS = 16
// DX: D3D11_1_UAV_SLOT_COUNT = 64
const unsigned int MAX_NUM_SHADER_UAV_SLOTS        = 64;

/*****************************************************************************\
CONST: SHADER_REGISTERS
\*****************************************************************************/
const unsigned int NUM_GSHADER_INPUT_VERTICES      = 6;
const unsigned int NUM_GSHADER_INPUT_VERTICES_3_0  = 32;

const unsigned int NUM_VSHADER_INPUT_REGISTERS     = 34;
const unsigned int NUM_VSHADER_INPUT_REGISTERS_2_0 = 18;
const unsigned int NUM_VSHADER_INPUT_REGISTERS_2_1 = 34;
const unsigned int NUM_VSHADER_INPUT_REGISTERS_PACKAGEABLE = 32;
const unsigned int NUM_HSHADER_INPUT_REGISTERS     = 32;
const unsigned int NUM_DSHADER_INPUT_REGISTERS     = 32;
const unsigned int NUM_GSHADER_INPUT_REGISTERS     = 34*NUM_GSHADER_INPUT_VERTICES;
const unsigned int NUM_GSHADER_INPUT_REGISTERS_2_0 = 18*NUM_GSHADER_INPUT_VERTICES;
const unsigned int NUM_GSHADER_INPUT_REGISTERS_2_1 = 34*NUM_GSHADER_INPUT_VERTICES;
const unsigned int NUM_GSHADER_INPUT_REGISTERS_3_0 = 34*NUM_GSHADER_INPUT_VERTICES_3_0;
const unsigned int NUM_PSHADER_INPUT_REGISTERS     = 32;

// There are five possible kinds of input declarations in compute shader:
// ThreadID
// ThreadIDInGroup
// ThreadIDInGroupFlattened (==ThreadIndex)
// ThreadGroupID
// ThreadGroupsCount - OpenGL 4.3 gl_NumWorkGroups built-in variable
const unsigned int NUM_CSHADER_INPUT_REGISTERS     = 5;
const unsigned int MAX_NUM_SHADER_INPUT_REGISTERS  =
    MAX( MAX( MAX( MAX( MAX( NUM_VSHADER_INPUT_REGISTERS,
              NUM_GSHADER_INPUT_REGISTERS ),
              NUM_PSHADER_INPUT_REGISTERS ),
              NUM_HSHADER_INPUT_REGISTERS ),
              NUM_DSHADER_INPUT_REGISTERS ),
              NUM_CSHADER_INPUT_REGISTERS );

const unsigned int NUM_CP_SCRATCH_SOURCES           = 34;
const unsigned int NUM_VSHADER_OUTPUT_REGISTERS     = 34;

const unsigned int NUM_VSHADER_OUTPUT_REGISTERS_2_0 = 18;
const unsigned int NUM_VSHADER_OUTPUT_REGISTERS_2_1 = 34;
const unsigned int NUM_HSHADER_OUTPUT_REGISTERS     = 32;
const unsigned int NUM_DSHADER_OUTPUT_REGISTERS     = 32;
const unsigned int NUM_GSHADER_OUTPUT_REGISTERS     = 32;
const unsigned int NUM_GSHADER_BUFFERED_OUTPUT_REGISTERS_AND_HEADER = NUM_GSHADER_OUTPUT_REGISTERS + 2; // +2 is for DW0-DW7 of VUE
const unsigned int NUM_GEN5_75_GSHADER_BUFFERED_OUTPUT_REGISTERS_AND_HEADER =
    NUM_GSHADER_BUFFERED_OUTPUT_REGISTERS_AND_HEADER + 2; // +2 is for DW8-DW15 of VUE for ILK

const unsigned int NUM_PSHADER_OUTPUT_COLOR_REGISTERS  = NUM_COLOR_BUFFER_SLOTS;
const unsigned int NUM_PSHADER_OUTPUT_DEPTH_REGISTERS  = 1;
const unsigned int NUM_PSHADER_OUTPUT_OMASK_REGISTERS  = 1;

const unsigned int NUM_PSHADER_OUTPUT_REGISTERS =
    ( NUM_PSHADER_OUTPUT_COLOR_REGISTERS +
      NUM_PSHADER_OUTPUT_DEPTH_REGISTERS +
      NUM_PSHADER_OUTPUT_OMASK_REGISTERS );

const unsigned int MAX_NUM_SHADER_OUTPUT_REGISTERS  =
    MAX( MAX( MAX( MAX( NUM_VSHADER_OUTPUT_REGISTERS,
              NUM_GSHADER_OUTPUT_REGISTERS ),
              NUM_PSHADER_OUTPUT_REGISTERS ),
              NUM_HSHADER_OUTPUT_REGISTERS ),
              NUM_DSHADER_OUTPUT_REGISTERS );

typedef unsigned int ShaderRegisterIndexType;
const ShaderRegisterIndexType SHADER_REGISTER_INDEX_NONE = 0xffffffff; // max uint

const unsigned int NUM_SHADER_INDEXED_TEMP_ARRAYS            = 4096;
const unsigned int NUM_SHADER_CONSTANT_REGISTERS_1_0         = 32;
const unsigned int NUM_SHADER_CONSTANT_REGISTERS_2_0_OCL     = 96;
// Max number of entries in 3DSTATE_GATHER_CONSTANT_*S is 254,
// so number of constant registers must be 63 -> (63*4 <= 254).
const unsigned int NUM_SHADER_CONSTANT_REGISTERS_2_0_NONOCL  = 63;
const unsigned int NUM_SHADER_CONSTANT_REGISTERS_2_0 =
    MAX( NUM_SHADER_CONSTANT_REGISTERS_2_0_OCL,
         NUM_SHADER_CONSTANT_REGISTERS_2_0_NONOCL );

const unsigned int NUM_SHADER_CONSTANT_REGISTERS =
    MAX( NUM_SHADER_CONSTANT_REGISTERS_1_0,
         NUM_SHADER_CONSTANT_REGISTERS_2_0 );

// Max number of constant buffers is 14 per Resource Binding HLD (for pre-Gen9)
// and per SM4 Shader Constants description: "You can bind up to
// 14 constant buffers per pipeline stage (2 additional slots are reserved for internal use)"
// USC uses 15th buffer as immediate constant buffer
const unsigned int NUM_SHADER_CONSTANT_BUFFER_REGISTERS    = 16;

const unsigned int NUM_SHADER_CONSTANT_BUFFER_ELEMENTS     = 4096;

const unsigned int NUM_SHADER_PREDICATE_REGISTERS          = 1;

const unsigned int NUM_SHADER_SAMPLER_REGISTERS    = NUM_SAMPLER_SLOTS;
const unsigned int NUM_SHADER_RESOURCE_REGISTERS   = NUM_SURFACE_SLOTS;
const unsigned int NUM_SHADER_UAV_REGISTERS        = NUM_UNORDERED_ACCESS_VIEW_SLOTS;
const unsigned int NUM_SHADER_JOURNAL_REGISTERS    = NUM_JOURNAL_SLOTS;
const unsigned int ISA2ILMAP_SIMD8_SLOT            = 0;
const unsigned int ISA2ILMAP_SIMD16_SLOT           = 1;
const unsigned int ISA2ILMAP_SIMD32_SLOT           = 2;
const unsigned int ISA2ILMAP_MAX_SLOTS             = 3;
const unsigned int ISA2ILMAP_INVALID_INDEX         = 0xFFFFFFFF;
const unsigned int ISA2ILMAP_INVALID_LINE_NUMBER   = 0;
const unsigned int ISA2ILMAP_INVALID_COLUMN_NUMBER = 0;
const unsigned int ISA2ILMAP_INVALID_FILE_INDEX    = 0;
const unsigned int ISA2ILMAP_PROFILING_INSTRUCTION = 0xFFFFFFFE;
const unsigned int ISA2ILMAP_PROLOG                = 0xFFFFFFFD;

// Max number of unsigned ints of registers that can be shared among a group of threads
const unsigned int NUM_SHADER_TGSM_REGISTERS       = 16384;    // 16k DWORDs SLM per half slice in IVB+

const unsigned int NUM_SHADER_TPM_REGISTERS        = 8192;

const unsigned int MAX_THREAD_GROUP_DIMENSION_2_1  = 1024;
const unsigned int MAX_THREAD_GROUP_SIZE_2_1       = 1024;

const unsigned int MAX_THREAD_GROUP_DIMENSION_3_0  = 1024;
const unsigned int MAX_THREAD_GROUP_SIZE_3_0       = 1024;

const unsigned int MAX_SHADER_FUNCTION_CALL_DEPTH  = 32;

const unsigned int NUM_2X_MULTISAMPLE_POSITIONS = 2;
const unsigned int NUM_4X_MULTISAMPLE_POSITIONS = 4;
const unsigned int NUM_8X_MULTISAMPLE_POSITIONS = 8;
const unsigned int NUM_16X_MULTISAMPLE_POSITIONS = 16;

const unsigned int VERTEX_GEN5_75_HEADER_STRIDE = 3;

const unsigned int PATCH_HEADER_SIZE = 1;

const unsigned int MAX_PATCH_CONSTANT_SHADERS = 128;

const unsigned int MAX_VERTICES_PER_PRIMITIVE_FOR_DUAL_OBJECT = 16;

const unsigned int MAX_SHADER_INPUT_DECL_GRF_USAGE = 15;

const unsigned int MAX_SHADER_INSTRUCTION_COUNT_JMP_USAGE = 8192;

// DX11 spec only defines max number of interfaces and call sites
// but the number of allowed function bodies and function tables
// is unlimited.
const unsigned int NUM_SHADER_INTERFACES       = 253;
const unsigned int NUM_SHADER_CALLSITES        = 4096;
// Initial size for declarations arrays, will grow at runtime if needed
const unsigned int NUM_SHADER_FBODY_INITSIZE   = 512;
const unsigned int NUM_SHADER_FTABLE_INITSIZE  = 128;

const unsigned int INDEXED_TEMP_ARRAY_TO_GRF_MAX_REGS = 40;
const unsigned int INDEXED_OUTPUTS_MAX_IN_REGS        = 32;

const unsigned int PS_NOS_FOG_COLOR_SUBREG            = 0;
const unsigned int PS_NOS_FOG_COEFFA_SUBREG           = 4;
const unsigned int PS_NOS_FOG_COEFFB_SUBREG           = 5;
const unsigned int PS_NOS_FOG_COEFFC_SUBREG           = 6;
const unsigned int PS_NOS_FOG_COEFFD_SUBREG           = 7;

// GRF subregister numbers for bump mapping matrix.
const unsigned int PS_NOS_BUMP_MATRIX0_SUBREG      = 0;
const unsigned int PS_NOS_BUMP_MATRIX1_SUBREG      = 4;
const unsigned int PS_NOS_BUMP_MATRIX2_SUBREG      = 0;
const unsigned int PS_NOS_BUMP_MATRIX3_SUBREG      = 4;
const unsigned int PS_NOS_BUMP_MATRIX4_SUBREG      = 0;
const unsigned int PS_NOS_BUMP_MATRIX5_SUBREG      = 4;
const unsigned int PS_NOS_BUMP_MATRIX6_SUBREG      = 0;
const unsigned int PS_NOS_BUMP_MATRIX7_SUBREG      = 4;

const unsigned int PS_NOS_BUMP_LUMINANCE0_SUBREG   = 0;
const unsigned int PS_NOS_BUMP_LUMINANCE1_SUBREG   = 2;
const unsigned int PS_NOS_BUMP_LUMINANCE2_SUBREG   = 4;
const unsigned int PS_NOS_BUMP_LUMINANCE3_SUBREG   = 6;
const unsigned int PS_NOS_BUMP_LUMINANCE4_SUBREG   = 0;
const unsigned int PS_NOS_BUMP_LUMINANCE5_SUBREG   = 2;
const unsigned int PS_NOS_BUMP_LUMINANCE6_SUBREG   = 4;
const unsigned int PS_NOS_BUMP_LUMINANCE7_SUBREG   = 6;

// GRF subregister numbers for bump mapping luminance parameters.
const unsigned int PS_NOS_BUMP_LSCALE_SUBREG       = 0;
const unsigned int PS_NOS_BUMP_LOFFSET_SUBREG      = 1;

// GRF number in NOS Constant Buffer
const unsigned int PS_NOS_FOG_COLOR_REG            = 0;
const unsigned int PS_NOS_FOG_COEFFA_REG           = 0;
const unsigned int PS_NOS_FOG_COEFFB_REG           = 0;
const unsigned int PS_NOS_FOG_COEFFC_REG           = 0;
const unsigned int PS_NOS_FOG_COEFFD_REG           = 0;

const unsigned int PS_NOS_BUMP_LUMINANCE0_REG      = 1;
const unsigned int PS_NOS_BUMP_LUMINANCE1_REG      = 1;
const unsigned int PS_NOS_BUMP_LUMINANCE2_REG      = 1;
const unsigned int PS_NOS_BUMP_LUMINANCE3_REG      = 1;

const unsigned int PS_NOS_BUMP_LUMINANCE4_REG      = 2;
const unsigned int PS_NOS_BUMP_LUMINANCE5_REG      = 2;
const unsigned int PS_NOS_BUMP_LUMINANCE6_REG      = 2;
const unsigned int PS_NOS_BUMP_LUMINANCE7_REG      = 2;

const unsigned int PS_NOS_BUMP_MATRIX0_REG         = 3;
const unsigned int PS_NOS_BUMP_MATRIX1_REG         = 3;
const unsigned int PS_NOS_BUMP_MATRIX2_REG         = 4;
const unsigned int PS_NOS_BUMP_MATRIX3_REG         = 4;
const unsigned int PS_NOS_BUMP_MATRIX4_REG         = 5;
const unsigned int PS_NOS_BUMP_MATRIX5_REG         = 5;
const unsigned int PS_NOS_BUMP_MATRIX6_REG         = 6;
const unsigned int PS_NOS_BUMP_MATRIX7_REG         = 6;

const unsigned int VS_NOS_USERCLIPPLANES_REG       = 0;
const unsigned int VS_NOS_USERCLIPPLANES_MASK_REG  = 3;

// unsigned int number in specified GRF register
const unsigned int PS_NOS_FOG_FUNCTION_SUBREG         = 0;
const unsigned int PS_NOS_FOG_SRC_CHANNEL_SUBREG      = 1;

const unsigned int VS_NOS_USERCLIPPLANES_MASK_SUBREG  = 0;

// Offset in NOS Constant Buffer
const unsigned int PS_NOS_FOG_COLOR_OFFSET            = PS_NOS_FOG_COLOR_REG            * 32 + PS_NOS_FOG_COLOR_SUBREG  * 4;
const unsigned int PS_NOS_FOG_COEFFA_OFFSET           = PS_NOS_FOG_COEFFA_REG           * 32 + PS_NOS_FOG_COEFFA_SUBREG * 4;
const unsigned int PS_NOS_FOG_COEFFB_OFFSET           = PS_NOS_FOG_COEFFB_REG           * 32 + PS_NOS_FOG_COEFFB_SUBREG * 4;
const unsigned int PS_NOS_FOG_COEFFC_OFFSET           = PS_NOS_FOG_COEFFC_REG           * 32 + PS_NOS_FOG_COEFFC_SUBREG * 4;
const unsigned int PS_NOS_FOG_COEFFD_OFFSET           = PS_NOS_FOG_COEFFD_REG           * 32 + PS_NOS_FOG_COEFFD_SUBREG * 4;
const unsigned int PS_NOS_BUMP_LUMINANCE0_OFFSET      = PS_NOS_BUMP_LUMINANCE0_REG      * 32;
const unsigned int PS_NOS_BUMP_LSCALE0_OFFSET         = PS_NOS_BUMP_LUMINANCE0_REG      * 32 + PS_NOS_BUMP_LSCALE_SUBREG * 4;
const unsigned int PS_NOS_BUMP_LOFFSET0_OFFSET        = PS_NOS_BUMP_LUMINANCE0_REG      * 32 + PS_NOS_BUMP_LOFFSET_SUBREG * 4;
const unsigned int PS_NOS_BUMP_MATRIX0_OFFSET         = PS_NOS_BUMP_MATRIX0_REG         * 32 + PS_NOS_BUMP_MATRIX0_SUBREG * 4;

const unsigned int VS_NOS_USERCLIPPLANES_OFFSET       = VS_NOS_USERCLIPPLANES_REG       * 32;
const unsigned int VS_NOS_USERCLIPPLANES_MASK_OFFSET  = VS_NOS_USERCLIPPLANES_MASK_REG  * 32 + VS_NOS_USERCLIPPLANES_MASK_SUBREG * 4;

/*****************************************************************************\
CONST: Maximum number of vertex elements to be pushed into GRF in a Hull Shader
\*****************************************************************************/
static const unsigned int g_cMaxHSSinglePatchPushVertexElements = 128;

/*****************************************************************************\
CONST: Maximum number of vertex elements to be pushed into GRF in a Hull Shader
\*****************************************************************************/
static const unsigned int g_cMaxHSDualEightPatchPushVertexElements = 110;

/*****************************************************************************\
CONST: Maximum number of Hull Shader thread instances
\*****************************************************************************/
static const unsigned int g_cMaxHSThreadInstances = 16;

/*****************************************************************************\
CONST: Minimum number of Hull Shader mini-shader instructions to not get
       merged and allowed to be a separate shader
\*****************************************************************************/
static const unsigned int g_cMinHSMiniShaderInstructions = 16;

/*****************************************************************************\
CONST: Maximum number of Hull Shader Control Point Shader instructions to
       be considered a pass-through shader.
\*****************************************************************************/
static const unsigned int g_cMaxHSPassthroughInstructions = 64;

}