Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Mesa 3-D graphics library
  3.  *
  4.  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
  5.  * Copyright (c) 2008 VMware, Inc.
  6.  *
  7.  * Permission is hereby granted, free of charge, to any person obtaining a
  8.  * copy of this software and associated documentation files (the "Software"),
  9.  * to deal in the Software without restriction, including without limitation
  10.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  11.  * and/or sell copies of the Software, and to permit persons to whom the
  12.  * Software is furnished to do so, subject to the following conditions:
  13.  *
  14.  * The above copyright notice and this permission notice shall be included
  15.  * in all copies or substantial portions of the Software.
  16.  *
  17.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  18.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  19.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  20.  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
  21.  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  22.  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  23.  * OTHER DEALINGS IN THE SOFTWARE.
  24.  */
  25.  
  26.  
  27. /**
  28.  * \file texstore.h
  29.  * Texture image storage routines.
  30.  *
  31.  * \author Brian Paul
  32.  */
  33.  
  34.  
  35. #ifndef TEXSTORE_H
  36. #define TEXSTORE_H
  37.  
  38.  
  39. #include "mtypes.h"
  40. #include "formats.h"
  41.  
  42.  
  43. /**
  44.  * This macro defines the (many) parameters to the texstore functions.
  45.  * \param dims  either 1 or 2 or 3
  46.  * \param baseInternalFormat  user-specified base internal format
  47.  * \param dstFormat  destination Mesa texture format
  48.  * \param dstX/Y/Zoffset  destination x/y/z offset (ala TexSubImage), in texels
  49.  * \param dstRowStride  destination image row stride, in bytes
  50.  * \param dstSlices  array of addresses of image slices (for 3D, array texture)
  51.  * \param srcWidth/Height/Depth  source image size, in pixels
  52.  * \param srcFormat  incoming image format
  53.  * \param srcType  incoming image data type
  54.  * \param srcAddr  source image address
  55.  * \param srcPacking  source image packing parameters
  56.  */
  57. #define TEXSTORE_PARAMS \
  58.         struct gl_context *ctx, GLuint dims, \
  59.         GLenum baseInternalFormat, \
  60.         mesa_format dstFormat, \
  61.         GLint dstRowStride, \
  62.         GLubyte **dstSlices, \
  63.         GLint srcWidth, GLint srcHeight, GLint srcDepth, \
  64.         GLenum srcFormat, GLenum srcType, \
  65.         const GLvoid *srcAddr, \
  66.         const struct gl_pixelstore_attrib *srcPacking
  67.  
  68.  
  69. extern GLboolean
  70. _mesa_texstore(TEXSTORE_PARAMS);
  71.  
  72. extern GLboolean
  73. _mesa_texstore_needs_transfer_ops(struct gl_context *ctx,
  74.                                   GLenum baseInternalFormat,
  75.                                   mesa_format dstFormat);
  76.  
  77. extern GLboolean
  78. _mesa_texstore_can_use_memcpy(struct gl_context *ctx,
  79.                               GLenum baseInternalFormat, mesa_format dstFormat,
  80.                               GLenum srcFormat, GLenum srcType,
  81.                               const struct gl_pixelstore_attrib *srcPacking);
  82.  
  83.  
  84. extern void
  85. _mesa_store_teximage(struct gl_context *ctx,
  86.                      GLuint dims,
  87.                      struct gl_texture_image *texImage,
  88.                      GLenum format, GLenum type, const GLvoid *pixels,
  89.                      const struct gl_pixelstore_attrib *packing);
  90.  
  91.  
  92. extern void
  93. _mesa_store_texsubimage(struct gl_context *ctx, GLuint dims,
  94.                         struct gl_texture_image *texImage,
  95.                         GLint xoffset, GLint yoffset, GLint zoffset,
  96.                         GLint width, GLint height, GLint depth,
  97.                         GLenum format, GLenum type, const GLvoid *pixels,
  98.                         const struct gl_pixelstore_attrib *packing);
  99.  
  100.  
  101. extern void
  102. _mesa_store_cleartexsubimage(struct gl_context *ctx,
  103.                              struct gl_texture_image *texImage,
  104.                              GLint xoffset, GLint yoffset, GLint zoffset,
  105.                              GLsizei width, GLsizei height, GLsizei depth,
  106.                              const GLvoid *clearValue);
  107.  
  108. extern void
  109. _mesa_store_compressed_teximage(struct gl_context *ctx, GLuint dims,
  110.                                 struct gl_texture_image *texImage,
  111.                                 GLsizei imageSize, const GLvoid *data);
  112.  
  113.  
  114. extern void
  115. _mesa_store_compressed_texsubimage(struct gl_context *ctx, GLuint dims,
  116.                                    struct gl_texture_image *texImage,
  117.                                    GLint xoffset, GLint yoffset, GLint zoffset,
  118.                                    GLsizei width, GLsizei height, GLsizei depth,
  119.                                    GLenum format,
  120.                                    GLsizei imageSize, const GLvoid *data);
  121.  
  122.  
  123. struct compressed_pixelstore {
  124.    int SkipBytes;
  125.    int CopyBytesPerRow;
  126.    int CopyRowsPerSlice;
  127.    int TotalBytesPerRow;
  128.    int TotalRowsPerSlice;
  129.    int CopySlices;
  130. };
  131.  
  132.  
  133. extern void
  134. _mesa_compute_compressed_pixelstore(GLuint dims, mesa_format texFormat,
  135.                                     GLsizei width, GLsizei height,
  136.                                     GLsizei depth,
  137.                                     const struct gl_pixelstore_attrib *packing,
  138.                                     struct compressed_pixelstore *store);
  139.  
  140.  
  141. #endif
  142.