| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // DxbcSignatures.h //
- // Copyright (C) Microsoft Corporation. All rights reserved. //
- // This file is distributed under the University of Illinois Open Source //
- // License. See LICENSE.TXT for details. //
- // //
- // Declaration of shader parameter structs in DXBC container. //
- // //
- ///////////////////////////////////////////////////////////////////////////////
- #pragma once
- typedef D3D_NAME D3D10_NAME;
- typedef D3D_REGISTER_COMPONENT_TYPE D3D10_REGISTER_COMPONENT_TYPE;
- typedef struct _D3D11_INTERNALSHADER_PARAMETER_FOR_GS
- {
- UINT Stream; // Stream index (parameters must appear in non-decreasing stream order)
- UINT SemanticName; // Offset to LPCSTR
- UINT SemanticIndex; // Semantic Index
- D3D10_NAME SystemValue; // Internally defined enumeration
- D3D10_REGISTER_COMPONENT_TYPE ComponentType; // Type of of bits
- UINT Register; // Register Index
- BYTE Mask; // Combination of D3D10_COMPONENT_MASK values
- // The following unioned fields, NeverWrites_Mask and AlwaysReads_Mask, are exclusively used for
- // output signatures or input signatures, respectively.
- //
- // For an output signature, NeverWrites_Mask indicates that the shader the signature belongs to never
- // writes to the masked components of the output register. Meaningful bits are the ones set in Mask above.
- //
- // For an input signature, AlwaysReads_Mask indicates that the shader the signature belongs to always
- // reads the masked components of the input register. Meaningful bits are the ones set in the Mask above.
- //
- // This allows many shaders to share similar signatures even though some of them may not happen to use
- // all of the inputs/outputs - something which may not be obvious when authored. The NeverWrites_Mask
- // and AlwaysReads_Mask can be checked in a debug layer at runtime for the one interesting case: that a
- // shader that always reads a value is fed by a shader that always writes it. Cases where shaders may
- // read values or may not cannot be validated unfortunately.
- //
- // In scenarios where a signature is being passed around standalone (so it isn't tied to input or output
- // of a given shader), this union can be zeroed out in the absence of more information. This effectively
- // forces off linkage validation errors with the signature, since if interpreted as a input or output signature
- // somehow, since the meaning on output would be "everything is always written" and on input it would be
- // "nothing is always read".
- union
- {
- BYTE NeverWrites_Mask; // For an output signature, the shader the signature belongs to never
- // writes the masked components of the output register.
- BYTE AlwaysReads_Mask; // For an input signature, the shader the signature belongs to always
- // reads the masked components of the input register.
- };
- } D3D11_INTERNALSHADER_PARAMETER_FOR_GS, *LPD3D11_INTERNALSHADER_PARAMETER_FOR_GS;
- typedef struct _D3D11_INTERNALSHADER_PARAMETER_11_1
- {
- UINT Stream; // Stream index (parameters must appear in non-decreasing stream order)
- UINT SemanticName; // Offset to LPCSTR
- UINT SemanticIndex; // Semantic Index
- D3D10_NAME SystemValue; // Internally defined enumeration
- D3D10_REGISTER_COMPONENT_TYPE ComponentType; // Type of of bits
- UINT Register; // Register Index
- BYTE Mask; // Combination of D3D10_COMPONENT_MASK values
- // The following unioned fields, NeverWrites_Mask and AlwaysReads_Mask, are exclusively used for
- // output signatures or input signatures, respectively.
- //
- // For an output signature, NeverWrites_Mask indicates that the shader the signature belongs to never
- // writes to the masked components of the output register. Meaningful bits are the ones set in Mask above.
- //
- // For an input signature, AlwaysReads_Mask indicates that the shader the signature belongs to always
- // reads the masked components of the input register. Meaningful bits are the ones set in the Mask above.
- //
- // This allows many shaders to share similar signatures even though some of them may not happen to use
- // all of the inputs/outputs - something which may not be obvious when authored. The NeverWrites_Mask
- // and AlwaysReads_Mask can be checked in a debug layer at runtime for the one interesting case: that a
- // shader that always reads a value is fed by a shader that always writes it. Cases where shaders may
- // read values or may not cannot be validated unfortunately.
- //
- // In scenarios where a signature is being passed around standalone (so it isn't tied to input or output
- // of a given shader), this union can be zeroed out in the absence of more information. This effectively
- // forces off linkage validation errors with the signature, since if interpreted as a input or output signature
- // somehow, since the meaning on output would be "everything is always written" and on input it would be
- // "nothing is always read".
- union
- {
- BYTE NeverWrites_Mask; // For an output signature, the shader the signature belongs to never
- // writes the masked components of the output register.
- BYTE AlwaysReads_Mask; // For an input signature, the shader the signature belongs to always
- // reads the masked components of the input register.
- };
- D3D_MIN_PRECISION MinPrecision; // Minimum precision of input/output data
- } D3D11_INTERNALSHADER_PARAMETER_11_1, *LPD3D11_INTERNALSHADER_PARAMETER_11_1;
- typedef struct _D3D10_INTERNALSHADER_SIGNATURE
- {
- UINT Parameters; // Number of parameters
- UINT ParameterInfo; // Offset to D3D10_INTERNALSHADER_PARAMETER[Parameters]
- } D3D10_INTERNALSHADER_SIGNATURE, *LPD3D10_INTERNALSHADER_SIGNATURE;
- typedef struct _D3D10_INTERNALSHADER_PARAMETER
- {
- UINT SemanticName; // Offset to LPCSTR
- UINT SemanticIndex; // Semantic Index
- D3D10_NAME SystemValue; // Internally defined enumeration
- D3D10_REGISTER_COMPONENT_TYPE ComponentType; // Type of of bits
- UINT Register; // Register Index
- BYTE Mask; // Combination of D3D10_COMPONENT_MASK values
- // The following unioned fields, NeverWrites_Mask and AlwaysReads_Mask, are exclusively used for
- // output signatures or input signatures, respectively.
- //
- // For an output signature, NeverWrites_Mask indicates that the shader the signature belongs to never
- // writes to the masked components of the output register. Meaningful bits are the ones set in Mask above.
- //
- // For an input signature, AlwaysReads_Mask indicates that the shader the signature belongs to always
- // reads the masked components of the input register. Meaningful bits are the ones set in the Mask above.
- //
- // This allows many shaders to share similar signatures even though some of them may not happen to use
- // all of the inputs/outputs - something which may not be obvious when authored. The NeverWrites_Mask
- // and AlwaysReads_Mask can be checked in a debug layer at runtime for the one interesting case: that a
- // shader that always reads a value is fed by a shader that always writes it. Cases where shaders may
- // read values or may not cannot be validated unfortunately.
- //
- // In scenarios where a signature is being passed around standalone (so it isn't tied to input or output
- // of a given shader), this union can be zeroed out in the absence of more information. This effectively
- // forces off linkage validation errors with the signature, since if interpreted as a input or output signature
- // somehow, since the meaning on output would be "everything is always written" and on input it would be
- // "nothing is always read".
- union
- {
- BYTE NeverWrites_Mask; // For an output signature, the shader the signature belongs to never
- // writes the masked components of the output register.
- BYTE AlwaysReads_Mask; // For an input signature, the shader the signature belongs to always
- // reads the masked components of the input register.
- };
- } D3D10_INTERNALSHADER_PARAMETER, *LPD3D10_INTERNALSHADER_PARAMETER;
|