int main() { int A[SIZE]; int i; gen_values(A, SIZE); /* DEBUG */ for (i = 0; i < SIZE; ++i) printf("%d ", A[i]); printf("\n"); int len = longest_increasing_subsequence(A, SIZE); printf("Length of LIS: %d\n", len); return 0; }
static GLboolean test_uniform_funcs(void) { static const char *signedFragText = "uniform int value1; \n" "uniform ivec2 value2; \n" "uniform ivec3 value3; \n" "uniform ivec4 value4; \n" "void main() \n" "{ \n" " vec4 t = vec4(value4); \n" " t += vec4(value3, 0.0); \n" " t += vec4(value2, 0.0, 0.0); \n" " t += vec4(value1, 0.0, 0.0, 0.0); \n" " gl_FragColor = 0.01 * t; \n" "} \n"; static const char *unsignedFragText = "#extension GL_EXT_gpu_shader4: enable \n" "uniform unsigned int value1; \n" "uniform uvec2 value2; \n" "uniform uvec3 value3; \n" "uniform uvec4 value4; \n" "void main() \n" "{ \n" " vec4 t = vec4(value4); \n" " t += vec4(value3, 0.0); \n" " t += vec4(value2, 0.0, 0.0); \n" " t += vec4(value1, 0.0, 0.0, 0.0); \n" " gl_FragColor = 0.01 * t; \n" "} \n"; GLint vals[4], loc1, loc2, loc3, loc4; GLuint shader; /* * Signed integer tests. */ shader = piglit_compile_shader_text(GL_FRAGMENT_SHADER, signedFragText); assert(shader); Program = piglit_link_simple_program(0, shader); assert(Program); glUseProgram(Program); check_error(__FILE__, __LINE__); loc1 = glGetUniformLocation(Program, "value1"); assert(loc1 >= 0); loc2 = glGetUniformLocation(Program, "value2"); assert(loc2 >= 0); loc3 = glGetUniformLocation(Program, "value3"); assert(loc3 >= 0); loc4 = glGetUniformLocation(Program, "value4"); assert(loc4 >= 0); check_error(__FILE__, __LINE__); gen_values(vals, 1, SIGNED); glUniform1iARB(loc1, vals[0]); if (!check_uniform(vals, 1, SIGNED, loc1, "glUniform1iARB")) return GL_FALSE; gen_values(vals, 2, SIGNED); glUniform2iARB(loc2, vals[0], vals[1]); if (!check_uniform(vals, 2, SIGNED, loc2, "glUniform2iARB")) return GL_FALSE; gen_values(vals, 3, SIGNED); glUniform3iARB(loc3, vals[0], vals[1], vals[2]); if (!check_uniform(vals, 3, SIGNED, loc3, "glUniform3iARB")) return GL_FALSE; gen_values(vals, 4, SIGNED); glUniform4iARB(loc4, vals[0], vals[1], vals[2], vals[3]); if (!check_uniform(vals, 4, SIGNED, loc4, "glUniform4iARB")) return GL_FALSE; /* * Unsigned integer tests. */ shader = piglit_compile_shader_text(GL_FRAGMENT_SHADER, unsignedFragText); assert(shader); Program = piglit_link_simple_program(0, shader); assert(Program); glUseProgram(Program); check_error(__FILE__, __LINE__); loc1 = glGetUniformLocation(Program, "value1"); assert(loc1 >= 0); loc2 = glGetUniformLocation(Program, "value2"); assert(loc2 >= 0); loc3 = glGetUniformLocation(Program, "value3"); assert(loc3 >= 0); loc4 = glGetUniformLocation(Program, "value4"); assert(loc4 >= 0); check_error(__FILE__, __LINE__); gen_values(vals, 1, UNSIGNED); glUniform1uiEXT(loc1, vals[0]); if (!check_uniform(vals, 1, UNSIGNED, loc1, "glUniform1uiEXT")) return GL_FALSE; gen_values(vals, 2, UNSIGNED); glUniform2uiEXT(loc2, vals[0], vals[1]); if (!check_uniform(vals, 2, UNSIGNED, loc2, "glUniform2uiEXT")) return GL_FALSE; gen_values(vals, 3, UNSIGNED); glUniform3uiEXT(loc3, vals[0], vals[1], vals[2]); if (!check_uniform(vals, 3, UNSIGNED, loc3, "glUniform3uiEXT")) return GL_FALSE; gen_values(vals, 4, UNSIGNED); glUniform4uiEXT(loc4, vals[0], vals[1], vals[2], vals[3]); if (!check_uniform(vals, 4, UNSIGNED, loc4, "glUniform4uiEXT")) return GL_FALSE; return GL_TRUE; }
static GLboolean test_attrib_funcs(void) { GLint vals[4]; gen_values(vals, 1, SIGNED); glVertexAttribI1iEXT(Index, vals[0]); if (!check_attrib(vals, SIGNED, "glVertexAttribI1iEXT")) return GL_FALSE; gen_values(vals, 2, SIGNED); glVertexAttribI2iEXT(Index, vals[0], vals[1]); if (!check_attrib(vals, SIGNED, "glVertexAttribI2iEXT")) return GL_FALSE; gen_values(vals, 3, SIGNED); glVertexAttribI3iEXT(Index, vals[0], vals[1], vals[2]); if (!check_attrib(vals, SIGNED, "glVertexAttribI3iEXT")) return GL_FALSE; gen_values(vals, 4, SIGNED); glVertexAttribI4iEXT(Index, vals[0], vals[1], vals[2], vals[3]); if (!check_attrib(vals, SIGNED, "glVertexAttribI4iEXT")) return GL_FALSE; gen_values(vals, 1, SIGNED); glVertexAttribI1ivEXT(Index, vals); if (!check_attrib(vals, SIGNED, "glVertexAttribI1ivEXT")) return GL_FALSE; gen_values(vals, 2, SIGNED); glVertexAttribI2ivEXT(Index, vals); if (!check_attrib(vals, SIGNED, "glVertexAttribI2ivEXT")) return GL_FALSE; gen_values(vals, 3, SIGNED); glVertexAttribI3ivEXT(Index, vals); if (!check_attrib(vals, SIGNED, "glVertexAttribI3ivEXT")) return GL_FALSE; gen_values(vals, 4, SIGNED); glVertexAttribI4ivEXT(Index, vals); if (!check_attrib(vals, SIGNED, "glVertexAttribI4ivEXT")) return GL_FALSE; gen_values(vals, 1, UNSIGNED); glVertexAttribI1uiEXT(Index, vals[0]); if (!check_attrib(vals, UNSIGNED, "glVertexAttribI1uiEXT")) return GL_FALSE; gen_values(vals, 2, UNSIGNED); glVertexAttribI2uiEXT(Index, vals[0], vals[1]); if (!check_attrib(vals, UNSIGNED, "glVertexAttribI2uiEXT")) return GL_FALSE; gen_values(vals, 3, UNSIGNED); glVertexAttribI3uiEXT(Index, vals[0], vals[1], vals[2]); if (!check_attrib(vals, UNSIGNED, "glVertexAttribI3uiEXT")) return GL_FALSE; gen_values(vals, 4, UNSIGNED); glVertexAttribI4uiEXT(Index, vals[0], vals[1], vals[2], vals[3]); if (!check_attrib(vals, UNSIGNED, "glVertexAttribI4uiEXT")) return GL_FALSE; gen_values(vals, 1, UNSIGNED); glVertexAttribI1uivEXT(Index, (GLuint *) vals); if (!check_attrib(vals, UNSIGNED, "glVertexAttribI1uivEXT")) return GL_FALSE; gen_values(vals, 2, UNSIGNED); glVertexAttribI2uivEXT(Index, (GLuint *) vals); if (!check_attrib(vals, UNSIGNED, "glVertexAttribI2uivEXT")) return GL_FALSE; gen_values(vals, 3, UNSIGNED); glVertexAttribI3uivEXT(Index, (GLuint *) vals); if (!check_attrib(vals, UNSIGNED, "glVertexAttribI3uivEXT")) return GL_FALSE; gen_values(vals, 4, UNSIGNED); glVertexAttribI4uivEXT(Index, (GLuint *) vals); if (!check_attrib(vals, UNSIGNED, "glVertexAttribI4uivEXT")) return GL_FALSE; { GLbyte bvals[4]; gen_values(vals, 4, SIGNED); bvals[0] = vals[0]; bvals[1] = vals[1]; bvals[2] = vals[2]; bvals[3] = vals[3]; glVertexAttribI4bvEXT(Index, bvals); if (!check_attrib(vals, SIGNED, "glVertexAttribI4bvEXT")) return GL_FALSE; } { GLshort svals[4]; gen_values(vals, 4, SIGNED); svals[0] = vals[0]; svals[1] = vals[1]; svals[2] = vals[2]; svals[3] = vals[3]; glVertexAttribI4svEXT(Index, svals); if (!check_attrib(vals, SIGNED, "glVertexAttribI4svEXT")) return GL_FALSE; } { GLubyte bvals[4]; gen_values(vals, 4, UNSIGNED); bvals[0] = vals[0]; bvals[1] = vals[1]; bvals[2] = vals[2]; bvals[3] = vals[3]; glVertexAttribI4ubvEXT(Index, bvals); if (!check_attrib(vals, UNSIGNED, "glVertexAttribI4ubvEXT")) return GL_FALSE; } { GLushort svals[4]; gen_values(vals, 4, UNSIGNED); svals[0] = vals[0]; svals[1] = vals[1]; svals[2] = vals[2]; svals[3] = vals[3]; glVertexAttribI4usvEXT(Index, svals); if (!check_attrib(vals, UNSIGNED, "glVertexAttribI4usvEXT")) return GL_FALSE; } return GL_TRUE; }