Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 serge 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