12c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz/**************************************************************************
22c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz *
32c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * Copyright 2010 VMware, Inc.
42c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * All Rights Reserved.
52c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz *
62c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * Permission is hereby granted, free of charge, to any person obtaining a
72c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * copy of this software and associated documentation files (the
82c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * "Software"), to deal in the Software without restriction, including
92c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * without limitation the rights to use, copy, modify, merge, publish,
102c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * distribute, sub license, and/or sell copies of the Software, and to
112c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * permit persons to whom the Software is furnished to do so, subject to
122c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * the following conditions:
132c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz *
142c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * The above copyright notice and this permission notice (including the
152c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * next paragraph) shall be included in all copies or substantial portions
162c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * of the Software.
172c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz *
182c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
192c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
202c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
212c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
222c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
232c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
242c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
252c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz *
262c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz **************************************************************************/
272c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
282c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz#ifndef RBUG_OBJECTS_H
292c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz#define RBUG_OBJECTS_H
302c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
312c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
322c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz#include "pipe/p_compiler.h"
332c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz#include "pipe/p_state.h"
342c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
352c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz#include "rbug_screen.h"
362c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
372c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstruct rbug_context;
382c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
392c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
402c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstruct rbug_resource
412c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
422c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct pipe_resource base;
432c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
442c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct pipe_resource *resource;
452c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
462c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct rbug_list list;
472c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz};
482c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
492c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
5021b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantzenum rbug_shader_type
5121b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz{
5221b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz   RBUG_SHADER_GEOM,
5321b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz   RBUG_SHADER_VERTEX,
5421b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz   RBUG_SHADER_FRAGMENT,
5521b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz};
5621b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz
572c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstruct rbug_shader
582c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
592c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct rbug_list list;
602c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
612c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   void *shader;
622c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   void *tokens;
632c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   void *replaced_shader;
642c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   void *replaced_tokens;
652c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
6621b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz   enum rbug_shader_type type;
672c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   boolean disabled;
682c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz};
692c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
702c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
712c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstruct rbug_sampler_view
722c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
732c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct pipe_sampler_view base;
742c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
752c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct pipe_sampler_view *sampler_view;
762c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz};
772c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
782c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
792c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstruct rbug_surface
802c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
812c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct pipe_surface base;
822c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
832c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct pipe_surface *surface;
842c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz};
852c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
862c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
872c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstruct rbug_transfer
882c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
892c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct pipe_transfer base;
902c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
912c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct pipe_context *pipe;
922c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct pipe_transfer *transfer;
932c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz};
942c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
952c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
962c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstatic INLINE struct rbug_resource *
972c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_resource(struct pipe_resource *_resource)
982c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
992c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   if (!_resource)
1002c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz      return NULL;
1012c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   (void)rbug_screen(_resource->screen);
1022c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   return (struct rbug_resource *)_resource;
1032c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz}
1042c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1052c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstatic INLINE struct rbug_sampler_view *
1062c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_sampler_view(struct pipe_sampler_view *_sampler_view)
1072c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
1082c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   if (!_sampler_view)
1092c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz      return NULL;
1102c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   (void)rbug_resource(_sampler_view->texture);
1112c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   return (struct rbug_sampler_view *)_sampler_view;
1122c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz}
1132c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1142c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstatic INLINE struct rbug_surface *
1152c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_surface(struct pipe_surface *_surface)
1162c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
1172c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   if (!_surface)
1182c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz      return NULL;
1192c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   (void)rbug_resource(_surface->texture);
1202c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   return (struct rbug_surface *)_surface;
1212c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz}
1222c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1232c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstatic INLINE struct rbug_transfer *
1242c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_transfer(struct pipe_transfer *_transfer)
1252c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
1262c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   if (!_transfer)
1272c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz      return NULL;
1282c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   (void)rbug_resource(_transfer->resource);
1292c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   return (struct rbug_transfer *)_transfer;
1302c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz}
1312c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1322c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstatic INLINE struct rbug_shader *
1332c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_shader(void *_state)
1342c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
1352c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   if (!_state)
1362c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz      return NULL;
1372c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   return (struct rbug_shader *)_state;
1382c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz}
1392c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1402c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstatic INLINE struct pipe_resource *
1412c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_resource_unwrap(struct pipe_resource *_resource)
1422c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
1432c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   if (!_resource)
1442c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz      return NULL;
1452c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   return rbug_resource(_resource)->resource;
1462c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz}
1472c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1482c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstatic INLINE struct pipe_sampler_view *
1492c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_sampler_view_unwrap(struct pipe_sampler_view *_sampler_view)
1502c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
1512c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   if (!_sampler_view)
1522c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz      return NULL;
1532c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   return rbug_sampler_view(_sampler_view)->sampler_view;
1542c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz}
1552c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1562c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstatic INLINE struct pipe_surface *
1572c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_surface_unwrap(struct pipe_surface *_surface)
1582c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
1592c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   if (!_surface)
1602c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz      return NULL;
1612c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   return rbug_surface(_surface)->surface;
1622c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz}
1632c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1642c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstatic INLINE struct pipe_transfer *
1652c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_transfer_unwrap(struct pipe_transfer *_transfer)
1662c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
1672c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   if (!_transfer)
1682c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz      return NULL;
1692c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   return rbug_transfer(_transfer)->transfer;
1702c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz}
1712c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1722c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstatic INLINE void *
1732c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_shader_unwrap(void *_state)
1742c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz{
1752c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   struct rbug_shader *shader;
1762c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   if (!_state)
1772c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz      return NULL;
1782c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1792c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   shader = rbug_shader(_state);
1802c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz   return shader->replaced_shader ? shader->replaced_shader : shader->shader;
1812c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz}
1822c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1832c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1842c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstruct pipe_resource *
1852c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_resource_create(struct rbug_screen *rb_screen,
1862c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz                     struct pipe_resource *resource);
1872c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1882c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzvoid
1892c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_resource_destroy(struct rbug_resource *rb_resource);
1902c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1912c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstruct pipe_surface *
1924c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheideggerrbug_surface_create(struct rbug_context *rb_context,
1934c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger                    struct rbug_resource *rb_resource,
1942c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz                    struct pipe_surface *surface);
1952c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
1962c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzvoid
1974c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheideggerrbug_surface_destroy(struct rbug_context *rb_context,
1984c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger                     struct rbug_surface *rb_surface);
1992c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
2002c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstruct pipe_sampler_view *
2012c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_sampler_view_create(struct rbug_context *rb_context,
2022c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz                         struct rbug_resource *rb_resource,
2032c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz                         struct pipe_sampler_view *view);
2042c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
2052c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzvoid
2062c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_sampler_view_destroy(struct rbug_context *rb_context,
2072c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz                          struct rbug_sampler_view *rb_sampler_view);
2082c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
2092c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzstruct pipe_transfer *
2102c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_transfer_create(struct rbug_context *rb_context,
2112c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz                     struct rbug_resource *rb_resource,
2122c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz                     struct pipe_transfer *transfer);
2132c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
2142c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzvoid
2152c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantzrbug_transfer_destroy(struct rbug_context *rb_context,
2162c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz                      struct rbug_transfer *rb_transfer);
2172c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
21821b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantzvoid *
21921b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantzrbug_shader_create(struct rbug_context *rb_context,
22021b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz                   const struct pipe_shader_state *state,
22121b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz                   void *result, enum rbug_shader_type type);
22221b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz
22321b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantzvoid
22421b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantzrbug_shader_destroy(struct rbug_context *rb_context,
22521b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz                    struct rbug_shader *rb_shader);
22621b668e11e3e0e84d476fea9b8d3198a610d71c8Jakob Bornecrantz
2272c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz
2282c3fb4ecce27f4c2468892241216a06fc77143c4Jakob Bornecrantz#endif /* RBUG_OBJECTS_H */
229