コード例 #1
0
link_uniform_block_active *
process_block(void *mem_ctx, struct hash_table *ht, ir_variable *var)
{
   const uint32_t h = _mesa_hash_string(var->get_interface_type()->name);
   const hash_entry *const existing_block =
      _mesa_hash_table_search(ht, h, var->get_interface_type()->name);

   const glsl_type *const block_type = var->is_interface_instance()
      ? var->type : var->get_interface_type();


   /* If a block with this block-name has not previously been seen, add it.
    * If a block with this block-name has been seen, it must be identical to
    * the block currently being examined.
    */
   if (existing_block == NULL) {
      link_uniform_block_active *const b =
	 rzalloc(mem_ctx, struct link_uniform_block_active);

      b->type = block_type;
      b->has_instance_name = var->is_interface_instance();

      if (var->data.explicit_binding) {
         b->has_binding = true;
         b->binding = var->data.binding;
      } else {
         b->has_binding = false;
         b->binding = 0;
      }

      _mesa_hash_table_insert(ht, h, var->get_interface_type()->name,
			      (void *) b);
      return b;
   } else {
コード例 #2
0
ファイル: destroy_callback.c プロジェクト: CSRedRat/mesa-1
int
main(int argc, char **argv)
{
   struct hash_table *ht;
   uint32_t hash_str1 = _mesa_hash_string(str1);
   uint32_t hash_str2 = _mesa_hash_string(str2);

   ht = _mesa_hash_table_create(NULL, _mesa_key_string_equal);

   _mesa_hash_table_insert(ht, hash_str1, str1, NULL);
   _mesa_hash_table_insert(ht, hash_str2, str2, NULL);

   _mesa_hash_table_destroy(ht, delete_callback);

   assert(delete_str1 && delete_str2);

   return 0;
}