kodi
EffectBinaryFormat.h
1 //--------------------------------------------------------------------------------------
2 // File: EffectBinaryFormat.h
3 //
4 // Direct3D11 Effects Binary Format
5 // This is the binary file interface shared between the Effects
6 // compiler and runtime.
7 //
8 // Copyright (c) Microsoft Corporation.
9 // Licensed under the MIT License.
10 //
11 // http://go.microsoft.com/fwlink/p/?LinkId=271568
12 //--------------------------------------------------------------------------------------
13 
14 #pragma once
15 
16 namespace D3DX11Effects
17 {
18 
20 // Version Control
22 
23 #define D3DX11_FXL_VERSION(_Major,_Minor) (('F' << 24) | ('X' << 16) | ((_Major) << 8) | (_Minor))
24 
26 {
27  const char* m_pName;
28  DWORD m_Version;
29  uint32_t m_Tag;
30 };
31 
32 // versions must be listed in ascending order
33 static const EVersionTag g_EffectVersions[] =
34 {
35  { "fx_4_0", D3DX11_FXL_VERSION(4,0), 0xFEFF1001 },
36  { "fx_4_1", D3DX11_FXL_VERSION(4,1), 0xFEFF1011 },
37  { "fx_5_0", D3DX11_FXL_VERSION(5,0), 0xFEFF2001 },
38 };
39 
40 
42 // Reflection & Type structures
44 
45 // Enumeration of the possible left-hand side values of an assignment,
46 // divided up categorically by the type of block they may appear in
47 enum ELhsType : int
48 {
49  ELHS_Invalid,
50 
51  // Pass block assignment types
52 
53  ELHS_PixelShaderBlock, // SBlock *pValue points to the block to apply
54  ELHS_VertexShaderBlock,
55  ELHS_GeometryShaderBlock,
56  ELHS_RenderTargetView,
57  ELHS_DepthStencilView,
58 
59  ELHS_RasterizerBlock,
60  ELHS_DepthStencilBlock,
61  ELHS_BlendBlock,
62 
63  ELHS_GenerateMips, // This is really a call to D3D::GenerateMips
64 
65  // Various SAssignment.Value.*
66 
67  ELHS_DS_StencilRef, // SAssignment.Value.pdValue
68  ELHS_B_BlendFactor, // D3D11_BLEND_CONFIG.BlendFactor, points to a float4
69  ELHS_B_SampleMask, // D3D11_BLEND_CONFIG.SampleMask
70 
71  ELHS_GeometryShaderSO, // When setting SO assignments, GeometryShaderSO precedes the actual GeometryShader assn
72 
73  ELHS_ComputeShaderBlock,
74  ELHS_HullShaderBlock,
75  ELHS_DomainShaderBlock,
76 
77  // Rasterizer
78 
79  ELHS_FillMode = 0x20000,
80  ELHS_CullMode,
81  ELHS_FrontCC,
82  ELHS_DepthBias,
83  ELHS_DepthBiasClamp,
84  ELHS_SlopeScaledDepthBias,
85  ELHS_DepthClipEnable,
86  ELHS_ScissorEnable,
87  ELHS_MultisampleEnable,
88  ELHS_AntialiasedLineEnable,
89 
90  // Sampler
91 
92  ELHS_Filter = 0x30000,
93  ELHS_AddressU,
94  ELHS_AddressV,
95  ELHS_AddressW,
96  ELHS_MipLODBias,
97  ELHS_MaxAnisotropy,
98  ELHS_ComparisonFunc,
99  ELHS_BorderColor,
100  ELHS_MinLOD,
101  ELHS_MaxLOD,
102  ELHS_Texture,
103 
104  // DepthStencil
105 
106  ELHS_DepthEnable = 0x40000,
107  ELHS_DepthWriteMask,
108  ELHS_DepthFunc,
109  ELHS_StencilEnable,
110  ELHS_StencilReadMask,
111  ELHS_StencilWriteMask,
112  ELHS_FrontFaceStencilFailOp,
113  ELHS_FrontFaceStencilDepthFailOp,
114  ELHS_FrontFaceStencilPassOp,
115  ELHS_FrontFaceStencilFunc,
116  ELHS_BackFaceStencilFailOp,
117  ELHS_BackFaceStencilDepthFailOp,
118  ELHS_BackFaceStencilPassOp,
119  ELHS_BackFaceStencilFunc,
120 
121  // BlendState
122 
123  ELHS_AlphaToCoverage = 0x50000,
124  ELHS_BlendEnable,
125  ELHS_SrcBlend,
126  ELHS_DestBlend,
127  ELHS_BlendOp,
128  ELHS_SrcBlendAlpha,
129  ELHS_DestBlendAlpha,
130  ELHS_BlendOpAlpha,
131  ELHS_RenderTargetWriteMask,
132 };
133 
134 enum EBlockType
135 {
136  EBT_Invalid,
137  EBT_DepthStencil,
138  EBT_Blend,
139  EBT_Rasterizer,
140  EBT_Sampler,
141  EBT_Pass
142 };
143 
144 enum EVarType
145 {
146  EVT_Invalid,
147  EVT_Numeric,
148  EVT_Object,
149  EVT_Struct,
150  EVT_Interface,
151  EVT_Count,
152 };
153 
154 enum EScalarType
155 {
156  EST_Invalid,
157  EST_Float,
158  EST_Int,
159  EST_UInt,
160  EST_Bool,
161  EST_Count
162 };
163 
164 enum ENumericLayout
165 {
166  ENL_Invalid,
167  ENL_Scalar,
168  ENL_Vector,
169  ENL_Matrix,
170  ENL_Count
171 };
172 
173 enum EObjectType
174 {
175  EOT_Invalid,
176  EOT_String,
177  EOT_Blend,
178  EOT_DepthStencil,
179  EOT_Rasterizer,
180  EOT_PixelShader,
181  EOT_VertexShader,
182  EOT_GeometryShader, // Regular geometry shader
183  EOT_GeometryShaderSO, // Geometry shader with a attached StreamOut decl
184  EOT_Texture,
185  EOT_Texture1D,
186  EOT_Texture1DArray,
187  EOT_Texture2D,
188  EOT_Texture2DArray,
189  EOT_Texture2DMS,
190  EOT_Texture2DMSArray,
191  EOT_Texture3D,
192  EOT_TextureCube,
193  EOT_ConstantBuffer,
194  EOT_RenderTargetView,
195  EOT_DepthStencilView,
196  EOT_Sampler,
197  EOT_Buffer,
198  EOT_TextureCubeArray,
199  EOT_Count,
200  EOT_PixelShader5,
201  EOT_VertexShader5,
202  EOT_GeometryShader5,
203  EOT_ComputeShader5,
204  EOT_HullShader5,
205  EOT_DomainShader5,
206  EOT_RWTexture1D,
207  EOT_RWTexture1DArray,
208  EOT_RWTexture2D,
209  EOT_RWTexture2DArray,
210  EOT_RWTexture3D,
211  EOT_RWBuffer,
212  EOT_ByteAddressBuffer,
213  EOT_RWByteAddressBuffer,
214  EOT_StructuredBuffer,
215  EOT_RWStructuredBuffer,
216  EOT_RWStructuredBufferAlloc,
217  EOT_RWStructuredBufferConsume,
218  EOT_AppendStructuredBuffer,
219  EOT_ConsumeStructuredBuffer,
220 };
221 
222 inline bool IsObjectTypeHelper(EVarType InVarType,
223  EObjectType InObjType,
224  EObjectType TargetObjType)
225 {
226  return (InVarType == EVT_Object) && (InObjType == TargetObjType);
227 }
228 
229 inline bool IsSamplerHelper(EVarType InVarType,
230  EObjectType InObjType)
231 {
232  return (InVarType == EVT_Object) && (InObjType == EOT_Sampler);
233 }
234 
235 inline bool IsStateBlockObjectHelper(EVarType InVarType,
236  EObjectType InObjType)
237 {
238  return (InVarType == EVT_Object) && ((InObjType == EOT_Blend) || (InObjType == EOT_DepthStencil) || (InObjType == EOT_Rasterizer) || IsSamplerHelper(InVarType, InObjType));
239 }
240 
241 inline bool IsShaderHelper(EVarType InVarType,
242  EObjectType InObjType)
243 {
244  return (InVarType == EVT_Object) && ((InObjType == EOT_VertexShader) ||
245  (InObjType == EOT_VertexShader5) ||
246  (InObjType == EOT_HullShader5) ||
247  (InObjType == EOT_DomainShader5) ||
248  (InObjType == EOT_ComputeShader5) ||
249  (InObjType == EOT_GeometryShader) ||
250  (InObjType == EOT_GeometryShaderSO) ||
251  (InObjType == EOT_GeometryShader5) ||
252  (InObjType == EOT_PixelShader) ||
253  (InObjType == EOT_PixelShader5));
254 }
255 
256 inline bool IsShader5Helper(EVarType InVarType,
257  EObjectType InObjType)
258 {
259  return (InVarType == EVT_Object) && ((InObjType == EOT_VertexShader5) ||
260  (InObjType == EOT_HullShader5) ||
261  (InObjType == EOT_DomainShader5) ||
262  (InObjType == EOT_ComputeShader5) ||
263  (InObjType == EOT_GeometryShader5) ||
264  (InObjType == EOT_PixelShader5));
265 }
266 
267 inline bool IsInterfaceHelper(EVarType InVarType, EObjectType InObjType)
268 {
269  UNREFERENCED_PARAMETER(InObjType);
270  return (InVarType == EVT_Interface);
271 }
272 
273 inline bool IsShaderResourceHelper(EVarType InVarType,
274  EObjectType InObjType)
275 {
276  return (InVarType == EVT_Object) && ((InObjType == EOT_Texture) ||
277  (InObjType == EOT_Texture1D) ||
278  (InObjType == EOT_Texture1DArray) ||
279  (InObjType == EOT_Texture2D) ||
280  (InObjType == EOT_Texture2DArray) ||
281  (InObjType == EOT_Texture2DMS) ||
282  (InObjType == EOT_Texture2DMSArray) ||
283  (InObjType == EOT_Texture3D) ||
284  (InObjType == EOT_TextureCube) ||
285  (InObjType == EOT_TextureCubeArray) ||
286  (InObjType == EOT_Buffer) ||
287  (InObjType == EOT_StructuredBuffer) ||
288  (InObjType == EOT_ByteAddressBuffer));
289 }
290 
291 inline bool IsUnorderedAccessViewHelper(EVarType InVarType,
292  EObjectType InObjType)
293 {
294  return (InVarType == EVT_Object) &&
295  ((InObjType == EOT_RWTexture1D) ||
296  (InObjType == EOT_RWTexture1DArray) ||
297  (InObjType == EOT_RWTexture2D) ||
298  (InObjType == EOT_RWTexture2DArray) ||
299  (InObjType == EOT_RWTexture3D) ||
300  (InObjType == EOT_RWBuffer) ||
301  (InObjType == EOT_RWByteAddressBuffer) ||
302  (InObjType == EOT_RWStructuredBuffer) ||
303  (InObjType == EOT_RWStructuredBufferAlloc) ||
304  (InObjType == EOT_RWStructuredBufferConsume) ||
305  (InObjType == EOT_AppendStructuredBuffer) ||
306  (InObjType == EOT_ConsumeStructuredBuffer));
307 }
308 
309 inline bool IsRenderTargetViewHelper(EVarType InVarType,
310  EObjectType InObjType)
311 {
312  return (InVarType == EVT_Object) && (InObjType == EOT_RenderTargetView);
313 }
314 
315 inline bool IsDepthStencilViewHelper(EVarType InVarType,
316  EObjectType InObjType)
317 {
318  return (InVarType == EVT_Object) && (InObjType == EOT_DepthStencilView);
319 }
320 
321 inline bool IsObjectAssignmentHelper(ELhsType LhsType)
322 {
323  switch(LhsType)
324  {
325  case ELHS_VertexShaderBlock:
326  case ELHS_HullShaderBlock:
327  case ELHS_DepthStencilView:
328  case ELHS_GeometryShaderBlock:
329  case ELHS_PixelShaderBlock:
330  case ELHS_ComputeShaderBlock:
331  case ELHS_DepthStencilBlock:
332  case ELHS_RasterizerBlock:
333  case ELHS_BlendBlock:
334  case ELHS_Texture:
335  case ELHS_RenderTargetView:
336  case ELHS_DomainShaderBlock:
337  return true;
338  }
339  return false;
340 }
341 
342 
343 
344 
345 // Effect file format structures /////////////////////////////////////////////
346 // File format:
347 // File header (SBinaryHeader Header)
348 // Unstructured data block (uint8_t[Header.cbUnstructured))
349 // Structured data block
350 // ConstantBuffer (SBinaryConstantBuffer CB) * Header.Effect.cCBs
351 // uint32_t NumAnnotations
352 // Annotation data (SBinaryAnnotation) * (NumAnnotations) *this structure is variable sized
353 // Variable data (SBinaryNumericVariable Var) * (CB.cVariables)
354 // uint32_t NumAnnotations
355 // Annotation data (SBinaryAnnotation) * (NumAnnotations) *this structure is variable sized
356 // Object variables (SBinaryObjectVariable Var) * (Header.cObjectVariables) *this structure is variable sized
357 // uint32_t NumAnnotations
358 // Annotation data (SBinaryAnnotation) * (NumAnnotations) *this structure is variable sized
359 // Interface variables (SBinaryInterfaceVariable Var) * (Header.cInterfaceVariables) *this structure is variable sized
360 // uint32_t NumAnnotations
361 // Annotation data (SBinaryAnnotation) * (NumAnnotations) *this structure is variable sized
362 // Groups (SBinaryGroup Group) * Header.cGroups
363 // uint32_t NumAnnotations
364 // Annotation data (SBinaryAnnotation) * (NumAnnotations) *this structure is variable sized
365 // Techniques (SBinaryTechnique Technique) * Group.cTechniques
366 // uint32_t NumAnnotations
367 // Annotation data (SBinaryAnnotation) * (NumAnnotations) *this structure is variable sized
368 // Pass (SBinaryPass Pass) * Technique.cPasses
369 // uint32_t NumAnnotations
370 // Annotation data (SBinaryAnnotation) * (NumAnnotations) *this structure is variable sized
371 // Pass assignments (SBinaryAssignment) * Pass.cAssignments
372 
374 {
375  struct SVarCounts
376  {
377  uint32_t cCBs;
378  uint32_t cNumericVariables;
379  uint32_t cObjectVariables;
380  };
381 
382  uint32_t Tag; // should be equal to c_EffectFileTag
383  // this is used to identify ASCII vs Binary files
384 
385  SVarCounts Effect;
386  SVarCounts Pool;
387 
388  uint32_t cTechniques;
389  uint32_t cbUnstructured;
390 
391  uint32_t cStrings;
392  uint32_t cShaderResources;
393 
394  uint32_t cDepthStencilBlocks;
395  uint32_t cBlendStateBlocks;
396  uint32_t cRasterizerStateBlocks;
397  uint32_t cSamplers;
398  uint32_t cRenderTargetViews;
399  uint32_t cDepthStencilViews;
400 
401  uint32_t cTotalShaders;
402  uint32_t cInlineShaders; // of the aforementioned shaders, the number that are defined inline within pass blocks
403 
404  inline bool RequiresPool() const
405  {
406  return (Pool.cCBs != 0) ||
407  (Pool.cNumericVariables != 0) ||
408  (Pool.cObjectVariables != 0);
409  }
410 };
411 
413 {
414  uint32_t cGroups;
415  uint32_t cUnorderedAccessViews;
416  uint32_t cInterfaceVariables;
417  uint32_t cInterfaceVariableElements;
418  uint32_t cClassInstanceElements;
419 };
420 
421 // Constant buffer definition
423 {
424  // private flags
425  static const uint32_t c_IsTBuffer = (1 << 0);
426  static const uint32_t c_IsSingle = (1 << 1);
427 
428  uint32_t oName; // Offset to constant buffer name
429  uint32_t Size; // Size, in bytes
430  uint32_t Flags;
431  uint32_t cVariables; // # of variables inside this buffer
432  uint32_t ExplicitBindPoint; // Defined if the effect file specifies a bind point using the register keyword
433  // otherwise, -1
434 };
435 
437 {
438  uint32_t oName; // Offset to variable name
439  uint32_t oType; // Offset to type information (SBinaryType)
440 
441  // For numeric annotations:
442  // uint32_t oDefaultValue; // Offset to default initializer value
443  //
444  // For string annotations:
445  // uint32_t oStringOffsets[Elements]; // Elements comes from the type data at oType
446 };
447 
449 {
450  uint32_t oName; // Offset to variable name
451  uint32_t oType; // Offset to type information (SBinaryType)
452  uint32_t oSemantic; // Offset to semantic information
453  uint32_t Offset; // Offset in parent constant buffer
454  uint32_t oDefaultValue; // Offset to default initializer value
455  uint32_t Flags; // Explicit bind point
456 };
457 
459 {
460  uint32_t oName; // Offset to variable name
461  uint32_t oType; // Offset to type information (SBinaryType)
462  uint32_t oDefaultValue; // Offset to default initializer array (SBinaryInterfaceInitializer[Elements])
463  uint32_t Flags;
464 };
465 
467 {
468  uint32_t oInstanceName;
469  uint32_t ArrayIndex;
470 };
471 
473 {
474  uint32_t oName; // Offset to variable name
475  uint32_t oType; // Offset to type information (SBinaryType)
476  uint32_t oSemantic; // Offset to semantic information
477  uint32_t ExplicitBindPoint; // Used when a variable has been explicitly bound (register(XX)). -1 if not
478 
479  // Initializer data:
480  //
481  // The type structure pointed to by oType gives you Elements,
482  // VarType (must be EVT_Object), and ObjectType
483  //
484  // For ObjectType == EOT_Blend, EOT_DepthStencil, EOT_Rasterizer, EOT_Sampler
485  // struct
486  // {
487  // uint32_t cAssignments;
488  // SBinaryAssignment Assignments[cAssignments];
489  // } Blocks[Elements]
490  //
491  // For EObjectType == EOT_Texture*, EOT_Buffer
492  // <nothing>
493  //
494  // For EObjectType == EOT_*Shader, EOT_String
495  // uint32_t oData[Elements]; // offsets to a shader data block or a nullptr-terminated string
496  //
497  // For EObjectType == EOT_GeometryShaderSO
498  // SBinaryGSSOInitializer[Elements]
499  //
500  // For EObjectType == EOT_*Shader5
501  // SBinaryShaderData5[Elements]
502 };
503 
505 {
506  uint32_t oShader; // Offset to shader bytecode data block
507  uint32_t oSODecl; // Offset to StreamOutput decl string
508 };
509 
511 {
512  uint32_t oShader; // Offset to shader bytecode data block
513  uint32_t oSODecls[4]; // Offset to StreamOutput decl strings
514  uint32_t cSODecls; // Count of valid oSODecls entries.
515  uint32_t RasterizedStream; // Which stream is used for rasterization
516  uint32_t cInterfaceBindings; // Count of interface bindings.
517  uint32_t oInterfaceBindings; // Offset to SBinaryInterfaceInitializer[cInterfaceBindings].
518 };
519 
521 {
522  uint32_t oTypeName; // Offset to friendly type name ("float4", "VS_OUTPUT")
523  EVarType VarType; // Numeric, Object, or Struct
524  uint32_t Elements; // # of array elements (0 for non-arrays)
525  uint32_t TotalSize; // Size in bytes; not necessarily Stride * Elements for arrays
526  // because of possible gap left in final register
527  uint32_t Stride; // If an array, this is the spacing between elements.
528  // For unpacked arrays, always divisible by 16-bytes (1 register).
529  // No support for packed arrays
530  uint32_t PackedSize; // Size, in bytes, of this data typed when fully packed
531 
533  {
534  uint32_t oName; // Offset to structure member name ("m_pFoo")
535  uint32_t oSemantic; // Offset to semantic ("POSITION0")
536  uint32_t Offset; // Offset, in bytes, relative to start of parent structure
537  uint32_t oType; // Offset to member's type descriptor
538  };
539 
540  // the data that follows depends on the VarType:
541  // Numeric: SType::SNumericType
542  // Object: EObjectType
543  // Struct:
544  // struct
545  // {
546  // uint32_t cMembers;
547  // SBinaryMembers Members[cMembers];
548  // } MemberInfo
549  // struct
550  // {
551  // uint32_t oBaseClassType; // Offset to type information (SBinaryType)
552  // uint32_t cInterfaces;
553  // uint32_t oInterfaceTypes[cInterfaces];
554  // } SBinaryTypeInheritance
555  // Interface: (nothing)
556 };
557 
559 {
560  ENumericLayout NumericLayout : 3; // scalar (1x1), vector (1xN), matrix (NxN)
561  EScalarType ScalarType : 5; // float32, int32, int8, etc.
562  uint32_t Rows : 3; // 1 <= Rows <= 4
563  uint32_t Columns : 3; // 1 <= Columns <= 4
564  uint32_t IsColumnMajor : 1; // applies only to matrices
565  uint32_t IsPackedArray : 1; // if this is an array, indicates whether elements should be greedily packed
566 };
567 
569 {
570  uint32_t oBaseClass; // Offset to base class type info or 0 if no base class.
571  uint32_t cInterfaces;
572 
573  // Followed by uint32_t[cInterfaces] with offsets to the type
574  // info of each interface.
575 };
576 
578 {
579  uint32_t oName;
580  uint32_t cTechniques;
581 };
582 
584 {
585  uint32_t oName;
586  uint32_t cPasses;
587 };
588 
590 {
591  uint32_t oName;
592  uint32_t cAssignments;
593 };
594 
595 enum ECompilerAssignmentType
596 {
597  ECAT_Invalid, // Assignment-specific data (always in the unstructured blob)
598  ECAT_Constant, // -N SConstant structures
599  ECAT_Variable, // -nullptr terminated string with variable name ("foo")
600  ECAT_ConstIndex, // -SConstantIndex structure
601  ECAT_VariableIndex, // -SVariableIndex structure
602  ECAT_ExpressionIndex, // -SIndexedObjectExpression structure
603  ECAT_Expression, // -Data block containing FXLVM code
604  ECAT_InlineShader, // -Data block containing shader
605  ECAT_InlineShader5, // -Data block containing shader with extended 5.0 data (SBinaryShaderData5)
606 };
607 
609 {
610  uint32_t iState; // index into g_lvGeneral
611  uint32_t Index; // the particular index to assign to (see g_lvGeneral to find the # of valid indices)
612  ECompilerAssignmentType AssignmentType;
613  uint32_t oInitializer; // Offset of assignment-specific data
614 
616  {
617  uint32_t oArrayName;
618  uint32_t Index;
619  };
620 
622  {
623  uint32_t oArrayName;
624  uint32_t oIndexVarName;
625  };
626 
628  {
629  uint32_t oArrayName;
630  uint32_t oCode;
631  };
632 
634  {
635  uint32_t oShader;
636  uint32_t oSODecl;
637  };
638 };
639 
641 {
642  EScalarType Type;
643  union
644  {
645  BOOL bValue;
646  INT iValue;
647  float fValue;
648  };
649 };
650 
651 static_assert( sizeof(SBinaryHeader) == 76, "FX11 binary size mismatch" );
652 static_assert( sizeof(SBinaryHeader::SVarCounts) == 12, "FX11 binary size mismatch" );
653 static_assert( sizeof(SBinaryHeader5) == 96, "FX11 binary size mismatch" );
654 static_assert( sizeof(SBinaryConstantBuffer) == 20, "FX11 binary size mismatch" );
655 static_assert( sizeof(SBinaryAnnotation) == 8, "FX11 binary size mismatch" );
656 static_assert( sizeof(SBinaryNumericVariable) == 24, "FX11 binary size mismatch" );
657 static_assert( sizeof(SBinaryInterfaceVariable) == 16, "FX11 binary size mismatch" );
658 static_assert( sizeof(SBinaryInterfaceInitializer) == 8, "FX11 binary size mismatch" );
659 static_assert( sizeof(SBinaryObjectVariable) == 16, "FX11 binary size mismatch" );
660 static_assert( sizeof(SBinaryGSSOInitializer) == 8, "FX11 binary size mismatch" );
661 static_assert( sizeof(SBinaryShaderData5) == 36, "FX11 binary size mismatch" );
662 static_assert( sizeof(SBinaryType) == 24, "FX11 binary size mismatch" );
663 static_assert( sizeof(SBinaryType::SBinaryMember) == 16, "FX11 binary size mismatch" );
664 static_assert( sizeof(SBinaryNumericType) == 4, "FX11 binary size mismatch" );
665 static_assert( sizeof(SBinaryTypeInheritance) == 8, "FX11 binary size mismatch" );
666 static_assert( sizeof(SBinaryGroup) == 8, "FX11 binary size mismatch" );
667 static_assert( sizeof(SBinaryTechnique) == 8, "FX11 binary size mismatch" );
668 static_assert( sizeof(SBinaryPass) == 8, "FX11 binary size mismatch" );
669 static_assert( sizeof(SBinaryAssignment) == 16, "FX11 binary size mismatch" );
670 static_assert( sizeof(SBinaryAssignment::SConstantIndex) == 8, "FX11 binary size mismatch" );
671 static_assert( sizeof(SBinaryAssignment::SVariableIndex) == 8, "FX11 binary size mismatch" );
672 static_assert( sizeof(SBinaryAssignment::SIndexedObjectExpression) == 8, "FX11 binary size mismatch" );
673 static_assert( sizeof(SBinaryAssignment::SInlineShader) == 8, "FX11 binary size mismatch" );
674 
675 } // end namespace D3DX11Effects
676 
Definition: EffectBinaryFormat.h:422
Definition: EffectBinaryFormat.h:583
Definition: EffectBinaryFormat.h:520
Definition: EffectBinaryFormat.h:16
Definition: EffectBinaryFormat.h:532
Definition: EffectBinaryFormat.h:558
Definition: EffectBinaryFormat.h:466
Definition: EffectBinaryFormat.h:640
Definition: EffectBinaryFormat.h:577
Definition: EffectBinaryFormat.h:608
Definition: EffectBinaryFormat.h:568
Definition: EffectBinaryFormat.h:589
Definition: EffectBinaryFormat.h:436
Definition: EffectBinaryFormat.h:621
Definition: EffectBinaryFormat.h:375
Definition: EffectBinaryFormat.h:504
Definition: EffectBinaryFormat.h:615
Definition: EffectBinaryFormat.h:633
Definition: EffectBinaryFormat.h:25
Definition: EffectBinaryFormat.h:412
Definition: EffectBinaryFormat.h:448
Definition: EffectBinaryFormat.h:373
Definition: EffectBinaryFormat.h:510
Definition: EffectBinaryFormat.h:472
Definition: EffectBinaryFormat.h:458
Definition: TestJobManager.cpp:22