1/************************************************************************** 2 * 3 * Copyright 2009 VMware, Inc. 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 VMWARE 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 GLHD_OBJECTS_H 29#define GLHD_OBJECTS_H 30 31 32#include "pipe/p_compiler.h" 33#include "pipe/p_state.h" 34 35#include "glhd_screen.h" 36 37struct galahad_context; 38 39 40struct galahad_resource 41{ 42 struct pipe_resource base; 43 44 struct pipe_resource *resource; 45 46 int map_count; 47}; 48 49 50struct galahad_sampler_view 51{ 52 struct pipe_sampler_view base; 53 54 struct pipe_sampler_view *sampler_view; 55}; 56 57 58struct galahad_surface 59{ 60 struct pipe_surface base; 61 62 struct pipe_surface *surface; 63}; 64 65 66struct galahad_transfer 67{ 68 struct pipe_transfer base; 69 70 struct pipe_transfer *transfer; 71}; 72 73 74static INLINE struct galahad_resource * 75galahad_resource(struct pipe_resource *_resource) 76{ 77 if(!_resource) 78 return NULL; 79 (void)galahad_screen(_resource->screen); 80 return (struct galahad_resource *)_resource; 81} 82 83static INLINE struct galahad_sampler_view * 84galahad_sampler_view(struct pipe_sampler_view *_sampler_view) 85{ 86 if (!_sampler_view) { 87 return NULL; 88 } 89 return (struct galahad_sampler_view *)_sampler_view; 90} 91 92static INLINE struct galahad_surface * 93galahad_surface(struct pipe_surface *_surface) 94{ 95 if(!_surface) 96 return NULL; 97 (void)galahad_resource(_surface->texture); 98 return (struct galahad_surface *)_surface; 99} 100 101static INLINE struct galahad_transfer * 102galahad_transfer(struct pipe_transfer *_transfer) 103{ 104 if(!_transfer) 105 return NULL; 106 (void)galahad_resource(_transfer->resource); 107 return (struct galahad_transfer *)_transfer; 108} 109 110static INLINE struct pipe_resource * 111galahad_resource_unwrap(struct pipe_resource *_resource) 112{ 113 if(!_resource) 114 return NULL; 115 return galahad_resource(_resource)->resource; 116} 117 118static INLINE struct pipe_sampler_view * 119galahad_sampler_view_unwrap(struct pipe_sampler_view *_sampler_view) 120{ 121 if (!_sampler_view) { 122 return NULL; 123 } 124 return galahad_sampler_view(_sampler_view)->sampler_view; 125} 126 127static INLINE struct pipe_surface * 128galahad_surface_unwrap(struct pipe_surface *_surface) 129{ 130 if(!_surface) 131 return NULL; 132 return galahad_surface(_surface)->surface; 133} 134 135static INLINE struct pipe_transfer * 136galahad_transfer_unwrap(struct pipe_transfer *_transfer) 137{ 138 if(!_transfer) 139 return NULL; 140 return galahad_transfer(_transfer)->transfer; 141} 142 143 144struct pipe_resource * 145galahad_resource_create(struct galahad_screen *glhd_screen, 146 struct pipe_resource *resource); 147 148void 149galahad_resource_destroy(struct galahad_resource *glhd_resource); 150 151struct pipe_surface * 152galahad_surface_create(struct galahad_context *glhd_context, 153 struct galahad_resource *glhd_resource, 154 struct pipe_surface *surface); 155 156void 157galahad_surface_destroy(struct galahad_context *glhd_context, 158 struct galahad_surface *glhd_surface); 159 160struct pipe_sampler_view * 161galahad_sampler_view_create(struct galahad_context *glhd_context, 162 struct galahad_resource *glhd_resource, 163 struct pipe_sampler_view *view); 164 165void 166galahad_sampler_view_destroy(struct galahad_context *glhd_context, 167 struct galahad_sampler_view *glhd_sampler_view); 168 169struct pipe_transfer * 170galahad_transfer_create(struct galahad_context *glhd_context, 171 struct galahad_resource *glhd_resource, 172 struct pipe_transfer *transfer); 173 174void 175galahad_transfer_destroy(struct galahad_context *glhd_context, 176 struct galahad_transfer *glhd_transfer); 177 178 179#endif /* GLHD_OBJECTS_H */ 180