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