1f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca/**************************************************************************
2f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca *
3f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
4f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * All Rights Reserved.
5f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca *
6f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * Permission is hereby granted, free of charge, to any person obtaining a
7f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * copy of this software and associated documentation files (the
8f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * "Software"), to deal in the Software without restriction, including
9f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * without limitation the rights to use, copy, modify, merge, publish,
10f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * distribute, sub license, and/or sell copies of the Software, and to
11f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * permit persons to whom the Software is furnished to do so, subject to
12f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * the following conditions:
13f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca *
14f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * The above copyright notice and this permission notice (including the
15f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * next paragraph) shall be included in all copies or substantial portions
16f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * of the Software.
17f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca *
18f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca *
26f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca **************************************************************************/
27f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
28f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca#ifndef TR_TEXTURE_H_
29f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca#define TR_TEXTURE_H_
30f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
31f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
32f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca#include "pipe/p_compiler.h"
33f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca#include "pipe/p_state.h"
34f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
35f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca#include "tr_screen.h"
36f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
37b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwellstruct trace_context;
38f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
39287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstruct trace_resource
40f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca{
41287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell   struct pipe_resource base;
42f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
43287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell   struct pipe_resource *resource;
4444d0e0caf4ad3b01dc08d8432867c449dc3f2a23Jakob Bornecrantz
4544d0e0caf4ad3b01dc08d8432867c449dc3f2a23Jakob Bornecrantz   struct tr_list list;
46f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca};
47f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
48f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
49f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonsecastruct trace_surface
50f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca{
51f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca   struct pipe_surface base;
52f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
53f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca   struct pipe_surface *surface;
5444d0e0caf4ad3b01dc08d8432867c449dc3f2a23Jakob Bornecrantz
5544d0e0caf4ad3b01dc08d8432867c449dc3f2a23Jakob Bornecrantz   struct tr_list list;
56c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer};
57c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer
58c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer
59f6106566081978f663cf08e54bb8908cb58a5316Michal Krolstruct trace_sampler_view
60f6106566081978f663cf08e54bb8908cb58a5316Michal Krol{
61f6106566081978f663cf08e54bb8908cb58a5316Michal Krol   struct pipe_sampler_view base;
62f6106566081978f663cf08e54bb8908cb58a5316Michal Krol
63f6106566081978f663cf08e54bb8908cb58a5316Michal Krol   struct pipe_sampler_view *sampler_view;
64f6106566081978f663cf08e54bb8908cb58a5316Michal Krol};
65f6106566081978f663cf08e54bb8908cb58a5316Michal Krol
66f6106566081978f663cf08e54bb8908cb58a5316Michal Krol
67c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzerstruct trace_transfer
68c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer{
69c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer   struct pipe_transfer base;
70c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer
71c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer   struct pipe_transfer *transfer;
72d35ecca5ee231c072687578642e0c22c6c0590b1Keith Whitwell   struct pipe_context *pipe;
73422512050312a880439ed4e8eb99b8e362d5071fJakob Bornecrantz
7444d0e0caf4ad3b01dc08d8432867c449dc3f2a23Jakob Bornecrantz   struct tr_list list;
7544d0e0caf4ad3b01dc08d8432867c449dc3f2a23Jakob Bornecrantz
76f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca   void *map;
77f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca};
78f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
79f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
80287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstatic INLINE struct trace_resource *
81287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwelltrace_resource(struct pipe_resource *texture)
82f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca{
83f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca   if(!texture)
84f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca      return NULL;
85927eb8fe4cc8a5ed583aad1dafa98d091d7602f4José Fonseca   (void)trace_screen(texture->screen);
86287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell   return (struct trace_resource *)texture;
87f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca}
88f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
89f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
90f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonsecastatic INLINE struct trace_surface *
91927eb8fe4cc8a5ed583aad1dafa98d091d7602f4José Fonsecatrace_surface(struct pipe_surface *surface)
92f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca{
93f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca   if(!surface)
94f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca      return NULL;
95287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell   (void)trace_resource(surface->texture);
96f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca   return (struct trace_surface *)surface;
97f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca}
98f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
99f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
100f6106566081978f663cf08e54bb8908cb58a5316Michal Krolstatic INLINE struct trace_sampler_view *
101f6106566081978f663cf08e54bb8908cb58a5316Michal Kroltrace_sampler_view(struct pipe_sampler_view *sampler_view)
102f6106566081978f663cf08e54bb8908cb58a5316Michal Krol{
103f6106566081978f663cf08e54bb8908cb58a5316Michal Krol   if (!sampler_view)
104f6106566081978f663cf08e54bb8908cb58a5316Michal Krol      return NULL;
105f6106566081978f663cf08e54bb8908cb58a5316Michal Krol   return (struct trace_sampler_view *)sampler_view;
106f6106566081978f663cf08e54bb8908cb58a5316Michal Krol}
107f6106566081978f663cf08e54bb8908cb58a5316Michal Krol
108f6106566081978f663cf08e54bb8908cb58a5316Michal Krol
109c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzerstatic INLINE struct trace_transfer *
110927eb8fe4cc8a5ed583aad1dafa98d091d7602f4José Fonsecatrace_transfer(struct pipe_transfer *transfer)
111c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer{
112c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer   if(!transfer)
113c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer      return NULL;
114287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell   (void)trace_resource(transfer->resource);
115c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer   return (struct trace_transfer *)transfer;
116c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer}
117c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer
118c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer
119287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstruct pipe_resource *
120287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwelltrace_resource_create(struct trace_screen *tr_scr,
121287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell                     struct pipe_resource *texture);
122f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
123f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonsecavoid
124287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwelltrace_resource_destroy(struct trace_screen *tr_scr,
125c0f6bfd489091da20ad9580d8ac6aeb187ededfdJosé Fonseca		       struct trace_resource *tr_res);
126f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
127f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonsecastruct pipe_surface *
128c0f6bfd489091da20ad9580d8ac6aeb187ededfdJosé Fonsecatrace_surf_create(struct trace_resource *tr_res,
129f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca                     struct pipe_surface *surface);
130f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
131f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonsecavoid
1324c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheideggertrace_surf_destroy(struct trace_surface *tr_surf);
133f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
134c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzerstruct pipe_transfer *
135b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwelltrace_transfer_create(struct trace_context *tr_ctx,
136c0f6bfd489091da20ad9580d8ac6aeb187ededfdJosé Fonseca		      struct trace_resource *tr_res,
137b43c182f19c6291c88420fa12714f952c2b461fbKeith Whitwell		      struct pipe_transfer *transfer);
138c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer
139c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzervoid
140d35ecca5ee231c072687578642e0c22c6c0590b1Keith Whitwelltrace_transfer_destroy(struct trace_context *tr_ctx,
141d35ecca5ee231c072687578642e0c22c6c0590b1Keith Whitwell                       struct trace_transfer *tr_trans);
142c738edcc68905fb251cf9edc0529e2e1c778fdeeMichel Dänzer
143f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca
144f40de50def1b7ee75dd320b151c025b7ddff45beJosé Fonseca#endif /* TR_TEXTURE_H_ */
145