2 * Copyright (c) 2007-2010 SlimDX Group
\r
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
\r
5 * of this software and associated documentation files (the "Software"), to deal
\r
6 * in the Software without restriction, including without limitation the rights
\r
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
\r
8 * copies of the Software, and to permit persons to whom the Software is
\r
9 * furnished to do so, subject to the following conditions:
\r
11 * The above copyright notice and this permission notice shall be included in
\r
12 * all copies or substantial portions of the Software.
\r
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
\r
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
\r
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
\r
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
\r
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
\r
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
\r
24 #include "EnumsDC.h"
\r
28 namespace D3DCompiler
\r
31 /// Describes a parameter in a shader signature.
\r
33 /// <unmanaged>D3D11_SIGNATURE_PARAMETER_DESC</unmanaged>
\r
34 public value class ShaderParameterDescription : System::IEquatable<ShaderParameterDescription>
\r
37 System::String^ m_SemanticName;
\r
38 System::UInt32 m_SemanticIndex;
\r
39 System::UInt32 m_Register;
\r
40 SystemValueType m_SystemValueType;
\r
41 RegisterComponentType m_ComponentType;
\r
42 RegisterComponentMaskFlags m_Mask;
\r
43 RegisterComponentMaskFlags m_ReadWriteMask;
\r
47 ShaderParameterDescription( const D3D11_SIGNATURE_PARAMETER_DESC& native );
\r
51 /// A per-parameter string that identifies how the data will be used.
\r
53 property System::String^ SemanticName
\r
55 System::String^ get();
\r
59 /// Semantic index that modifies the semantic. Used to differentiate different parameters that use the same semantic.
\r
61 property System::UInt32 SemanticIndex
\r
63 System::UInt32 get();
\r
67 /// The register that will contain this variable's data.
\r
69 property System::UInt32 Register
\r
71 System::UInt32 get();
\r
75 /// A predefined string that determines the functionality of certain pipeline stages.
\r
77 property SystemValueType SystemType
\r
79 SystemValueType get();
\r
83 /// The per-component-data type that is stored in a register. Each register can store up to four-components of data.
\r
85 property RegisterComponentType ComponentType
\r
87 RegisterComponentType get();
\r
91 /// Mask which indicates which components of a register are used.
\r
93 property RegisterComponentMaskFlags UsageMask
\r
95 RegisterComponentMaskFlags get();
\r
99 /// Mask which indicates whether a given component is never written (if the signature is an output signature) or always read (if the signature is an input signature).
\r
101 property RegisterComponentMaskFlags ReadWriteMask
\r
103 RegisterComponentMaskFlags get();
\r
107 /// Indicates which stream the geometry shader is using for the signature parameter.
\r
109 property int Stream
\r
115 /// Tests for equality between two objects.
\r
117 /// <param name="left">The first value to compare.</param>
\r
118 /// <param name="right">The second value to compare.</param>
\r
119 /// <returns><c>true</c> if <paramref name="left"/> has the same value as <paramref name="right"/>; otherwise, <c>false</c>.</returns>
\r
120 static bool operator == ( ShaderParameterDescription left, ShaderParameterDescription right );
\r
123 /// Tests for inequality between two objects.
\r
125 /// <param name="left">The first value to compare.</param>
\r
126 /// <param name="right">The second value to compare.</param>
\r
127 /// <returns><c>true</c> if <paramref name="left"/> has a different value than <paramref name="right"/>; otherwise, <c>false</c>.</returns>
\r
128 static bool operator != ( ShaderParameterDescription left, ShaderParameterDescription right );
\r
131 /// Returns the hash code for this instance.
\r
133 /// <returns>A 32-bit signed integer hash code.</returns>
\r
134 virtual int GetHashCode() override;
\r
137 /// Returns a value that indicates whether the current instance is equal to a specified object.
\r
139 /// <param name="obj">Object to make the comparison with.</param>
\r
140 /// <returns><c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>
\r
141 virtual bool Equals( System::Object^ obj ) override;
\r
144 /// Returns a value that indicates whether the current instance is equal to the specified object.
\r
146 /// <param name="other">Object to make the comparison with.</param>
\r
147 /// <returns><c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>
\r
148 virtual bool Equals( ShaderParameterDescription other );
\r
151 /// Determines whether the specified object instances are considered equal.
\r
153 /// <param name="value1">The first value to compare.</param>
\r
154 /// <param name="value2">The second value to compare.</param>
\r
155 /// <returns><c>true</c> if <paramref name="value1"/> is the same instance as <paramref name="value2"/> or
\r
156 /// if both are <c>null</c> references or if <c>value1.Equals(value2)</c> returns <c>true</c>; otherwise, <c>false</c>.</returns>
\r
157 static bool Equals( ShaderParameterDescription% value1, ShaderParameterDescription% value2 );
\r