[pixel shader todo] float4 main() : sv_target { return 0; } GeometryShader gs1 = CompileShader(gs_5_0, main()); GeometryShader gs2 = ConstructGSWithSO(gs1, "random_string", "another_string", NULL, NULL, 1); technique11 { pass { SetGeometryShader(gs2); } } % ConstructGSWithSO for pixel shaders parses with either 2 or 6 arguments, without doing type checking. [pixel shader fail(sm<6)] float4 main() : sv_target { return 0; } GeometryShader gs1 = CompileShader(gs_5_0, main()); GeometryShader gs2 = ConstructGSWithSO(gs1); [pixel shader todo] float4 main() : sv_target { return 0; } GeometryShader gs2 = ConstructGSWithSO("foo", "bar"); [pixel shader fail(sm<6)] float4 main() : sv_target { return 0; } GeometryShader gs2 = ConstructGSWithSO(1, 2, 3); [pixel shader todo] float4 main() : sv_target { return 0; } GeometryShader gs2 = ConstructGSWithSO("foo", "bar", float2(42, 42), 3, 4, NULL); [pixel shader fail(sm<6)] float4 main() : sv_target { return 0; } GeometryShader gs2 = ConstructGSWithSO(1, 2, 3, 4, 5, 6, 7);