示例#1
0
t_block* get_block(int x_coord, int y_coord) {
    int index = get_block_index(x_coord, y_coord);

    assert(index < FPGA->blocklist->num_blocks);

    return FPGA->blocklist->array_of_blocks[index];
}
示例#2
0
void GLshader::print_block_names()
{
  GLint numBlocks;
  GLint nameLen;
  GLint block_binding;
  GLint block_size;
  GLint ref_vertex;
  GLint ref_fragment;

  std::vector <std::string> name_list;

  glGetProgramiv(program, GL_ACTIVE_UNIFORM_BLOCKS, &numBlocks);
  name_list.reserve(numBlocks);

  std::cout << "Found " << numBlocks << " block(s) in shader" << std::endl;

  for (int blockIx = 0; blockIx < numBlocks; blockIx++) {
    glGetActiveUniformBlockiv(program, blockIx, GL_UNIFORM_BLOCK_NAME_LENGTH, &nameLen);
    std::vector <GLchar> name;
    name.resize(nameLen);
    glGetActiveUniformBlockName(program, blockIx, nameLen, NULL, &name[0]);
    name_list.push_back(std::string());
    name_list.back().assign(name.begin(), name.end() - 1);       //Remove the null terminator.
    glGetActiveUniformBlockiv(program, blockIx, GL_UNIFORM_BLOCK_BINDING, &block_binding);
    glGetActiveUniformBlockiv(program, blockIx, GL_UNIFORM_BLOCK_DATA_SIZE, &block_size);
    glGetActiveUniformBlockiv(program, blockIx, GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER, &ref_vertex);
    glGetActiveUniformBlockiv(program, blockIx, GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER, &ref_fragment);

    std::cout << "Name: " << name.data() << " block binding: " << block_binding << " block size: " << block_size << std::endl;
    std::cout << "ref vertex: " << ref_vertex << ", ref fragment: " << ref_fragment << std::endl;
  }

  for (unsigned int il = 0; il < name_list.size(); il++) {
    std::cout << "Block name: " << name_list[il] << ", index: " <<
      get_block_index(name_list[il]) << std::endl;
  }
}
示例#3
0
IndexSet::BitBlock *IndexSet::alloc_block_containing(uint element) {
  BitBlock *block = alloc_block();
  uint bi = get_block_index(element);
  _blocks[bi] = block;
  return block;
}