コード例 #1
0
ファイル: tr_texture.c プロジェクト: MttDs/new-rexeno-tindpe
struct pipe_surface *
trace_surface_create(struct trace_texture *tr_tex,
                     struct pipe_surface *surface)
{
   struct trace_screen *tr_scr = trace_screen(tr_tex->base.screen);
   struct trace_surface *tr_surf;

   if(!surface)
      goto error;

   assert(surface->texture == tr_tex->texture);

   tr_surf = CALLOC_STRUCT(trace_surface);
   if(!tr_surf)
      goto error;

   memcpy(&tr_surf->base, surface, sizeof(struct pipe_surface));

   pipe_reference_init(&tr_surf->base.reference, 1);
   tr_surf->base.texture = NULL;
   pipe_texture_reference(&tr_surf->base.texture, &tr_tex->base);
   tr_surf->surface = surface;

   trace_screen_add_to_list(tr_scr, surfaces, tr_surf);

   return &tr_surf->base;

error:
   pipe_surface_reference(&surface, NULL);
   return NULL;
}
コード例 #2
0
ファイル: tr_texture.c プロジェクト: MttDs/new-rexeno-tindpe
struct pipe_transfer *
trace_transfer_create(struct trace_texture *tr_tex,
                     struct pipe_transfer *transfer)
{
   struct trace_screen *tr_scr = trace_screen(tr_tex->base.screen);
   struct trace_transfer *tr_trans;

   if(!transfer)
      goto error;

   assert(transfer->texture == tr_tex->texture);

   tr_trans = CALLOC_STRUCT(trace_transfer);
   if(!tr_trans)
      goto error;

   memcpy(&tr_trans->base, transfer, sizeof(struct pipe_transfer));

   tr_trans->base.texture = NULL;
   pipe_texture_reference(&tr_trans->base.texture, &tr_tex->base);
   tr_trans->transfer = transfer;
   assert(tr_trans->base.texture == &tr_tex->base);

   trace_screen_add_to_list(tr_scr, transfers, tr_trans);

   return &tr_trans->base;

error:
   transfer->texture->screen->tex_transfer_destroy(transfer);
   return NULL;
}
コード例 #3
0
ファイル: tr_texture.c プロジェクト: MttDs/new-rexeno-tindpe
struct pipe_texture *
trace_texture_create(struct trace_screen *tr_scr,
                     struct pipe_texture *texture)
{
   struct trace_texture *tr_tex;

   if(!texture)
      goto error;

   assert(texture->screen == tr_scr->screen);

   tr_tex = CALLOC_STRUCT(trace_texture);
   if(!tr_tex)
      goto error;

   memcpy(&tr_tex->base, texture, sizeof(struct pipe_texture));

   pipe_reference_init(&tr_tex->base.reference, 1);
   tr_tex->base.screen = &tr_scr->base;
   tr_tex->texture = texture;

   trace_screen_add_to_list(tr_scr, textures, tr_tex);

   return &tr_tex->base;

error:
   pipe_texture_reference(&texture, NULL);
   return NULL;
}
コード例 #4
0
ファイル: tr_state.c プロジェクト: CPFDSoftware-Tony/gmv
struct trace_shader * trace_shader_create(struct trace_context *tr_ctx,
                                          const struct pipe_shader_state *state,
                                          void *result,
                                          enum trace_shader_type type)
{
   struct trace_shader *tr_shdr = CALLOC_STRUCT(trace_shader);

   tr_shdr->state = result;
   tr_shdr->type = type;
   tr_shdr->tokens = tgsi_dup_tokens(state->tokens);

   /* works on context as well */
   trace_screen_add_to_list(tr_ctx, shaders, tr_shdr);

   return tr_shdr;
}
コード例 #5
0
ファイル: tr_context.c プロジェクト: CPFDSoftware-Tony/gmv
struct pipe_context *
trace_context_create(struct trace_screen *tr_scr,
                     struct pipe_context *pipe)
{
   struct trace_context *tr_ctx;

   if(!pipe)
      goto error1;

   if(!trace_enabled())
      goto error1;

   tr_ctx = CALLOC_STRUCT(trace_context);
   if(!tr_ctx)
      goto error1;

   tr_ctx->base.winsys = NULL;
   tr_ctx->base.priv = pipe->priv; /* expose wrapped priv data */
   tr_ctx->base.screen = &tr_scr->base;
   tr_ctx->draw_blocker = debug_get_flags_option("RBUG_BLOCK",
                                                 rbug_blocker_flags,
                                                 0);
   pipe_mutex_init(tr_ctx->draw_mutex);
   pipe_condvar_init(tr_ctx->draw_cond);
   pipe_mutex_init(tr_ctx->list_mutex);
   make_empty_list(&tr_ctx->shaders);

   tr_ctx->base.destroy = trace_context_destroy;
   tr_ctx->base.draw_arrays = trace_context_draw_arrays;
   tr_ctx->base.draw_elements = trace_context_draw_elements;
   tr_ctx->base.draw_range_elements = trace_context_draw_range_elements;
   tr_ctx->base.create_query = trace_context_create_query;
   tr_ctx->base.destroy_query = trace_context_destroy_query;
   tr_ctx->base.begin_query = trace_context_begin_query;
   tr_ctx->base.end_query = trace_context_end_query;
   tr_ctx->base.get_query_result = trace_context_get_query_result;
   tr_ctx->base.create_blend_state = trace_context_create_blend_state;
   tr_ctx->base.bind_blend_state = trace_context_bind_blend_state;
   tr_ctx->base.delete_blend_state = trace_context_delete_blend_state;
   tr_ctx->base.create_sampler_state = trace_context_create_sampler_state;
   tr_ctx->base.bind_fragment_sampler_states = trace_context_bind_fragment_sampler_states;
   tr_ctx->base.bind_vertex_sampler_states = trace_context_bind_vertex_sampler_states;
   tr_ctx->base.delete_sampler_state = trace_context_delete_sampler_state;
   tr_ctx->base.create_rasterizer_state = trace_context_create_rasterizer_state;
   tr_ctx->base.bind_rasterizer_state = trace_context_bind_rasterizer_state;
   tr_ctx->base.delete_rasterizer_state = trace_context_delete_rasterizer_state;
   tr_ctx->base.create_depth_stencil_alpha_state = trace_context_create_depth_stencil_alpha_state;
   tr_ctx->base.bind_depth_stencil_alpha_state = trace_context_bind_depth_stencil_alpha_state;
   tr_ctx->base.delete_depth_stencil_alpha_state = trace_context_delete_depth_stencil_alpha_state;
   tr_ctx->base.create_fs_state = trace_context_create_fs_state;
   tr_ctx->base.bind_fs_state = trace_context_bind_fs_state;
   tr_ctx->base.delete_fs_state = trace_context_delete_fs_state;
   tr_ctx->base.create_vs_state = trace_context_create_vs_state;
   tr_ctx->base.bind_vs_state = trace_context_bind_vs_state;
   tr_ctx->base.delete_vs_state = trace_context_delete_vs_state;
   tr_ctx->base.set_blend_color = trace_context_set_blend_color;
   tr_ctx->base.set_stencil_ref = trace_context_set_stencil_ref;
   tr_ctx->base.set_clip_state = trace_context_set_clip_state;
   tr_ctx->base.set_constant_buffer = trace_context_set_constant_buffer;
   tr_ctx->base.set_framebuffer_state = trace_context_set_framebuffer_state;
   tr_ctx->base.set_polygon_stipple = trace_context_set_polygon_stipple;
   tr_ctx->base.set_scissor_state = trace_context_set_scissor_state;
   tr_ctx->base.set_viewport_state = trace_context_set_viewport_state;
   tr_ctx->base.set_fragment_sampler_textures = trace_context_set_fragment_sampler_textures;
   tr_ctx->base.set_vertex_sampler_textures = trace_context_set_vertex_sampler_textures;
   tr_ctx->base.set_vertex_buffers = trace_context_set_vertex_buffers;
   tr_ctx->base.set_vertex_elements = trace_context_set_vertex_elements;
   if (pipe->surface_copy)
      tr_ctx->base.surface_copy = trace_context_surface_copy;
   if (pipe->surface_fill)
      tr_ctx->base.surface_fill = trace_context_surface_fill;
   tr_ctx->base.clear = trace_context_clear;
   tr_ctx->base.flush = trace_context_flush;
   tr_ctx->base.is_texture_referenced = trace_is_texture_referenced;
   tr_ctx->base.is_buffer_referenced = trace_is_buffer_referenced;

   tr_ctx->pipe = pipe;

   trace_screen_add_to_list(tr_scr, contexts, tr_ctx);

   return &tr_ctx->base;

error1:
   return pipe;
}