Lines Matching defs:program
1063 bool verifyVarying(Program& program, const std::string& parent_name, const Variable::Descriptor& desc,
1080 index = program.GetResourceIndex(name, interface);
1082 program.GetResource(interface, index, GL_LOCATION, 1 /* size */, &location);
1083 program.GetResource(interface, index, GL_LOCATION_COMPONENT, 1 /* size */, &component);
1087 stream << "Failed to query program for varying: " << desc.m_name << ". Reason: " << exc.what() << "\n";
1110 /** Query program resource for given variable and verify that everything is as expected
1112 * @param program Program object
1119 bool checkVarying(Program& program, Shader::STAGES stage, const Variable& variable, std::stringstream& stream, bool is_input)
1131 bool member_result = verifyVarying(program, interface->m_name, member, stream, is_input);
1177 bool member_result = verifyVarying(program, structVariable, member, stream, is_input);
1191 bool member_result = verifyVarying(program, structVariable, member, stream, is_input);
1202 result = verifyVarying(program, "", variable.m_descriptor, stream, is_input);
1207 /** Query program resource for given variable and verify that everything is as expected
1209 * @param program Program object
1215 bool checkUniform(Program& program, const Utils::Variable& variable, std::stringstream& stream)
1264 program.GetUniformIndices(static_cast<glw::GLsizei>(size), &names[0], &indices[0]);
1265 program.GetActiveUniformsiv(static_cast<glw::GLsizei>(size), &indices[0], GL_UNIFORM_OFFSET, &offsets[0]);
1269 stream << "Failed to query program for uniforms in block: " << variable.m_descriptor.m_name
1291 /** Query program resource for given variable and verify that everything is as expected
1293 * @param program Program object
1299 bool checkSSB(Program& program, const Utils::Variable& variable, std::stringstream& stream)
1336 index = program.GetResourceIndex(name_str, GL_BUFFER_VARIABLE);
1338 program.GetResource(GL_BUFFER_VARIABLE, index, GL_OFFSET, 1, &offset);
1342 stream << "Failed to query program for buffer variable: " << variable.m_descriptor.m_name
1362 /** Query program resources at given stage and verifies results
1364 * @param program Program object
1365 * @param program_interface Definition of program interface
1375 bool checkProgramStage(Program& program, const ProgramInterface& program_interface, Utils::Shader::STAGES stage,
1392 if (false == checkVarying(program, stage, **it, stream, true))
1406 if (false == checkVarying(program, stage, **it, stream, false))
1420 if (false == checkUniform(program, **it, stream))
1434 if (false == checkSSB(program, **it, stream))
1444 /** Query resources of monolithic compute program and verifies results
1446 * @param program Program object
1447 * @param program_interface Definition of program interface
1452 bool checkMonolithicComputeProgramInterface(Program& program, const ProgramInterface& program_interface,
1457 if (false == checkProgramStage(program, program_interface, Shader::COMPUTE, false, false, true, true, stream))
1466 /** Query resources of monolithic draw program and verifies results
1468 * @param program Program object
1469 * @param program_interface Definition of program interface
1474 bool checkMonolithicDrawProgramInterface(Program& program, const ProgramInterface& program_interface,
1479 if (false == checkProgramStage(program, program_interface, Shader::VERTEX, true, false, true, true, stream))
1488 /** Query resources of separable draw program and verifies results
1490 * @param program Program object
1491 * @param program_interface Definition of program interface
1496 bool checkSeparableDrawProgramInterface(Program& program, const ProgramInterface& program_interface,
1501 if (false == checkProgramStage(program, program_interface, stage, true, true, true, true, stream))
2636 * @param program_id Id of program
2661 * @param program_id Id of program
2698 /** Initialize program instance
2708 * @param is_separable Selects if monolithic or separable program should be built. Defaults to false
2715 /* Delete previous program */
2729 /* Create program, set up transform feedback and attach shaders */
2748 /* Link program */
2758 /** Initialize program instance
2766 * @param is_separable Selects if monolithic or separable program should be built. Defaults to false
2779 /** Release program instance
2884 /** Set program as active
2894 /** Attach shader to program
2897 * @param program_id Id of program
2915 * @param id Id of program
2951 /** Create program instance
2954 * @param out_id Id of program
2963 TCU_FAIL("Failed to create program");
2972 * @param program_id Id of program
2988 * @param program_id Id of program
3000 /** Link program
3003 * @param id Id of program
3090 /** Use program
3093 * @param id Id of program
3104 * @param id Id of program
3120 * @param id Id of program
3138 * @param id Id of program
3155 * @param id Id of program
3198 return "Failed to link program";
4836 /** Get definitions of all structures used in program interface
5736 /** Inspects program to check if all resources are as expected
5744 bool BufferTestBase::inspectProgram(GLuint /* test_case_index */, Utils::Program& /* program */,
5763 Utils::Program program(m_context);
5790 /* Set up program */
5791 program.Init("" /* compute_shader */, fragment_shader, geometry_shader, tess_ctrl_shader, tess_eval_shader,
5797 if (false == inspectProgram(test_case_index, program, stream))
5811 program.Use();
5823 bool result = executeDrawCall((program.m_tess_eval.m_id != 0), test_case_index);
6184 /** Selects if the test case should use a separable program
6211 Utils::Program program(m_context);
6215 program.Init(cs_source, "" /* fs */, "" /* gs */, "" /* tcs */, "" /* tes */, "" /* vs */,
6246 << tcu::TestLog::Message << "Unexpected error in program linking: " << tcu::TestLog::EndMessage;
6256 << "Error in program linking was expected, logged for verification: " << tcu::TestLog::EndMessage;
6282 Utils::Program program(m_context);
6291 program.Init("" /*cs*/, fs_source, "" /*gs_source*/, "" /*tcs_source*/, "" /*tes_source*/,
6293 program.Init("" /*cs*/, "" /*fs_source*/, gs_source, "" /*tcs_source*/, "" /*tes_source*/,
6295 program.Init("" /*cs*/, "" /*fs_source*/, "" /*gs_source*/, tcs_source, "" /*tes_source*/,
6297 program.Init("" /*cs*/, "" /*fs_source*/, "" /*gs_source*/, "" /*tcs_source*/, tes_source,
6299 program.Init("" /*cs*/, "" /*fs_source*/, "" /*gs_source*/, "" /*tcs_source*/, "" /*tes_source*/,
6304 program.Init("" /* cs */, fs_source, gs_source, tcs_source, tes_source, vs_source,
6336 << tcu::TestLog::Message << "Unexpected error in program linking: " << tcu::TestLog::EndMessage;
6346 << "Error in program linking was expected, logged for verification: " << tcu::TestLog::EndMessage;
6391 * @param program Program object
6392 * @param program_interface Interface of program
6394 void TextureTestBase::prepareAttribLocation(Utils::Program& program, Utils::ProgramInterface& program_interface)
6405 GLuint index = program.GetResourceIndex((*it)->m_descriptor.m_name, GL_PROGRAM_INPUT);
6408 program.GetResource(GL_PROGRAM_INPUT, index, GL_LOCATION, 1 /* size */, &location);
6532 * @param program_interface Interface of program
6802 * @param program_interface Interface of program
6913 * @param program Program object
6914 * @param program_interface Interface of program
6916 void TextureTestBase::prepareFragmentDataLoc(Utils::Program& program, Utils::ProgramInterface& program_interface)
6926 GLuint index = program.GetResourceIndex((*it)->m_descriptor.m_name, GL_PROGRAM_OUTPUT);
6929 program.GetResource(GL_PROGRAM_OUTPUT, index, GL_LOCATION, 1 /* size */, &location);
6998 * @param program Program
7001 void TextureTestBase::prepareSSBs(GLuint /* test_case_index */, Utils::ShaderInterface& si, Utils::Program& program,
7029 /* Set active program */
7030 program.Use();
7042 prepareUniform(program, variable, buffer);
7050 * @param program Program
7054 Utils::Program& program, Utils::Buffer& cs_buffer)
7060 prepareSSBs(test_case_index, cs, program, cs_buffer);
7069 * @param program Program
7077 Utils::Program& program, Utils::Buffer& fs_buffer, Utils::Buffer& gs_buffer,
7092 prepareSSBs(test_case_index, fs, program, fs_buffer);
7093 prepareSSBs(test_case_index, gs, program, gs_buffer);
7094 prepareSSBs(test_case_index, tcs, program, tcs_buffer);
7095 prepareSSBs(test_case_index, tes, program, tes_buffer);
7096 prepareSSBs(test_case_index, vs, program, vs_buffer);
7107 * @param program Program object
7111 void TextureTestBase::prepareUniform(Utils::Program& program, Utils::Variable& variable, Utils::Buffer& buffer)
7123 program.Uniform(gl, variable.m_descriptor.m_builtin, count, variable.m_descriptor.m_expected_location,
7146 * @param program Program
7149 void TextureTestBase::prepareUniforms(GLuint /* test_case_index */, Utils::ShaderInterface& si, Utils::Program& program,
7177 /* Set active program */
7178 program.Use();
7189 prepareUniform(program, variable, buffer);
7197 * @param program Program
7201 Utils::Program& program, Utils::Buffer& cs_buffer)
7207 prepareUniforms(test_case_index, cs, program, cs_buffer);
7216 * @param program Program
7224 Utils::Program& program, Utils::Buffer& fs_buffer, Utils::Buffer& gs_buffer,
7239 prepareUniforms(test_case_index, fs, program, fs_buffer);
7240 prepareUniforms(test_case_index, gs, program, gs_buffer);
7241 prepareUniforms(test_case_index, tcs, program, tcs_buffer);
7242 prepareUniforms(test_case_index, tes, program, tes_buffer);
7243 prepareUniforms(test_case_index, vs, program, vs_buffer);
7256 * @param program Program
7300 * @param program_interface Interface of program
7589 /** Runs "draw" test with monolithic program
7620 Utils::Program program(m_context);
7636 program.Init("" /* compute_shader */, fragment_shader, geometry_shader, tess_ctrl_shader, tess_eval_shader,
7640 prepareAttribLocation(program, program_interface);
7641 prepareFragmentDataLoc(program, program_interface);
7645 if (false == Utils::checkMonolithicDrawProgramInterface(program, program_interface, stream))
7649 << ". Inspection of draw program interface failed:\n"
7658 program.Use();
7666 prepareUniforms(test_case_index, program_interface, program, buffer_u_fs, buffer_u_gs, buffer_u_tcs,
7669 prepareSSBs(test_case_index, program_interface, program, buffer_ssb_fs, buffer_ssb_gs, buffer_ssb_tcs,
7700 Utils::Program program(m_context);
7708 program.Init(compute_shader, "" /* fragment_shader */, "" /* geometry_shader */, "" /* tess_ctrl_shader */,
7715 if (false == Utils::checkMonolithicComputeProgramInterface(program, program_interface, stream))
7718 << ". Inspection of compute program interface failed:\n"
7726 program.Use();
7733 prepareUniforms(test_case_index, program_interface, program, buffer_u_cs);
7735 prepareSSBs(test_case_index, program_interface, program, buffer_ssb_cs);
7738 GLint image_location = program.GetUniformLocation("uni_image");
7762 /** Runs "draw" test with separable program
7833 << ". Inspection of separable draw program interface failed:\n"
7896 Utils::Program program(m_context);
7904 program.Init(compute_shader, "" /* fragment_shader */, "" /* geometry_shader */, "" /* tess_ctrl_shader */,
7911 if (false == Utils::checkMonolithicComputeProgramInterface(program, program_interface, stream))
7914 << ". Inspection of compute program interface failed:\n"
7922 program.Use();
7929 prepareUniforms(test_case_index, program_interface, program, buffer_u_cs);
7932 GLint image_location = program.GetUniformLocation("uni_image");
8071 Utils::Program program(m_context);
8078 program.Init("" /* cs */, "#version 430 core\n"
8119 gl.getProgramInterfaceiv(program.m_id, GL_TRANSFORM_FEEDBACK_BUFFER, GL_MAX_NAME_LENGTH, ¶m);
8127 gl.getProgramResourceIndex(program.m_id, GL_TRANSFORM_FEEDBACK_BUFFER, "0");
8133 gl.getProgramResourceName(program.m_id, GL_TRANSFORM_FEEDBACK_BUFFER, 0 /* index */, 64 /* bufSize */, &length,
8513 /** Get interface of program
8516 * @param program_interface Interface of program
8618 * @param program Program object
8623 Utils::Program& program, Utils::Buffer& /* cs_buffer */)
8629 GLint goku_location = program.GetUniformLocation("goku");
8630 GLint gohan_location = program.GetUniformLocation("gohan");
8631 GLint goten_location = program.GetUniformLocation("goten");
8633 program.Uniform(gl, Utils::Type::uint, 1 /* count */, goku_location, uniform_data);
8634 program.Uniform(gl, Utils::Type::uint, m_gohan_length, gohan_location, uniform_data);
8635 program.Uniform(gl, Utils::Type::uint, m_goten_length, goten_location, uniform_data);
8642 * @param program Pass as param to first implemetnation
8651 Utils::Program& program, Utils::Buffer& /* fs_buffer */,
8657 prepareUniforms(test_case_index, program_interface, program, vs_buffer);
8670 /** Get interface of program
8673 * @param program_interface Interface of program
10545 /** Get interface of program
10548 * @param program_interface Interface of program
10642 /** Get interface of program
10645 * @param program_interface Interface of program
12312 /** Get interface of program
12315 * @param program_interface Interface of program
12442 /** Get interface of program
12445 * @param program_interface Interface of program
12681 /** Get interface of program
12684 * @param program_interface Interface of program
12820 * @param ignored Interface of program
13012 /** Get interface of program
13015 * @param program_interface Interface of program
13529 /** Get interface of program
13532 * @param program_interface Interface of program
14780 /** Selects if the test case should use a separable program
14846 /** Get interface of program
14849 * @param program_interface Interface of program
19679 /** Does BindAttribLocation for "goten" and relink program
19681 * @param program Program object
19682 * @param program_interface Interface of program
19684 void VertexAttribLocationAPITest::prepareAttribLocation(Utils::Program& program,
19689 gl.bindAttribLocation(program.m_id, m_goten_location, "goten");
19692 program.Link(gl, program.m_id);
19695 TextureTestBase::prepareAttribLocation(program, program_interface);
19698 /** Get interface of program
19701 * @param program_interface Interface of program
19891 /** Get interface of program
19894 * @param program_interface Interface of program
19941 * @param program Program object
19942 * @param program_interface Interface of program
19944 void FragmentDataLocationAPITest::prepareFragmentDataLoc(Utils::Program& program,
19950 gl.bindFragDataLocation(program.m_id, m_goten_location, "goten");
19953 program.Link(gl, program.m_id);
19956 TextureTestBase::prepareFragmentDataLoc(program, program_interface);
21521 If a program is active for the geometry shader stage, transform feedback captures the vertices of each
21522 primitive emitted by the geometry shader. Otherwise, if a program is active for the tessellation evaluation
21929 " vec4 gl_Position; \n" // gl_Position must be redeclared in separable program mode
22173 /** Inspects program for xfb stride
22175 * @param program Program to query
22179 bool XFBBlockStrideTest::inspectProgram(Utils::Program& program)
22183 program.GetResource(GL_TRANSFORM_FEEDBACK_BUFFER, 0 /* index */, GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE,
22198 Utils::Program program(m_context);
22204 program.Init("" /* cs */, "", gs_source, tcs_source, tes_source, vs_source, true /* separable */);
22206 test_case_result = inspectProgram(program);
22365 /** Inspects program to check if all resources are as expected
22368 * @param program Program instance
22373 bool XFBBlockMemberStrideTest::inspectProgram(GLuint /* test_case_index*/, Utils::Program& program,
22376 const GLuint gohan_id = program.GetResourceIndex("gohan", GL_TRANSFORM_FEEDBACK_VARYING);
22377 const GLuint goten_id = program.GetResourceIndex("goten", GL_TRANSFORM_FEEDBACK_VARYING);
22378 const GLuint chichi_id = program.GetResourceIndex("chichi", GL_TRANSFORM_FEEDBACK_VARYING);
22384 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, gohan_id, GL_OFFSET, 1, &gohan_offset);
22385 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, goten_id, GL_OFFSET, 1, &goten_offset);
22386 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, chichi_id, GL_OFFSET, 1, &chichi_offset);
22713 "Test verifies that get program resource reports correct results for XFB")
22761 " vec4 gl_Position; \n" // gl_Position must be redeclared in separable program mode
22967 /** Inspects program for offset, buffer index, buffer stride and type
22970 * @param program Program to query
22974 bool XFBGetProgramResourceAPITest::inspectProgram(glw::GLuint test_case_index, Utils::Program& program)
22994 GLuint b0_v0_index = program.GetResourceIndex("b0_v0", GL_TRANSFORM_FEEDBACK_VARYING);
22995 GLuint b0_v1_index = program.GetResourceIndex("b0_v1", GL_TRANSFORM_FEEDBACK_VARYING);
22996 GLuint b0_v3_index = program.GetResourceIndex("b0_v3", GL_TRANSFORM_FEEDBACK_VARYING);
22997 GLuint b1_v1_index = program.GetResourceIndex("b1_v1", GL_TRANSFORM_FEEDBACK_VARYING);
22999 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b0_v0_index, GL_OFFSET, 1 /* buf_size */, &b0_v0_offset);
23000 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b0_v1_index, GL_OFFSET, 1 /* buf_size */, &b0_v1_offset);
23001 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b0_v3_index, GL_OFFSET, 1 /* buf_size */, &b0_v3_offset);
23002 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b1_v1_index, GL_OFFSET, 1 /* buf_size */, &b1_v1_offset);
23004 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b0_v0_index, GL_TYPE, 1 /* buf_size */, &b0_v0_type);
23005 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b0_v1_index, GL_TYPE, 1 /* buf_size */, &b0_v1_type);
23006 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b0_v3_index, GL_TYPE, 1 /* buf_size */, &b0_v3_type);
23007 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b1_v1_index, GL_TYPE, 1 /* buf_size */, &b1_v1_type);
23009 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b0_v0_index, GL_TRANSFORM_FEEDBACK_BUFFER_INDEX,
23011 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b0_v1_index, GL_TRANSFORM_FEEDBACK_BUFFER_INDEX,
23013 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b0_v3_index, GL_TRANSFORM_FEEDBACK_BUFFER_INDEX,
23015 program.GetResource(GL_TRANSFORM_FEEDBACK_VARYING, b1_v1_index, GL_TRANSFORM_FEEDBACK_BUFFER_INDEX,
23018 program.GetResource(GL_TRANSFORM_FEEDBACK_BUFFER, b0_v0_buf, GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE, 1 /* buf_size */,
23020 program.GetResource(GL_TRANSFORM_FEEDBACK_BUFFER, b1_v1_buf, GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE, 1 /* buf_size */,
23082 Utils::Program program(m_context);
23115 program.Init("" /* cs */, "", gs_source, tcs_source, tes_source, vs_source, captured_varyings, true,
23127 program.Init("" /* cs */, "", gs_source, tcs_source, tes_source, vs_source, captured_varyings, false,
23133 program.Init("" /* cs */, "", gs_source, tcs_source, tes_source, vs_source, true /* separable */);
23136 test_case_result = inspectProgram(test_case_index, program);
23429 /** Inspects program to check if all resources are as expected
23432 * @param program Program instance
23437 bool XFBOverrideQualifiersWithAPITest::inspectProgram(GLuint test_case_index, Utils::Program& program,
23444 program.GetResource(GL_TRANSFORM_FEEDBACK_BUFFER, 0 /* index */, GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE,
26330 /** Inspects program to check if all resources are as expected
26333 * @param program Program instance
26338 bool XFBCaptureInactiveOutputVariableTest::inspectProgram(GLuint /* test_case_index */, Utils::Program& program,
26345 program.GetResource(GL_TRANSFORM_FEEDBACK_BUFFER, 0 /* index */, GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE,