Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  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.