D3D11: Vertex Shader - Geometry Shader linkage error

Started by
2 comments, last by pnt1614 12 years ago
I'm getting a D3D11 Error when rendering a certain effect:
D3D11: ERROR: ID3D11DeviceContext::Draw: Vertex Shader - Geometry Shader linkage error: Signatures between stages are incompatible. The input stage requires Semantic/Index (Position,0) as input, but it is not provided by the output stage. [ EXECUTION ERROR #342: DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND ]
D3D11: ERROR: ID3D11DeviceContext::Draw: Vertex Shader - Geometry Shader linkage error: Signatures between stages are incompatible. The input stage requires Semantic/Index (Color,0) as input, but it is not provided by the output stage. [ EXECUTION ERROR #342: DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND ]
D3D11: ERROR: ID3D11DeviceContext::Draw: Vertex Shader - Geometry Shader linkage error: Signatures between stages are incompatible. Semantic 'TexCoord' is defined for mismatched hardware registers between the output stage and input stage. [ EXECUTION ERROR #343: DEVICE_SHADER_LINKAGE_REGISTERINDEX ]
D3D11: ERROR: ID3D11DeviceContext::Draw: Vertex Shader - Geometry Shader linkage error: Signatures between stages are incompatible. Semantic 'TexCoord' of the input stage has a hardware register component mask that is not a subset of the output of the previous stage. [ EXECUTION ERROR #345: DEVICE_SHADER_LINKAGE_REGISTERMASK ]
D3D11: ERROR: ID3D11DeviceContext::Draw: Geometry Shader - Pixel Shader linkage error: Signatures between stages are incompatible. Semantic 'TexCoord' is defined for mismatched hardware registers between the output stage and input stage. [ EXECUTION ERROR #343: DEVICE_SHADER_LINKAGE_REGISTERINDEX ]


The problem is, that even with those hints I am not able to find the reason for the error. Here is a part of my effect:


struct VS_Output
{
float4 pos : Position;
float4 color : Color0;
float4 tex : TexCoord0;
};

struct GS_Output
{
float4 pos : SV_Position;
float4 color : Color0;
float2 tex : TexCoord0;
};

VS_Output vertexShader(float4 pos : Position, float4 color : Color0, float4 tex : TexCoord0)

[maxvertexcount(6)]
void geometryShader(point VS_Output input[1], inout TriangleStream<GS_Output> stream)

float4 pixelShader_color(GS_Output input) : SV_Target

//I construct the input layout like this:

D3D11_INPUT_ELEMENT_DESC layout[] =
{
{ "Position", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "Color", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, 16, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "TexCoord", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 20, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};


Any idea what's going on? Actually, the rendered result is the one I expect, but I'm confused by the error messages.
Advertisement
My bad. Turns out I was forgetting to explicitly set the geometry shader to 0 in a later effect, which caused the described behavior.
I also got the same error, and what do you mean about "set the geometry shader to 0 in a later effect"?
Thank you, I got it, just set it to NULL

This topic is closed to new replies.

Advertisement