mesa: Add the remaining from/to types for GL_EXT_texture_integer (and R/RG).
[profile/ivi/mesa.git] / src / mesa / main / pack_tmp.h
1 /*
2  * Copyright © 2012 Intel Corporation
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  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * 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 NONINFRINGEMENT.  IN NO EVENT SHALL
18  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21  * IN THE SOFTWARE.
22  */
23
24 static void
25 FN_NAME(DST_TYPE *dst,
26         GLenum dstFormat,
27         SRC_TYPE rgba[][4],
28         int n)
29 {
30    int i;
31
32    switch (dstFormat) {
33    case GL_RED_INTEGER_EXT:
34       for (i=0;i<n;i++) {
35          dst[i] = SRC_CONVERT(rgba[i][RCOMP]);
36       }
37       break;
38
39    case GL_GREEN_INTEGER_EXT:
40       for (i=0;i<n;i++) {
41          dst[i] = SRC_CONVERT(rgba[i][GCOMP]);
42       }
43       break;
44
45    case GL_BLUE_INTEGER_EXT:
46       for (i=0;i<n;i++) {
47          dst[i] = SRC_CONVERT(rgba[i][BCOMP]);
48       };
49       break;
50
51    case GL_ALPHA_INTEGER_EXT:
52       for (i=0;i<n;i++) {
53          dst[i] = SRC_CONVERT(rgba[i][ACOMP]);
54       }
55       break;
56
57    case GL_RG_INTEGER:
58       for (i=0;i<n;i++) {
59          dst[i*2+0] = SRC_CONVERT(rgba[i][RCOMP]);
60          dst[i*2+1] = SRC_CONVERT(rgba[i][GCOMP]);
61       }
62       break;
63
64    case GL_RGB_INTEGER_EXT:
65       for (i=0;i<n;i++) {
66          dst[i*3+0] = SRC_CONVERT(rgba[i][RCOMP]);
67          dst[i*3+1] = SRC_CONVERT(rgba[i][GCOMP]);
68          dst[i*3+2] = SRC_CONVERT(rgba[i][BCOMP]);
69       }
70       break;
71
72    case GL_RGBA_INTEGER_EXT:
73       for (i=0;i<n;i++) {
74          dst[i*4+0] = SRC_CONVERT(rgba[i][RCOMP]);
75          dst[i*4+1] = SRC_CONVERT(rgba[i][GCOMP]);
76          dst[i*4+2] = SRC_CONVERT(rgba[i][BCOMP]);
77          dst[i*4+3] = SRC_CONVERT(rgba[i][ACOMP]);
78       }
79       break;
80
81    case GL_BGR_INTEGER_EXT:
82       for (i=0;i<n;i++) {
83          dst[i*3+0] = SRC_CONVERT(rgba[i][BCOMP]);
84          dst[i*3+1] = SRC_CONVERT(rgba[i][GCOMP]);
85          dst[i*3+2] = SRC_CONVERT(rgba[i][RCOMP]);
86       }
87       break;
88
89    case GL_BGRA_INTEGER_EXT:
90       for (i=0;i<n;i++) {
91          dst[i*4+0] = SRC_CONVERT(rgba[i][BCOMP]);
92          dst[i*4+1] = SRC_CONVERT(rgba[i][GCOMP]);
93          dst[i*4+2] = SRC_CONVERT(rgba[i][RCOMP]);
94          dst[i*4+3] = SRC_CONVERT(rgba[i][ACOMP]);
95       }
96       break;
97
98    case GL_LUMINANCE_INTEGER_EXT:
99       for (i=0;i<n;i++) {
100          dst[i] = SRC_CONVERT(rgba[i][RCOMP] +
101                               rgba[i][GCOMP] +
102                               rgba[i][BCOMP]);
103       }
104       break;
105
106    case GL_LUMINANCE_ALPHA_INTEGER_EXT:
107       for (i=0;i<n;i++) {
108          dst[i*2+0] = SRC_CONVERT(rgba[i][RCOMP] +
109                                   rgba[i][GCOMP] +
110                                   rgba[i][BCOMP]);
111          dst[i*2+1] = SRC_CONVERT(rgba[i][ACOMP]);
112       }
113       break;
114    }
115 }