Home | History | Annotate | Download | only in galahad
      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 
     37 struct galahad_context;
     38 
     39 
     40 struct galahad_resource
     41 {
     42    struct pipe_resource base;
     43 
     44    struct pipe_resource *resource;
     45 
     46    int map_count;
     47 };
     48 
     49 
     50 struct galahad_sampler_view
     51 {
     52    struct pipe_sampler_view base;
     53 
     54    struct pipe_sampler_view *sampler_view;
     55 };
     56 
     57 
     58 struct galahad_surface
     59 {
     60    struct pipe_surface base;
     61 
     62    struct pipe_surface *surface;
     63 };
     64 
     65 
     66 struct galahad_transfer
     67 {
     68    struct pipe_transfer base;
     69 
     70    struct pipe_transfer *transfer;
     71 };
     72 
     73 
     74 static INLINE struct galahad_resource *
     75 galahad_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 
     83 static INLINE struct galahad_sampler_view *
     84 galahad_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 
     92 static INLINE struct galahad_surface *
     93 galahad_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 
    101 static INLINE struct galahad_transfer *
    102 galahad_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 
    110 static INLINE struct pipe_resource *
    111 galahad_resource_unwrap(struct pipe_resource *_resource)
    112 {
    113    if(!_resource)
    114       return NULL;
    115    return galahad_resource(_resource)->resource;
    116 }
    117 
    118 static INLINE struct pipe_sampler_view *
    119 galahad_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 
    127 static INLINE struct pipe_surface *
    128 galahad_surface_unwrap(struct pipe_surface *_surface)
    129 {
    130    if(!_surface)
    131       return NULL;
    132    return galahad_surface(_surface)->surface;
    133 }
    134 
    135 static INLINE struct pipe_transfer *
    136 galahad_transfer_unwrap(struct pipe_transfer *_transfer)
    137 {
    138    if(!_transfer)
    139       return NULL;
    140    return galahad_transfer(_transfer)->transfer;
    141 }
    142 
    143 
    144 struct pipe_resource *
    145 galahad_resource_create(struct galahad_screen *glhd_screen,
    146                          struct pipe_resource *resource);
    147 
    148 void
    149 galahad_resource_destroy(struct galahad_resource *glhd_resource);
    150 
    151 struct pipe_surface *
    152 galahad_surface_create(struct galahad_context *glhd_context,
    153                        struct galahad_resource *glhd_resource,
    154                         struct pipe_surface *surface);
    155 
    156 void
    157 galahad_surface_destroy(struct galahad_context *glhd_context,
    158                          struct galahad_surface *glhd_surface);
    159 
    160 struct pipe_sampler_view *
    161 galahad_sampler_view_create(struct galahad_context *glhd_context,
    162                              struct galahad_resource *glhd_resource,
    163                              struct pipe_sampler_view *view);
    164 
    165 void
    166 galahad_sampler_view_destroy(struct galahad_context *glhd_context,
    167                               struct galahad_sampler_view *glhd_sampler_view);
    168 
    169 struct pipe_transfer *
    170 galahad_transfer_create(struct galahad_context *glhd_context,
    171                          struct galahad_resource *glhd_resource,
    172                          struct pipe_transfer *transfer);
    173 
    174 void
    175 galahad_transfer_destroy(struct galahad_context *glhd_context,
    176                           struct galahad_transfer *glhd_transfer);
    177 
    178 
    179 #endif /* GLHD_OBJECTS_H */
    180