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;
}
Пример #2
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;
}
Пример #3
0
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;
}