Home | History | Annotate | Download | only in trace
      1 /**************************************************************************
      2  *
      3  * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
      4  * All Rights Reserved.
      5  *
      6  * Permission is hereby granted, free of charge, to any person obtaining a
      7  * copy of this software and associated documentation files (the
      8  * "Software"), to deal in the Software without restriction, including
      9  * without limitation the rights to use, copy, modify, merge, publish,
     10  * distribute, sub license, and/or sell copies of the Software, and to
     11  * permit persons to whom the Software is furnished to do so, subject to
     12  * the following conditions:
     13  *
     14  * The above copyright notice and this permission notice (including the
     15  * next paragraph) shall be included in all copies or substantial portions
     16  * of the Software.
     17  *
     18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     19  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     20  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
     21  * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
     22  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
     23  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
     24  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     25  *
     26  **************************************************************************/
     27 
     28 #ifndef TR_TEXTURE_H_
     29 #define TR_TEXTURE_H_
     30 
     31 
     32 #include "pipe/p_compiler.h"
     33 #include "pipe/p_state.h"
     34 
     35 #include "tr_screen.h"
     36 
     37 struct trace_context;
     38 
     39 struct trace_resource
     40 {
     41    struct pipe_resource base;
     42 
     43    struct pipe_resource *resource;
     44 
     45    struct tr_list list;
     46 };
     47 
     48 
     49 struct trace_surface
     50 {
     51    struct pipe_surface base;
     52 
     53    struct pipe_surface *surface;
     54 
     55    struct tr_list list;
     56 };
     57 
     58 
     59 struct trace_sampler_view
     60 {
     61    struct pipe_sampler_view base;
     62 
     63    struct pipe_sampler_view *sampler_view;
     64 };
     65 
     66 
     67 struct trace_transfer
     68 {
     69    struct pipe_transfer base;
     70 
     71    struct pipe_transfer *transfer;
     72    struct pipe_context *pipe;
     73 
     74    struct tr_list list;
     75 
     76    void *map;
     77 };
     78 
     79 
     80 static INLINE struct trace_resource *
     81 trace_resource(struct pipe_resource *texture)
     82 {
     83    if(!texture)
     84       return NULL;
     85    (void)trace_screen(texture->screen);
     86    return (struct trace_resource *)texture;
     87 }
     88 
     89 
     90 static INLINE struct trace_surface *
     91 trace_surface(struct pipe_surface *surface)
     92 {
     93    if(!surface)
     94       return NULL;
     95    (void)trace_resource(surface->texture);
     96    return (struct trace_surface *)surface;
     97 }
     98 
     99 
    100 static INLINE struct trace_sampler_view *
    101 trace_sampler_view(struct pipe_sampler_view *sampler_view)
    102 {
    103    if (!sampler_view)
    104       return NULL;
    105    return (struct trace_sampler_view *)sampler_view;
    106 }
    107 
    108 
    109 static INLINE struct trace_transfer *
    110 trace_transfer(struct pipe_transfer *transfer)
    111 {
    112    if(!transfer)
    113       return NULL;
    114    (void)trace_resource(transfer->resource);
    115    return (struct trace_transfer *)transfer;
    116 }
    117 
    118 
    119 struct pipe_resource *
    120 trace_resource_create(struct trace_screen *tr_scr,
    121                      struct pipe_resource *texture);
    122 
    123 void
    124 trace_resource_destroy(struct trace_screen *tr_scr,
    125 		       struct trace_resource *tr_res);
    126 
    127 struct pipe_surface *
    128 trace_surf_create(struct trace_resource *tr_res,
    129                      struct pipe_surface *surface);
    130 
    131 void
    132 trace_surf_destroy(struct trace_surface *tr_surf);
    133 
    134 struct pipe_transfer *
    135 trace_transfer_create(struct trace_context *tr_ctx,
    136 		      struct trace_resource *tr_res,
    137 		      struct pipe_transfer *transfer);
    138 
    139 void
    140 trace_transfer_destroy(struct trace_context *tr_ctx,
    141                        struct trace_transfer *tr_trans);
    142 
    143 
    144 #endif /* TR_TEXTURE_H_ */
    145