Subversion Repositories Kolibri OS

Rev

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

  1. /*
  2.  * Copyright 2010 Marek Olšák <maraeo@gmail.com
  3.  *
  4.  * Permission is hereby granted, free of charge, to any person obtaining a
  5.  * copy of this software and associated documentation files (the "Software"),
  6.  * to deal in the Software without restriction, including without limitation
  7.  * on the rights to use, copy, modify, merge, publish, distribute, sub
  8.  * license, and/or sell copies of the Software, and to permit persons to whom
  9.  * the Software is furnished to do so, subject to the following conditions:
  10.  *
  11.  * The above copyright notice and this permission notice (including the next
  12.  * paragraph) shall be included in all copies or substantial portions of the
  13.  * Software.
  14.  *
  15.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17.  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
  18.  * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
  19.  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  20.  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  21.  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  22.  */
  23. #ifndef R600_RESOURCE_H
  24. #define R600_RESOURCE_H
  25.  
  26. #include "util/u_transfer.h"
  27.  
  28. /* flag to indicate a resource is to be used as a transfer so should not be tiled */
  29. #define R600_RESOURCE_FLAG_TRANSFER             PIPE_RESOURCE_FLAG_DRV_PRIV
  30. #define R600_RESOURCE_FLAG_FLUSHED_DEPTH        (PIPE_RESOURCE_FLAG_DRV_PRIV << 1)
  31.  
  32. /* Texture transfer. */
  33. struct r600_transfer {
  34.         /* Base class. */
  35.         struct pipe_transfer            transfer;
  36.         /* Buffer transfer. */
  37.         struct pipe_transfer            *buffer_transfer;
  38.         unsigned                        offset;
  39.         struct pipe_resource            *staging;
  40. };
  41.  
  42. struct r600_resource_texture {
  43.         struct si_resource              resource;
  44.  
  45.         /* If this resource is a depth-stencil buffer on evergreen, this contains
  46.          * the depth part of the format. There is a separate stencil resource
  47.          * for the stencil buffer below. */
  48.         enum pipe_format                real_format;
  49.  
  50.         unsigned                        pitch_override;
  51.         unsigned                        is_depth;
  52.         unsigned                        dirty_db_mask; /* each bit says if that miplevel is dirty */
  53.         struct r600_resource_texture    *flushed_depth_texture;
  54.         boolean                         is_flushing_texture;
  55.         struct radeon_surface           surface;
  56. };
  57.  
  58. struct r600_surface {
  59.         struct pipe_surface             base;
  60. };
  61.  
  62. void r600_init_screen_resource_functions(struct pipe_screen *screen);
  63.  
  64. /* r600_texture */
  65. struct pipe_resource *si_texture_create(struct pipe_screen *screen,
  66.                                         const struct pipe_resource *templ);
  67. struct pipe_resource *si_texture_from_handle(struct pipe_screen *screen,
  68.                                              const struct pipe_resource *base,
  69.                                              struct winsys_handle *whandle);
  70.  
  71. bool r600_init_flushed_depth_texture(struct pipe_context *ctx,
  72.                                      struct pipe_resource *texture,
  73.                                      struct r600_resource_texture **staging);
  74.  
  75.  
  76. struct r600_context;
  77.  
  78. void r600_upload_const_buffer(struct r600_context *rctx, struct si_resource **rbuffer,
  79.                               const uint8_t *ptr, unsigned size,
  80.                               uint32_t *const_offset);
  81.  
  82. #endif
  83.