Home | History | Annotate | Download | only in glshared

Lines Matching refs:shaderSpec

78 static std::string generateVertexShader (const ShaderSpec& shaderSpec)
80 const bool usesInout = glu::glslVersionUsesInOutQualifiers(shaderSpec.version);
85 src << glu::getGLSLVersionDeclaration(shaderSpec.version) << "\n";
87 if (!shaderSpec.globalDeclarations.empty())
88 src << shaderSpec.globalDeclarations << "\n";
90 for (vector<Symbol>::const_iterator input = shaderSpec.inputs.begin(); input != shaderSpec.inputs.end(); ++input)
93 for (vector<Symbol>::const_iterator output = shaderSpec.outputs.begin(); output != shaderSpec.outputs.end(); ++output)
116 for (vector<Symbol>::const_iterator output = shaderSpec.outputs.begin(); output != shaderSpec.outputs.end(); ++output)
124 std::istringstream opSrc (shaderSpec.source);
132 for (vector<Symbol>::const_iterator output = shaderSpec.outputs.begin(); output != shaderSpec.outputs.end(); ++output)
148 static std::string generateGeometryShader (const ShaderSpec& shaderSpec)
150 DE_ASSERT(glu::glslVersionUsesInOutQualifiers(shaderSpec.version));
154 src << glu::getGLSLVersionDeclaration(shaderSpec.version) << "\n";
156 if (glu::glslVersionIsES(shaderSpec.version) && shaderSpec.version <= glu::GLSL_VERSION_310_ES)
159 if (!shaderSpec.globalDeclarations.empty())
160 src << shaderSpec.globalDeclarations << "\n";
165 for (vector<Symbol>::const_iterator input = shaderSpec.inputs.begin(); input != shaderSpec.inputs.end(); ++input)
168 for (vector<Symbol>::const_iterator output = shaderSpec.outputs.begin(); output != shaderSpec.outputs.end(); ++output)
190 for (vector<Symbol>::const_iterator input = shaderSpec.inputs.begin(); input != shaderSpec.inputs.end(); ++input)
194 for (vector<Symbol>::const_iterator output = shaderSpec.outputs.begin(); output != shaderSpec.outputs.end(); ++output)
204 std::istringstream opSrc (shaderSpec.source);
212 for (vector<Symbol>::const_iterator output = shaderSpec.outputs.begin(); output != shaderSpec.outputs.end(); ++output)
247 static std::string generatePassthroughVertexShader (const ShaderSpec& shaderSpec, const char* inputPrefix, const char* outputPrefix)
250 DE_ASSERT(glu::glslVersionUsesInOutQualifiers(shaderSpec.version));
254 src << glu::getGLSLVersionDeclaration(shaderSpec.version) << "\n"
257 for (vector<Symbol>::const_iterator input = shaderSpec.inputs.begin(); input != shaderSpec.inputs.end(); ++input)
267 for (vector<Symbol>::const_iterator input = shaderSpec.inputs.begin(); input != shaderSpec.inputs.end(); ++input)
275 static std::string generateFragmentShader (const ShaderSpec& shaderSpec, bool useIntOutputs, const std::map<std::string, int>& outLocationMap)
277 DE_ASSERT(glu::glslVersionUsesInOutQualifiers(shaderSpec.version));
280 src << glu::getGLSLVersionDeclaration(shaderSpec.version) << "\n";
282 if (!shaderSpec.globalDeclarations.empty())
283 src << shaderSpec.globalDeclarations << "\n";
285 for (vector<Symbol>::const_iterator input = shaderSpec.inputs.begin(); input != shaderSpec.inputs.end(); ++input)
288 for (int outNdx = 0; outNdx < (int)shaderSpec.outputs.size(); ++outNdx)
290 const Symbol& output = shaderSpec.outputs[outNdx];
336 for (vector<Symbol>::const_iterator output = shaderSpec.outputs.begin(); output != shaderSpec.outputs.end(); ++output)
346 std::istringstream opSrc (shaderSpec.source);
353 for (vector<Symbol>::const_iterator output = shaderSpec.outputs.begin(); output != shaderSpec.outputs.end(); ++output)
383 ShaderExecutor::ShaderExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec)
385 , m_inputs (shaderSpec.inputs)
386 , m_outputs (shaderSpec.outputs)
405 VertexProcessorExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec, const glu::ProgramSources& sources);
445 VertexProcessorExecutor::VertexProcessorExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec, const glu::ProgramSources& sources)
446 : ShaderExecutor (renderCtx, shaderSpec)
448 glu::ProgramSources(sources) << getTFVaryings(shaderSpec.outputs.begin(), shaderSpec.outputs.end())
554 VertexShaderExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec);
557 VertexShaderExecutor::VertexShaderExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec)
558 : VertexProcessorExecutor (renderCtx, shaderSpec,
559 glu::ProgramSources() << glu::VertexSource(generateVertexShader(shaderSpec))
560 << glu::FragmentSource(generateEmptyFragmentSource(shaderSpec.version)))
579 GeometryShaderExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec);
582 GeometryShaderExecutor::GeometryShaderExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec)
584 , VertexProcessorExecutor (renderCtx, shaderSpec,
585 glu::ProgramSources() << glu::VertexSource(generatePassthroughVertexShader(shaderSpec, "", "geom_"))
586 << glu::GeometrySource(generateGeometryShader(shaderSpec))
587 << glu::FragmentSource(generateEmptyFragmentSource(shaderSpec.version)))
596 FragmentShaderExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec);
639 FragmentShaderExecutor::FragmentShaderExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec)
640 : ShaderExecutor (renderCtx, shaderSpec)
644 glu::ProgramSources() << glu::VertexSource(generatePassthroughVertexShader(shaderSpec, "a_", ""))
645 << glu::FragmentSource(generateFragmentShader(shaderSpec, !hasFloatRenderTargets(renderCtx), m_outLocationMap)))
841 BufferIoExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec, const glu::ProgramSources& sources);
864 static void declareBufferBlocks (std::ostream& src, const ShaderSpec& spec);
865 static void generateExecBufferIo(std::ostream& src, const ShaderSpec& spec, const char* invocationNdxName);
895 ShaderSpec& shaderSpec, const glu::ProgramSources& sources)
896 : ShaderExecutor (renderCtx, shaderSpec)
1119 void BufferIoExecutor::declareBufferBlocks (std::ostream& src, const ShaderSpec& spec)
1155 void BufferIoExecutor::generateExecBufferIo (std::ostream& src, const ShaderSpec& spec, const char* invocationNdxName)
1183 ComputeShaderExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec);
1189 static std::string generateComputeShader (const ShaderSpec& spec);
1194 std::string ComputeShaderExecutor::generateComputeShader (const ShaderSpec& spec)
1220 ComputeShaderExecutor::ComputeShaderExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec)
1221 : BufferIoExecutor (renderCtx, shaderSpec,
1222 glu::ProgramSources() << glu::ComputeSource(generateComputeShader(shaderSpec)))
1297 TessControlExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec);
1303 static std::string generateTessControlShader (const ShaderSpec& shaderSpec);
1306 std::string TessControlExecutor::generateTessControlShader (const ShaderSpec& shaderSpec)
1310 src << glu::getGLSLVersionDeclaration(shaderSpec.version) << "\n";
1312 if (shaderSpec.version == glu::GLSL_VERSION_310_ES)
1315 if (!shaderSpec.globalDeclarations.empty())
1316 src << shaderSpec.globalDeclarations << "\n";
1320 declareBufferBlocks(src, shaderSpec);
1333 generateExecBufferIo(src, shaderSpec, "invocationId");
1358 TessControlExecutor::TessControlExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec)
1360 , BufferIoExecutor (renderCtx, shaderSpec, glu::ProgramSources()
1361 << glu::VertexSource(generateVertexShaderForTess(shaderSpec.version))
1362 << glu::TessellationControlSource(generateTessControlShader(shaderSpec))
1363 << glu::TessellationEvaluationSource(generateEmptyTessEvalShader(shaderSpec.version))
1364 << glu::FragmentSource(generateEmptyFragmentSource(shaderSpec.version)))
1399 TessEvaluationExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec);
1405 static std::string generateTessEvalShader (const ShaderSpec& shaderSpec);
1432 std::string TessEvaluationExecutor::generateTessEvalShader (const ShaderSpec& shaderSpec)
1436 src << glu::getGLSLVersionDeclaration(shaderSpec.version) << "\n";
1438 if (shaderSpec.version == glu::GLSL_VERSION_310_ES)
1441 if (!shaderSpec.globalDeclarations.empty())
1442 src << shaderSpec.globalDeclarations << "\n";
1448 declareBufferBlocks(src, shaderSpec);
1454 generateExecBufferIo(src, shaderSpec, "invocationId");
1461 TessEvaluationExecutor::TessEvaluationExecutor (const glu::RenderContext& renderCtx, const ShaderSpec& shaderSpec)
1463 , BufferIoExecutor (renderCtx, shaderSpec, glu::ProgramSources()
1464 << glu::VertexSource(generateVertexShaderForTess(shaderSpec.version))
1465 << glu::TessellationControlSource(generatePassthroughTessControlShader(shaderSpec.version))
1466 << glu::TessellationEvaluationSource(generateTessEvalShader(shaderSpec))
1467 << glu::FragmentSource(generateEmptyFragmentSource(shaderSpec.version)))
1503 ShaderExecutor* createExecutor (const glu::RenderContext& renderCtx, glu::ShaderType shaderType, const ShaderSpec& shaderSpec)
1507 case glu::SHADERTYPE_VERTEX: return new VertexShaderExecutor (renderCtx, shaderSpec);
1508 case glu::SHADERTYPE_TESSELLATION_CONTROL: return new TessControlExecutor (renderCtx, shaderSpec);
1509 case glu::SHADERTYPE_TESSELLATION_EVALUATION: return new TessEvaluationExecutor (renderCtx, shaderSpec);
1510 case glu::SHADERTYPE_GEOMETRY: return new GeometryShaderExecutor (renderCtx, shaderSpec);
1511 case glu::SHADERTYPE_FRAGMENT: return new FragmentShaderExecutor (renderCtx, shaderSpec);
1512 case glu::SHADERTYPE_COMPUTE: return new ComputeShaderExecutor (renderCtx, shaderSpec);