Home | History | Annotate | Download | only in functional

Lines Matching full:shader

21  * \brief Shader API tests.
90 void setShaderSources (glu::Shader& shader, const ShaderSources& sources)
98 shader.setSources((int)cStrings.size(), &cStrings[0], &sources.lengths[0]);
100 shader.setSources((int)cStrings.size(), &cStrings[0], 0);
131 void queryShaderInfo (glu::RenderContext& renderCtx, deUint32 shader, glu::ShaderInfo& info)
146 gl.getShaderiv(shader, GL_COMPILE_STATUS, &compileStatus);
147 gl.getShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &sourceLen);
148 gl.getShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLen);
156 gl.getShaderSource(shader, (int)source.size(), &unusedLen, &source[0]);
163 gl.getShaderInfoLog(shader, (int)infoLog.size(), &unusedLen, &infoLog[0]);
169 // Shader source generator
209 // Shader allocation utility
221 glu::Shader& createShader (const glu::ShaderType shaderType);
224 glu::Shader& get (const glu::ShaderType shaderType) { DE_ASSERT(hasShader(shaderType)); return *m_shaders[shaderType]; }
229 std::map<glu::ShaderType, glu::Shader*> m_shaders;
240 for (std::map<glu::ShaderType, glu::Shader*>::iterator shaderIter = m_shaders.begin(); shaderIter != m_shaders.end(); shaderIter++)
253 glu::Shader& ShaderAllocator::createShader (const glu::ShaderType shaderType)
257 glu::Shader* const shader = new glu::Shader(m_context, shaderType);
259 m_shaders[shaderType] = shader;
262 return *shader;
286 void logShader (TestLog& log, glu::RenderContext& renderCtx, glu::Shader& shader)
289 queryShaderInfo(renderCtx, shader.getShader(), info);
291 log << TestLog::Shader(getLogShaderType(shader.getType()), info.source, info.compileOk, info.infoLog);
309 void logVertexFragmentProgram (TestLog& log, glu::RenderContext& renderCtx, glu::Program& program, glu::Shader& vertShader, glu::Shader& fragShader)
464 bool checkDeleteStatus(GLuint shader)
467 glGetShaderiv(shader, GL_DELETE_STATUS, &deleteStatus);
560 GLint getSourceLength (glu::Shader& shader)
563 glGetShaderiv(shader.getShader(), GL_SHADER_SOURCE_LENGTH, &sourceLength);
569 std::string readSource (glu::Shader& shader)
571 const GLint sourceLength = getSourceLength(shader);
574 glGetShaderSource(shader.getShader(), (GLsizei)sourceBuffer.size(), 0, &sourceBuffer[0]);
579 void verifyShaderSourceReplaced (glu::Shader& shader, const std::string& firstSource, const std::string& secondSource)
582 const std::string result = readSource(shader);
587 m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Shader source nor replaced");
591 log << TestLog::Message << "Fail, invalid shader source." << TestLog::EndMessage;
600 glu::Shader shader (m_context.getRenderContext(), m_shaderType);
608 log << TestLog::Message << "Setting shader source." << TestLog::EndMessage;
610 shader.setSources(1, &firstSource, 0);
613 log << TestLog::Message << "Replacing shader source." << TestLog::EndMessage;
615 shader.setSources(1, &secondSource, 0);
618 verifyShaderSourceReplaced(shader, firstSourceStr, secondSourceStr);
699 void buildProgram (glu::Shader& shader)
706 glu::Shader supportShader (renderCtx, supportShaderType);
713 program.attachShader(shader.getShader());
719 logVertexFragmentProgram(log, renderCtx, program, shader, supportShader);
721 logVertexFragmentProgram(log, renderCtx, program, supportShader, shader);
730 glu::Shader shader (renderCtx, m_shaderType);
733 setShaderSources(shader, sources);
734 shader.compile();
736 buildProgram(shader);
738 if (!shader.getCompileStatus())
787 glu::Shader& vertShader = shaders.createShader(glu::SHADERTYPE_VERTEX);
788 glu::Shader& fragShader = shaders.createShader(glu::SHADERTYPE_FRAGMENT);
867 const std::string caseDesc = "Build program, " + desc + ", for " + shaderTypeName + " shader.";
892 glu::Shader& caseShader = shaders.get(m_shaderType);
894 log << TestLog::Message << "Detaching " + std::string(getShaderTypeName(m_shaderType)) + " shader" << TestLog::EndMessage;
914 glu::Shader& caseShader = shaders.get(m_shaderType);
916 log << TestLog::Message << "Reattaching " + std::string(getShaderTypeName(m_shaderType)) + " shader" << TestLog::EndMessage;
937 glu::Shader& caseShader = shaders.get(m_shaderType);
939 log << TestLog::Message << "Deleting " + std::string(getShaderTypeName(m_shaderType)) + " shader" << TestLog::EndMessage;
960 glu::Shader& caseShader = shaders.get(m_shaderType);
962 log << TestLog::Message << "Deleting and replacing " + std::string(getShaderTypeName(m_shaderType)) + " shader" << TestLog::EndMessage;
984 glu::Shader& caseShader = shaders.get(m_shaderType);
986 log << TestLog::Message << "Recompiling " + std::string(getShaderTypeName(m_shaderType)) + " shader" << TestLog::EndMessage;
1007 glu::Shader& caseShader = shaders.get(m_shaderType);
1009 log << TestLog::Message << "Replacing " + std::string(getShaderTypeName(m_shaderType)) + " shader source and recompiling" << TestLog::EndMessage;
1019 : TestCaseGroup(context, "shader_api", "Shader API Cases")
1034 createDeleteGroup->addChild(new CreateShaderCase(m_context, "create_vertex_shader", "Create vertex shader object", glu::SHADERTYPE_VERTEX));
1035 createDeleteGroup->addChild(new CreateShaderCase(m_context, "create_fragment_shader", "Create fragment shader object", glu::SHADERTYPE_FRAGMENT));
1037 createDeleteGroup->addChild(new DeleteShaderCase(m_context, "delete_vertex_fragment", "Delete vertex shader and fragment shader"));
1045 compileLinkGroup->addChild(new CompileShaderCase(m_context, "compile_vertex_shader", "Compile vertex shader", glu::SHADERTYPE_VERTEX));
1046 compileLinkGroup->addChild(new CompileShaderCase(m_context, "compile_fragment_shader", "Compile fragment shader", glu::SHADERTYPE_FRAGMENT));
1051 // shader source
1061 const std::string caseDesc = std::string("Replace source code of ") + ((shaderType == glu::SHADERTYPE_FRAGMENT) ? "fragment" : "vertex") + " shader.";
1085 + " shader source split into "
1100 addProgramStateCase<ProgramStateDetachShaderCase> (linkStatusGroup, m_context, "detach_shader", "detach shader");
1101 addProgramStateCase<ProgramStateReattachShaderCase> (linkStatusGroup, m_context, "reattach_shader", "reattach shader");
1102 addProgramStateCase<ProgramStateDeleteShaderCase> (linkStatusGroup, m_context, "delete_shader", "delete shader");
1103 addProgramStateCase<ProgramStateReplaceShaderCase> (linkStatusGroup, m_context, "replace_shader", "replace shader object");
1104 addProgramStateCase<ProgramStateRecompileShaderCase> (linkStatusGroup, m_context, "recompile_shader", "recompile shader");
1105 addProgramStateCase<ProgramStateReplaceSourceCase> (linkStatusGroup, m_context, "replace_source", "replace shader source");