aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nv50/nv50_texture.h
blob: b4939943e8a7810d845ca0e46e36d2017d7ae099 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#ifndef __NV50_TEXTURE_H__
#define __NV50_TEXTURE_H__

/* It'd be really nice to have these in nouveau_class.h generated by
 * renouveau like the rest of the object header - but not sure it can
 * handle non-object stuff nicely - need to look into it.
 */

/* Texture image control block */
#define NV50TIC_0_0_SWIZZLE_MASK                                  0x3ffc0000
#define NV50TIC_0_0_MAPA_MASK                                     0x38000000
#define NV50TIC_0_0_MAPA_SHIFT                                            27
#define NV50TIC_0_0_MAPA_ZERO                                     0x00000000
#define NV50TIC_0_0_MAPA_C0                                       0x10000000
#define NV50TIC_0_0_MAPA_C1                                       0x18000000
#define NV50TIC_0_0_MAPA_C2                                       0x20000000
#define NV50TIC_0_0_MAPA_C3                                       0x28000000
#define NV50TIC_0_0_MAPA_ONE                                      0x38000000
#define NV50TIC_0_0_MAPB_MASK                                     0x07000000
#define NV50TIC_0_0_MAPB_SHIFT                                            24
#define NV50TIC_0_0_MAPB_ZERO                                     0x00000000
#define NV50TIC_0_0_MAPB_C0                                       0x02000000
#define NV50TIC_0_0_MAPB_C1                                       0x03000000
#define NV50TIC_0_0_MAPB_C2                                       0x04000000
#define NV50TIC_0_0_MAPB_C3                                       0x05000000
#define NV50TIC_0_0_MAPB_ONE                                      0x07000000
#define NV50TIC_0_0_MAPG_MASK                                     0x00e00000
#define NV50TIC_0_0_MAPG_SHIFT                                            21
#define NV50TIC_0_0_MAPG_ZERO                                     0x00000000
#define NV50TIC_0_0_MAPG_C0                                       0x00400000
#define NV50TIC_0_0_MAPG_C1                                       0x00600000
#define NV50TIC_0_0_MAPG_C2                                       0x00800000
#define NV50TIC_0_0_MAPG_C3                                       0x00a00000
#define NV50TIC_0_0_MAPG_ONE                                      0x00e00000
#define NV50TIC_0_0_MAPR_MASK                                     0x001c0000
#define NV50TIC_0_0_MAPR_SHIFT                                            18
#define NV50TIC_0_0_MAPR_ZERO                                     0x00000000
#define NV50TIC_0_0_MAPR_C0                                       0x00080000
#define NV50TIC_0_0_MAPR_C1                                       0x000c0000
#define NV50TIC_0_0_MAPR_C2                                       0x00100000
#define NV50TIC_0_0_MAPR_C3                                       0x00140000
#define NV50TIC_0_0_MAPR_ONE                                      0x001c0000
#define NV50TIC_0_0_TYPEA_MASK                                    0x00038000
#define NV50TIC_0_0_TYPEA_UNORM                                   0x00010000
#define NV50TIC_0_0_TYPEA_SNORM                                   0x00008000
#define NV50TIC_0_0_TYPEA_SINT                                    0x00018000
#define NV50TIC_0_0_TYPEA_UINT                                    0x00020000
#define NV50TIC_0_0_TYPEA_SSCALED                                 0x00028000
#define NV50TIC_0_0_TYPEA_USCALED                                 0x00030000
#define NV50TIC_0_0_TYPEA_FLOAT                                   0x00038000
#define NV50TIC_0_0_TYPEB_MASK                                    0x00007000
#define NV50TIC_0_0_TYPEB_UNORM                                   0x00002000
#define NV50TIC_0_0_TYPEB_SNORM                                   0x00001000
#define NV50TIC_0_0_TYPEB_SINT                                    0x00003000
#define NV50TIC_0_0_TYPEB_UINT                                    0x00004000
#define NV50TIC_0_0_TYPEB_SSCALED                                 0x00005000
#define NV50TIC_0_0_TYPEB_USCALED                                 0x00006000
#define NV50TIC_0_0_TYPEB_FLOAT                                   0x00007000
#define NV50TIC_0_0_TYPEG_MASK                                    0x00000e00
#define NV50TIC_0_0_TYPEG_UNORM                                   0x00000400
#define NV50TIC_0_0_TYPEG_SNORM                                   0x00000200
#define NV50TIC_0_0_TYPEG_SINT                                    0x00000600
#define NV50TIC_0_0_TYPEG_UINT                                    0x00000800
#define NV50TIC_0_0_TYPEG_SSCALED                                 0x00000a00
#define NV50TIC_0_0_TYPEG_USCALED                                 0x00000c00
#define NV50TIC_0_0_TYPEG_FLOAT                                   0x00000e00
#define NV50TIC_0_0_TYPER_MASK                                    0x000001c0
#define NV50TIC_0_0_TYPER_UNORM                                   0x00000080
#define NV50TIC_0_0_TYPER_SNORM                                   0x00000040
#define NV50TIC_0_0_TYPER_SINT                                    0x000000c0
#define NV50TIC_0_0_TYPER_UINT                                    0x00000100
#define NV50TIC_0_0_TYPER_SSCALED                                 0x00000140
#define NV50TIC_0_0_TYPER_USCALED                                 0x00000180
#define NV50TIC_0_0_TYPER_FLOAT                                   0x000001c0
#define NV50TIC_0_0_FMT_MASK                                      0x0000003f
#define NV50TIC_0_0_FMT_32_32_32_32                               0x00000001
#define NV50TIC_0_0_FMT_16_16_16_16                               0x00000003
#define NV50TIC_0_0_FMT_32_32                                     0x00000004
#define NV50TIC_0_0_FMT_8_8_8_8                                   0x00000008
#define NV50TIC_0_0_FMT_2_10_10_10                                0x00000009
#define NV50TIC_0_0_FMT_16_16                                     0x0000000c
#define NV50TIC_0_0_FMT_32                                        0x0000000f
#define NV50TIC_0_0_FMT_4_4_4_4                                   0x00000012
/* #define NV50TIC_0_0_FMT_1_5_5_5                                0x00000013 */
#define NV50TIC_0_0_FMT_1_5_5_5                                   0x00000014
#define NV50TIC_0_0_FMT_5_6_5                                     0x00000015
#define NV50TIC_0_0_FMT_8_8                                       0x00000018
#define NV50TIC_0_0_FMT_16                                        0x0000001b
#define NV50TIC_0_0_FMT_8                                         0x0000001d
#define NV50TIC_0_0_FMT_5_9_9_9                                   0x00000020
#define NV50TIC_0_0_FMT_10_11_11                                  0x00000021
#define NV50TIC_0_0_FMT_DXT1                                      0x00000024
#define NV50TIC_0_0_FMT_DXT3                                      0x00000025
#define NV50TIC_0_0_FMT_DXT5                                      0x00000026
#define NV50TIC_0_0_FMT_RGTC1                                     0x00000027
#define NV50TIC_0_0_FMT_RGTC2                                     0x00000028
#define NV50TIC_0_0_FMT_24_8                                      0x00000029
#define NV50TIC_0_0_FMT_8_24                                      0x0000002a
#define NV50TIC_0_0_FMT_32_DEPTH                                  0x0000002f
#define NV50TIC_0_0_FMT_32_8                                      0x00000030
#define NV50TIC_0_0_FMT_16_DEPTH                                  0x0000003a

#define NV50TIC_0_1_OFFSET_LOW_MASK                               0xffffffff
#define NV50TIC_0_1_OFFSET_LOW_SHIFT                                       0

#define NV50TIC_0_2_COLORSPACE_SRGB                               0x00000400
#define NV50TIC_0_2_TARGET_1D                                     0x00000000
#define NV50TIC_0_2_TARGET_2D                                     0x00004000
#define NV50TIC_0_2_TARGET_3D                                     0x00008000
#define NV50TIC_0_2_TARGET_CUBE                                   0x0000c000
#define NV50TIC_0_2_TARGET_1D_ARRAY                               0x00010000
#define NV50TIC_0_2_TARGET_2D_ARRAY                               0x00014000
#define NV50TIC_0_2_TARGET_BUFFER                                 0x00018000
#define NV50TIC_0_2_TARGET_RECT                                   0x0001c000
/* #define NV50TIC_0_0_TILE_MODE_LINEAR                           0x00040000 */
#define NV50TIC_0_2_TILE_MODE_Y_MASK                              0x01c00000
#define NV50TIC_0_2_TILE_MODE_Y_SHIFT                                     22
#define NV50TIC_0_2_TILE_MODE_Z_MASK                              0x0e000000
#define NV50TIC_0_2_TILE_MODE_Z_SHIFT                                     25
#define NV50TIC_0_2_NORMALIZED_COORDS                             0x80000000

#define NV50TIC_0_3_UNKNOWN_MASK                                  0xffffffff

#define NV50TIC_0_4_WIDTH_MASK                                    0x0000ffff
#define NV50TIC_0_4_WIDTH_SHIFT                                            0

#define NV50TIC_0_5_LAST_LEVEL_MASK                               0xf0000000
#define NV50TIC_0_5_LAST_LEVEL_SHIFT                                      28
#define NV50TIC_0_5_DEPTH_MASK                                    0x0fff0000
#define NV50TIC_0_5_DEPTH_SHIFT                                           16
#define NV50TIC_0_5_HEIGHT_MASK                                   0x0000ffff
#define NV50TIC_0_5_HEIGHT_SHIFT                                           0
#define NV50TIC_0_6_UNKNOWN_MASK                                  0xffffffff

#define NV50TIC_0_7_BASE_LEVEL_MASK                               0x0000000f
#define NV50TIC_0_7_BASE_LEVEL_SHIFT                                       0
#define NV50TIC_0_7_MAX_LEVEL_MASK                                0x000000f0
#define NV50TIC_0_7_MAX_LEVEL_SHIFT                                        4

/* Texture sampler control block */
#define NV50TSC_1_0_WRAPS_MASK                                   0x00000007
#define NV50TSC_1_0_WRAPS_REPEAT                                 0x00000000
#define NV50TSC_1_0_WRAPS_MIRROR_REPEAT                          0x00000001
#define NV50TSC_1_0_WRAPS_CLAMP_TO_EDGE                          0x00000002
#define NV50TSC_1_0_WRAPS_CLAMP_TO_BORDER                        0x00000003
#define NV50TSC_1_0_WRAPS_CLAMP                                  0x00000004
#define NV50TSC_1_0_WRAPS_MIRROR_CLAMP_TO_EDGE                   0x00000005
#define NV50TSC_1_0_WRAPS_MIRROR_CLAMP_TO_BORDER                 0x00000006
#define NV50TSC_1_0_WRAPS_MIRROR_CLAMP                           0x00000007
#define NV50TSC_1_0_WRAPT_MASK                                   0x00000038
#define NV50TSC_1_0_WRAPT_REPEAT                                 0x00000000
#define NV50TSC_1_0_WRAPT_MIRROR_REPEAT                          0x00000008
#define NV50TSC_1_0_WRAPT_CLAMP_TO_EDGE                          0x00000010
#define NV50TSC_1_0_WRAPT_CLAMP_TO_BORDER                        0x00000018
#define NV50TSC_1_0_WRAPT_CLAMP                                  0x00000020
#define NV50TSC_1_0_WRAPT_MIRROR_CLAMP_TO_EDGE                   0x00000028
#define NV50TSC_1_0_WRAPT_MIRROR_CLAMP_TO_BORDER                 0x00000030
#define NV50TSC_1_0_WRAPT_MIRROR_CLAMP                           0x00000038
#define NV50TSC_1_0_WRAPR_MASK                                   0x000001c0
#define NV50TSC_1_0_WRAPR_REPEAT                                 0x00000000
#define NV50TSC_1_0_WRAPR_MIRROR_REPEAT                          0x00000040
#define NV50TSC_1_0_WRAPR_CLAMP_TO_EDGE                          0x00000080
#define NV50TSC_1_0_WRAPR_CLAMP_TO_BORDER                        0x000000c0
#define NV50TSC_1_0_WRAPR_CLAMP                                  0x00000100
#define NV50TSC_1_0_WRAPR_MIRROR_CLAMP_TO_EDGE                   0x00000140
#define NV50TSC_1_0_WRAPR_MIRROR_CLAMP_TO_BORDER                 0x00000180
#define NV50TSC_1_0_WRAPR_MIRROR_CLAMP                           0x000001c0
#define NV50TSC_1_0_MAX_ANISOTROPY_MASK                          0x00700000

#define NV50TSC_1_1_MAGF_MASK                                    0x00000003
#define NV50TSC_1_1_MAGF_NEAREST                                 0x00000001
#define NV50TSC_1_1_MAGF_LINEAR                                  0x00000002
#define NV50TSC_1_1_MINF_MASK                                    0x00000030
#define NV50TSC_1_1_MINF_NEAREST                                 0x00000010
#define NV50TSC_1_1_MINF_LINEAR                                  0x00000020
#define NV50TSC_1_1_MIPF_MASK                                    0x000000c0
#define NV50TSC_1_1_MIPF_NONE                                    0x00000040
#define NV50TSC_1_1_MIPF_NEAREST                                 0x00000080
#define NV50TSC_1_1_MIPF_LINEAR                                  0x000000c0
#define NV50TSC_1_1_LOD_BIAS_MASK                                0x01fff000
#define NV50TSC_1_1_UNKN_ANISO_15                                0x10000000
#define NV50TSC_1_1_UNKN_ANISO_35                                0x18000000

#define NV50TSC_1_2_MIN_LOD_MASK                                 0x00000f00
#define NV50TSC_1_2_MAX_LOD_MASK                                 0x00f00000

#define NV50TSC_1_3_UNKNOWN_MASK                                 0xffffffff

#define NV50TSC_1_4_BORDER_COLOR_RED_MASK                        0xffffffff

#define NV50TSC_1_5_BORDER_COLOR_GREEN_MASK                      0xffffffff

#define NV50TSC_1_6_BORDER_COLOR_BLUE_MASK                       0xffffffff

#define NV50TSC_1_7_BORDER_COLOR_ALPHA_MASK                      0xffffffff

#endif