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 ID_OBJECTS_H
  29. #define ID_OBJECTS_H
  30.  
  31.  
  32. #include "pipe/p_compiler.h"
  33. #include "pipe/p_state.h"
  34.  
  35. #include "id_screen.h"
  36.  
  37. struct identity_context;
  38.  
  39.  
  40. struct identity_resource
  41. {
  42.    struct pipe_resource base;
  43.  
  44.    struct pipe_resource *resource;
  45. };
  46.  
  47.  
  48. struct identity_sampler_view
  49. {
  50.    struct pipe_sampler_view base;
  51.  
  52.    struct pipe_sampler_view *sampler_view;
  53. };
  54.  
  55.  
  56. struct identity_surface
  57. {
  58.    struct pipe_surface base;
  59.  
  60.    struct pipe_surface *surface;
  61. };
  62.  
  63.  
  64. struct identity_transfer
  65. {
  66.    struct pipe_transfer base;
  67.  
  68.    struct pipe_transfer *transfer;
  69. };
  70.  
  71.  
  72. static INLINE struct identity_resource *
  73. identity_resource(struct pipe_resource *_resource)
  74. {
  75.    if(!_resource)
  76.       return NULL;
  77.    (void)identity_screen(_resource->screen);
  78.    return (struct identity_resource *)_resource;
  79. }
  80.  
  81. static INLINE struct identity_sampler_view *
  82. identity_sampler_view(struct pipe_sampler_view *_sampler_view)
  83. {
  84.    if (!_sampler_view) {
  85.       return NULL;
  86.    }
  87.    return (struct identity_sampler_view *)_sampler_view;
  88. }
  89.  
  90. static INLINE struct identity_surface *
  91. identity_surface(struct pipe_surface *_surface)
  92. {
  93.    if(!_surface)
  94.       return NULL;
  95.    (void)identity_resource(_surface->texture);
  96.    return (struct identity_surface *)_surface;
  97. }
  98.  
  99. static INLINE struct identity_transfer *
  100. identity_transfer(struct pipe_transfer *_transfer)
  101. {
  102.    if(!_transfer)
  103.       return NULL;
  104.    (void)identity_resource(_transfer->resource);
  105.    return (struct identity_transfer *)_transfer;
  106. }
  107.  
  108. static INLINE struct pipe_resource *
  109. identity_resource_unwrap(struct pipe_resource *_resource)
  110. {
  111.    if(!_resource)
  112.       return NULL;
  113.    return identity_resource(_resource)->resource;
  114. }
  115.  
  116. static INLINE struct pipe_sampler_view *
  117. identity_sampler_view_unwrap(struct pipe_sampler_view *_sampler_view)
  118. {
  119.    if (!_sampler_view) {
  120.       return NULL;
  121.    }
  122.    return identity_sampler_view(_sampler_view)->sampler_view;
  123. }
  124.  
  125. static INLINE struct pipe_surface *
  126. identity_surface_unwrap(struct pipe_surface *_surface)
  127. {
  128.    if(!_surface)
  129.       return NULL;
  130.    return identity_surface(_surface)->surface;
  131. }
  132.  
  133. static INLINE struct pipe_transfer *
  134. identity_transfer_unwrap(struct pipe_transfer *_transfer)
  135. {
  136.    if(!_transfer)
  137.       return NULL;
  138.    return identity_transfer(_transfer)->transfer;
  139. }
  140.  
  141.  
  142. struct pipe_resource *
  143. identity_resource_create(struct identity_screen *id_screen,
  144.                          struct pipe_resource *resource);
  145.  
  146. void
  147. identity_resource_destroy(struct identity_resource *id_resource);
  148.  
  149. struct pipe_surface *
  150. identity_surface_create(struct identity_context *id_context,
  151.                         struct identity_resource *id_resource,
  152.                         struct pipe_surface *surface);
  153.  
  154. void
  155. identity_surface_destroy(struct identity_context *id_context,
  156.                          struct identity_surface *id_surface);
  157.  
  158. struct pipe_sampler_view *
  159. identity_sampler_view_create(struct identity_context *id_context,
  160.                              struct identity_resource *id_resource,
  161.                              struct pipe_sampler_view *view);
  162.  
  163. void
  164. identity_sampler_view_destroy(struct identity_context *id_context,
  165.                               struct identity_sampler_view *id_sampler_view);
  166.  
  167. struct pipe_transfer *
  168. identity_transfer_map(struct identity_context *id_context,
  169.                          struct identity_resource *id_resource,
  170.                          struct pipe_transfer *transfer);
  171.  
  172. void
  173. identity_transfer_destroy(struct identity_context *id_context,
  174.                           struct identity_transfer *id_transfer);
  175.  
  176.  
  177. #endif /* ID_OBJECTS_H */
  178.