49
57
#define SCANOUT PIPE_BIND_SCANOUT
51
59
/* for vertex buffers: */
52
#define NV50TIC_0_0_FMT_8_8_8 NV50TIC_0_0_FMT_8_8_8_8
53
#define NV50TIC_0_0_FMT_16_16_16 NV50TIC_0_0_FMT_16_16_16_16
54
#define NV50TIC_0_0_FMT_32_32_32 NV50TIC_0_0_FMT_32_32_32_32
56
/* NOTE: using NV50_2D_DST_FORMAT for substitute formats used with 2D engine */
60
#define NV50_TIC_0_FMT_8_8_8 NV50_TIC_0_FMT_8_8_8_8
61
#define NV50_TIC_0_FMT_16_16_16 NV50_TIC_0_FMT_16_16_16_16
62
#define NV50_TIC_0_FMT_32_32_32 NV50_TIC_0_FMT_32_32_32_32
58
64
const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] =
60
66
/* COMMON FORMATS */
62
[PIPE_FORMAT_B8G8R8A8_UNORM] = { NV50TCL_RT_FORMAT_A8R8G8B8_UNORM,
63
A_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
64
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET | SCANOUT },
66
[PIPE_FORMAT_B8G8R8X8_UNORM] = { NV50TCL_RT_FORMAT_X8R8G8B8_UNORM,
67
A_(C2, C1, C0, ONE, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
68
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET | SCANOUT },
70
[PIPE_FORMAT_B8G8R8A8_SRGB] = { NV50TCL_RT_FORMAT_A8R8G8B8_SRGB,
71
A_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
72
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
74
[PIPE_FORMAT_B8G8R8X8_SRGB] = { NV50TCL_RT_FORMAT_X8R8G8B8_SRGB,
75
A_(C2, C1, C0, ONE, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
76
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
78
[PIPE_FORMAT_B5G6R5_UNORM] = { NV50TCL_RT_FORMAT_R5G6B5_UNORM,
79
B_(C2, C1, C0, ONE, UNORM, UNORM, UNORM, UNORM, 5_6_5, 1),
68
[PIPE_FORMAT_B8G8R8A8_UNORM] = { NV50_SURFACE_FORMAT_A8R8G8B8_UNORM,
69
A_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
70
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET | SCANOUT },
72
[PIPE_FORMAT_B8G8R8X8_UNORM] = { NV50_SURFACE_FORMAT_X8R8G8B8_UNORM,
73
A_(C2, C1, C0, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
74
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET | SCANOUT },
76
[PIPE_FORMAT_B8G8R8A8_SRGB] = { NV50_SURFACE_FORMAT_A8R8G8B8_SRGB,
77
A_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
78
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
80
[PIPE_FORMAT_B8G8R8X8_SRGB] = { NV50_SURFACE_FORMAT_X8R8G8B8_SRGB,
81
A_(C2, C1, C0, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
82
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
84
[PIPE_FORMAT_B5G6R5_UNORM] = { NV50_SURFACE_FORMAT_R5G6B5_UNORM,
85
B_(C2, C1, C0, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 5_6_5, 1),
80
86
SAMPLER_VIEW | RENDER_TARGET | SCANOUT },
82
[PIPE_FORMAT_B5G5R5A1_UNORM] = { NV50TCL_RT_FORMAT_A1R5G5B5_UNORM,
88
[PIPE_FORMAT_B5G5R5A1_UNORM] = { NV50_SURFACE_FORMAT_A1R5G5B5_UNORM,
83
89
B_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 1_5_5_5, 1),
84
90
SAMPLER_VIEW | RENDER_TARGET | SCANOUT },
86
[PIPE_FORMAT_B4G4R4A4_UNORM] = { NV50_2D_DST_FORMAT_R16_UNORM,
92
[PIPE_FORMAT_B4G4R4A4_UNORM] = { 0,
87
93
B_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 4_4_4_4, 1),
90
[PIPE_FORMAT_R10G10B10A2_UNORM] = { NV50TCL_RT_FORMAT_A2B10G10R10_UNORM,
96
[PIPE_FORMAT_B4G4R4X4_UNORM] = { 0,
97
B_(C2, C1, C0, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 4_4_4_4, 1),
100
[PIPE_FORMAT_R10G10B10A2_UNORM] = { NV50_SURFACE_FORMAT_A2B10G10R10_UNORM,
91
101
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 2_10_10_10, 0),
92
102
SAMPLER_VIEW | RENDER_TARGET | VERTEX_BUFFER | SCANOUT },
94
[PIPE_FORMAT_B10G10R10A2_UNORM] = { NV50TCL_RT_FORMAT_A2R10G10B10_UNORM,
104
[PIPE_FORMAT_B10G10R10A2_UNORM] = { NV50_SURFACE_FORMAT_A2R10G10B10_UNORM,
95
105
A_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 2_10_10_10, 1),
96
106
SAMPLER_VIEW | RENDER_TARGET | VERTEX_BUFFER },
98
108
/* DEPTH/STENCIL FORMATS */
100
[PIPE_FORMAT_Z16_UNORM] = { NV50TCL_ZETA_FORMAT_Z16_UNORM,
101
B_(C0, C0, C0, ONE, UNORM, UINT, UINT, UINT, 16_DEPTH, 0),
102
SAMPLER_VIEW | DEPTH_STENCIL },
104
[PIPE_FORMAT_Z24_UNORM_S8_USCALED] = { NV50TCL_ZETA_FORMAT_S8Z24_UNORM,
105
B_(C0, C0, C0, ONE, UNORM, UINT, UINT, UINT, 8_24, 0),
106
SAMPLER_VIEW | DEPTH_STENCIL },
108
[PIPE_FORMAT_Z24X8_UNORM] = { NV50TCL_ZETA_FORMAT_X8Z24_UNORM,
109
B_(C0, C0, C0, ONE, UNORM, UINT, UINT, UINT, 8_24, 0),
110
SAMPLER_VIEW | DEPTH_STENCIL },
112
[PIPE_FORMAT_S8_USCALED_Z24_UNORM] = { NV50TCL_ZETA_FORMAT_S8Z24_UNORM,
113
B_(C1, C1, C1, ONE, UINT, UNORM, UINT, UINT, 24_8, 0),
114
SAMPLER_VIEW | DEPTH_STENCIL },
116
[PIPE_FORMAT_Z32_FLOAT] = { NV50TCL_ZETA_FORMAT_Z32_FLOAT,
117
B_(C0, C0, C0, ONE, FLOAT, UINT, UINT, UINT, 32_DEPTH, 0),
110
[PIPE_FORMAT_Z16_UNORM] = { NV50_ZETA_FORMAT_Z16_UNORM,
111
B_(C0, C0, C0, ONE_FLOAT, UNORM, UINT, UINT, UINT, Z16, 0),
112
SAMPLER_VIEW | DEPTH_STENCIL },
114
[PIPE_FORMAT_Z24_UNORM_S8_USCALED] = { NV50_ZETA_FORMAT_S8Z24_UNORM,
115
B_(C0, C0, C0, ONE_FLOAT, UNORM, UINT, UINT, UINT, S8Z24, 0),
116
SAMPLER_VIEW | DEPTH_STENCIL },
118
[PIPE_FORMAT_Z24X8_UNORM] = { NV50_ZETA_FORMAT_X8Z24_UNORM,
119
B_(C0, C0, C0, ONE_FLOAT, UNORM, UINT, UINT, UINT, X8Z24, 0),
120
SAMPLER_VIEW | DEPTH_STENCIL },
122
[PIPE_FORMAT_S8_USCALED_Z24_UNORM] = { NV50_ZETA_FORMAT_Z24S8_UNORM,
123
B_(C1, C1, C1, ONE_FLOAT, UINT, UNORM, UINT, UINT, Z24S8, 0),
124
SAMPLER_VIEW | DEPTH_STENCIL },
126
[PIPE_FORMAT_Z32_FLOAT] = { NV50_ZETA_FORMAT_Z32_FLOAT,
127
B_(C0, C0, C0, ONE_FLOAT, FLOAT, UINT, UINT, UINT, Z32, 0),
118
128
SAMPLER_VIEW | DEPTH_STENCIL },
120
130
[PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED] = {
121
NV50TCL_ZETA_FORMAT_Z32_FLOAT_X24S8_UNORM,
122
B_(C0, C0, C0, ONE, FLOAT, UINT, UINT, UINT, 32_8, 0),
131
NV50_ZETA_FORMAT_Z32_FLOAT_X24S8_UNORM,
132
B_(C0, C0, C0, ONE_FLOAT, FLOAT, UINT, UINT, UINT, X24S8Z32, 0),
123
133
SAMPLER_VIEW | DEPTH_STENCIL },
125
135
/* LUMINANCE, ALPHA, INTENSITY */
127
[PIPE_FORMAT_L8_UNORM] = { NV50_2D_DST_FORMAT_R8_UNORM,
128
A_(C0, C0, C0, ONE, UNORM, UNORM, UNORM, UNORM, 8, 0),
131
[PIPE_FORMAT_L8_SRGB] = { NV50_2D_DST_FORMAT_R8_UNORM,
132
A_(C0, C0, C0, ONE, UNORM, UNORM, UNORM, UNORM, 8, 0),
135
[PIPE_FORMAT_I8_UNORM] = { NV50_2D_DST_FORMAT_R8_UNORM,
137
[PIPE_FORMAT_L8_UNORM] = { NV50_SURFACE_FORMAT_R8_UNORM,
138
A_(C0, C0, C0, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8, 0),
139
SAMPLER_VIEW | RENDER_TARGET },
141
[PIPE_FORMAT_L8_SRGB] = { NV50_SURFACE_FORMAT_R8_UNORM,
142
A_(C0, C0, C0, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8, 0),
143
SAMPLER_VIEW | RENDER_TARGET },
145
[PIPE_FORMAT_L16_SNORM] = { NV50_SURFACE_FORMAT_R16_SNORM,
146
B_(C0, C0, C0, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16, 0),
147
SAMPLER_VIEW | RENDER_TARGET },
149
[PIPE_FORMAT_L16_FLOAT] = { NV50_SURFACE_FORMAT_R16_FLOAT,
150
B_(C0, C0, C0, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0),
151
SAMPLER_VIEW | RENDER_TARGET },
153
[PIPE_FORMAT_L32_FLOAT] = { NV50_SURFACE_FORMAT_R32_FLOAT,
154
B_(C0, C0, C0, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0),
155
SAMPLER_VIEW | RENDER_TARGET },
157
[PIPE_FORMAT_I8_UNORM] = { 0,
136
158
A_(C0, C0, C0, C0, UNORM, UNORM, UNORM, UNORM, 8, 0),
139
[PIPE_FORMAT_A8_UNORM] = { NV50TCL_RT_FORMAT_A8_UNORM,
161
[PIPE_FORMAT_I16_UNORM] = { NV50_SURFACE_FORMAT_R16_UNORM,
162
A_(C0, C0, C0, C0, UNORM, UNORM, UNORM, UNORM, 16, 0),
165
[PIPE_FORMAT_I16_SNORM] = { NV50_SURFACE_FORMAT_R16_SNORM,
166
B_(C0, C0, C0, C0, SNORM, SNORM, SNORM, SNORM, 16, 0),
169
[PIPE_FORMAT_I16_FLOAT] = { NV50_SURFACE_FORMAT_R16_FLOAT,
170
B_(C0, C0, C0, C0, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0),
173
[PIPE_FORMAT_I32_FLOAT] = { NV50_SURFACE_FORMAT_R32_FLOAT,
174
B_(C0, C0, C0, C0, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0),
177
[PIPE_FORMAT_A8_UNORM] = { NV50_SURFACE_FORMAT_A8_UNORM,
140
178
A_(ZERO, ZERO, ZERO, C0, UNORM, UNORM, UNORM, UNORM, 8, 0),
141
179
SAMPLER_VIEW | RENDER_TARGET },
143
[PIPE_FORMAT_L8A8_UNORM] = { NV50_2D_DST_FORMAT_R16_UNORM,
181
[PIPE_FORMAT_A8_SNORM] = { 0,
182
A_(ZERO, ZERO, ZERO, C0, SNORM, SNORM, SNORM, SNORM, 8, 0),
185
[PIPE_FORMAT_A16_UNORM] = { 0,
186
A_(ZERO, ZERO, ZERO, C0, UNORM, UNORM, UNORM, UNORM, 16, 0),
189
[PIPE_FORMAT_A16_SNORM] = { 0,
190
A_(ZERO, ZERO, ZERO, C0, SNORM, SNORM, SNORM, SNORM, 16, 0),
193
[PIPE_FORMAT_A16_FLOAT] = { 0,
194
B_(ZERO, ZERO, ZERO, C0, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0),
197
[PIPE_FORMAT_A32_FLOAT] = { 0,
198
B_(ZERO, ZERO, ZERO, C0, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0),
201
[PIPE_FORMAT_L8A8_UNORM] = { 0,
144
202
A_(C0, C0, C0, C1, UNORM, UNORM, UNORM, UNORM, 8_8, 0),
166
244
B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT5, 0),
247
[PIPE_FORMAT_DXT1_SRGB] = { 0,
248
B_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, DXT1, 0),
251
[PIPE_FORMAT_DXT1_SRGBA] = { 0,
252
B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT1, 0),
255
[PIPE_FORMAT_DXT3_SRGBA] = { 0,
256
B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT3, 0),
259
[PIPE_FORMAT_DXT5_SRGBA] = { 0,
260
B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT5, 0),
169
263
[PIPE_FORMAT_RGTC1_UNORM] = { 0,
170
B_(C0, ZERO, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, RGTC1, 0),
264
B_(C0, ZERO, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, RGTC1, 0),
173
267
[PIPE_FORMAT_RGTC1_SNORM] = { 0,
174
B_(C0, ZERO, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, RGTC1, 0),
268
B_(C0, ZERO, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, RGTC1, 0),
177
271
[PIPE_FORMAT_RGTC2_UNORM] = { 0,
178
B_(C0, C1, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, RGTC2, 0),
272
B_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, RGTC2, 0),
181
275
[PIPE_FORMAT_RGTC2_SNORM] = { 0,
182
B_(C0, C1, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, RGTC2, 0),
276
B_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, RGTC2, 0),
187
[PIPE_FORMAT_R16G16B16A16_FLOAT] = { NV50TCL_RT_FORMAT_R16G16B16A16_FLOAT,
281
[PIPE_FORMAT_R16G16B16A16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16B16A16_FLOAT,
188
282
A_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 16_16_16_16, 0),
189
283
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
191
[PIPE_FORMAT_R16G16B16_FLOAT] = { NV50TCL_RT_FORMAT_R16G16B16X16_FLOAT,
192
A_(C0, C1, C2, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 16_16_16, 0),
193
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
195
[PIPE_FORMAT_R16G16_FLOAT] = { NV50TCL_RT_FORMAT_R16G16_FLOAT,
196
A_(C0, C1, ZERO, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 16_16, 0),
197
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
199
[PIPE_FORMAT_R16_FLOAT] = { NV50TCL_RT_FORMAT_R16_FLOAT,
200
A_(C0, ZERO, ZERO, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0),
285
[PIPE_FORMAT_R16G16B16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16B16X16_FLOAT,
286
A_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16_16_16, 0),
287
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
289
[PIPE_FORMAT_R16G16_FLOAT] = { NV50_SURFACE_FORMAT_R16G16_FLOAT,
290
A_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16_16, 0),
291
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
293
[PIPE_FORMAT_R16_FLOAT] = { NV50_SURFACE_FORMAT_R16_FLOAT,
294
A_(C0, ZERO, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0),
201
295
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
205
[PIPE_FORMAT_R32G32B32A32_FLOAT] = { NV50TCL_RT_FORMAT_R32G32B32A32_FLOAT,
299
[PIPE_FORMAT_R32G32B32A32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32B32A32_FLOAT,
206
300
A_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32_32, 0),
207
301
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
209
[PIPE_FORMAT_R32G32B32_FLOAT] = { NV50TCL_RT_FORMAT_R32G32B32X32_FLOAT,
210
A_(C0, C1, C2, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32, 0),
211
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
213
[PIPE_FORMAT_R32G32_FLOAT] = { NV50TCL_RT_FORMAT_R32G32_FLOAT,
214
A_(C0, C1, ZERO, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 32_32, 0),
215
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
217
[PIPE_FORMAT_R32_FLOAT] = { NV50TCL_RT_FORMAT_R32_FLOAT,
218
A_(C0, ZERO, ZERO, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0),
303
[PIPE_FORMAT_R32G32B32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32B32X32_FLOAT,
304
A_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32, 0),
305
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
307
[PIPE_FORMAT_R32G32_FLOAT] = { NV50_SURFACE_FORMAT_R32G32_FLOAT,
308
A_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32, 0),
309
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
311
[PIPE_FORMAT_R32_FLOAT] = { NV50_SURFACE_FORMAT_R32_FLOAT,
312
A_(C0, ZERO, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0),
219
313
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
221
315
/* ODD FORMATS */
223
[PIPE_FORMAT_R11G11B10_FLOAT] = { NV50TCL_RT_FORMAT_B10G11R11_FLOAT,
224
B_(C0, C1, C2, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 10_11_11, 0),
317
[PIPE_FORMAT_R11G11B10_FLOAT] = { NV50_SURFACE_FORMAT_B10G11R11_FLOAT,
318
B_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 10_11_11, 0),
225
319
SAMPLER_VIEW | RENDER_TARGET },
227
321
[PIPE_FORMAT_R9G9B9E5_FLOAT] = { 0,
228
B_(C0, C1, C2, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 5_9_9_9, 0),
322
B_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, E5_9_9_9, 0),
233
327
[PIPE_FORMAT_R32G32B32A32_SNORM] = { 0,
234
A_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32_32, 0),
328
A_(C0, C1, C2, C3, SNORM, SNORM, SNORM, SNORM, 32_32_32_32, 0),
235
329
VERTEX_BUFFER | SAMPLER_VIEW },
237
331
[PIPE_FORMAT_R32G32B32_SNORM] = { 0,
238
A_(C0, C1, C2, ONE, SNORM, SNORM, SNORM, SNORM, 32_32_32, 0),
332
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32_32_32, 0),
239
333
VERTEX_BUFFER | SAMPLER_VIEW },
241
335
[PIPE_FORMAT_R32G32_SNORM] = { 0,
242
A_(C0, C1, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, 32_32, 0),
336
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32_32, 0),
243
337
VERTEX_BUFFER | SAMPLER_VIEW },
245
339
[PIPE_FORMAT_R32_SNORM] = { 0,
246
A_(C0, ZERO, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, 32, 0),
340
A_(C0, ZERO, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 32, 0),
247
341
VERTEX_BUFFER | SAMPLER_VIEW },
251
345
[PIPE_FORMAT_R32G32B32A32_UNORM] = { 0,
252
A_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32_32, 0),
346
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 32_32_32_32, 0),
253
347
VERTEX_BUFFER | SAMPLER_VIEW },
255
349
[PIPE_FORMAT_R32G32B32_UNORM] = { 0,
256
A_(C0, C1, C2, ONE, UNORM, UNORM, UNORM, UNORM, 32_32_32, 0),
350
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32_32_32, 0),
257
351
VERTEX_BUFFER | SAMPLER_VIEW },
259
353
[PIPE_FORMAT_R32G32_UNORM] = { 0,
260
A_(C0, C1, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, 32_32, 0),
354
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32_32, 0),
261
355
VERTEX_BUFFER | SAMPLER_VIEW },
263
357
[PIPE_FORMAT_R32_UNORM] = { 0,
264
A_(C0, ZERO, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, 32, 0),
358
A_(C0, ZERO, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 32, 0),
265
359
VERTEX_BUFFER | SAMPLER_VIEW },
269
[PIPE_FORMAT_R16G16B16A16_SNORM] = { NV50TCL_RT_FORMAT_R16G16B16A16_SNORM,
363
[PIPE_FORMAT_R16G16B16A16_SNORM] = { NV50_SURFACE_FORMAT_R16G16B16A16_SNORM,
270
364
A_(C0, C1, C2, C3, SNORM, SNORM, SNORM, SNORM, 16_16_16_16, 0),
271
365
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
273
367
[PIPE_FORMAT_R16G16B16_SNORM] = { 0,
274
A_(C0, C1, C2, ONE, SNORM, SNORM, SNORM, SNORM, 16_16_16, 0),
368
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16_16, 0),
275
369
VERTEX_BUFFER | SAMPLER_VIEW },
277
[PIPE_FORMAT_R16G16_SNORM] = { NV50TCL_RT_FORMAT_R16G16_SNORM,
278
A_(C0, C1, C2, C3, SNORM, SNORM, SNORM, SNORM, 16_16, 0),
371
[PIPE_FORMAT_R16G16_SNORM] = { NV50_SURFACE_FORMAT_R16G16_SNORM,
372
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16, 0),
279
373
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
281
[PIPE_FORMAT_R16_SNORM] = { NV50TCL_RT_FORMAT_R16_SNORM,
282
A_(C0, ZERO, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, 16, 0),
375
[PIPE_FORMAT_R16_SNORM] = { NV50_SURFACE_FORMAT_R16_SNORM,
376
A_(C0, ZERO, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16, 0),
283
377
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
287
[PIPE_FORMAT_R16G16B16A16_UNORM] = { NV50TCL_RT_FORMAT_R16G16B16A16_UNORM,
381
[PIPE_FORMAT_R16G16B16A16_UNORM] = { NV50_SURFACE_FORMAT_R16G16B16A16_UNORM,
288
382
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 16_16_16_16, 0),
289
383
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
291
385
[PIPE_FORMAT_R16G16B16_UNORM] = { 0,
292
A_(C0, C1, C2, ONE, UNORM, UNORM, UNORM, UNORM, 16_16_16, 0),
386
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16_16, 0),
293
387
VERTEX_BUFFER | SAMPLER_VIEW },
295
[PIPE_FORMAT_R16G16_UNORM] = { NV50TCL_RT_FORMAT_R16G16_UNORM,
296
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 16_16, 0),
389
[PIPE_FORMAT_R16G16_UNORM] = { NV50_SURFACE_FORMAT_R16G16_UNORM,
390
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16, 0),
297
391
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
299
[PIPE_FORMAT_R16_UNORM] = { NV50TCL_RT_FORMAT_R16_UNORM,
300
A_(C0, ZERO, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, 16, 0),
393
[PIPE_FORMAT_R16_UNORM] = { NV50_SURFACE_FORMAT_R16_UNORM,
394
A_(C0, ZERO, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16, 0),
301
395
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
305
[PIPE_FORMAT_R8G8B8A8_SNORM] = { NV50TCL_RT_FORMAT_A8B8G8R8_SNORM,
399
[PIPE_FORMAT_R8G8B8A8_SNORM] = { NV50_SURFACE_FORMAT_A8B8G8R8_SNORM,
306
400
A_(C0, C1, C2, C3, SNORM, SNORM, SNORM, SNORM, 8_8_8_8, 0),
307
401
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
309
403
[PIPE_FORMAT_R8G8B8_SNORM] = { 0,
310
A_(C0, C1, C2, ONE, SNORM, SNORM, SNORM, SNORM, 8_8_8, 0),
404
A_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8_8_8, 0),
311
405
VERTEX_BUFFER | SAMPLER_VIEW },
313
[PIPE_FORMAT_R8G8_SNORM] = { NV50TCL_RT_FORMAT_R8G8_SNORM,
314
A_(C0, C1, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, 8_8, 0),
407
[PIPE_FORMAT_R8G8_SNORM] = { NV50_SURFACE_FORMAT_R8G8_SNORM,
408
A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8_8, 0),
315
409
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
317
[PIPE_FORMAT_R8_SNORM] = { NV50TCL_RT_FORMAT_R8_SNORM,
318
A_(C0, ZERO, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, 8, 0),
411
[PIPE_FORMAT_R8_SNORM] = { NV50_SURFACE_FORMAT_R8_SNORM,
412
A_(C0, ZERO, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 8, 0),
319
413
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
323
[PIPE_FORMAT_R8G8B8A8_UNORM] = { NV50TCL_RT_FORMAT_A8B8G8R8_UNORM,
324
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
325
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
327
[PIPE_FORMAT_R8G8B8A8_SRGB] = { NV50TCL_RT_FORMAT_A8B8G8R8_SRGB,
328
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
329
SAMPLER_VIEW | RENDER_TARGET },
331
[PIPE_FORMAT_R8G8B8_UNORM] = { NV50TCL_RT_FORMAT_X8B8G8R8_UNORM,
332
A_(C0, C1, C2, ONE, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
333
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
335
[PIPE_FORMAT_R8G8B8_SRGB] = { NV50TCL_RT_FORMAT_X8B8G8R8_SRGB,
336
A_(C0, C1, C2, ONE, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
337
SAMPLER_VIEW | RENDER_TARGET },
339
[PIPE_FORMAT_R8G8_UNORM] = { NV50TCL_RT_FORMAT_R8G8_UNORM,
340
A_(C0, C1, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, 8_8, 0),
341
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
343
[PIPE_FORMAT_R8_UNORM] = { NV50TCL_RT_FORMAT_R8_UNORM,
344
A_(C0, ZERO, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, 8, 0),
345
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
417
[PIPE_FORMAT_R8G8B8A8_UNORM] = { NV50_SURFACE_FORMAT_A8B8G8R8_UNORM,
418
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
419
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
421
[PIPE_FORMAT_R8G8B8A8_SRGB] = { NV50_SURFACE_FORMAT_A8B8G8R8_SRGB,
422
A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
423
SAMPLER_VIEW | RENDER_TARGET },
425
[PIPE_FORMAT_R8G8B8_UNORM] = { NV50_SURFACE_FORMAT_X8B8G8R8_UNORM,
426
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
427
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
429
[PIPE_FORMAT_R8G8B8_SRGB] = { NV50_SURFACE_FORMAT_X8B8G8R8_SRGB,
430
A_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
431
SAMPLER_VIEW | RENDER_TARGET },
433
[PIPE_FORMAT_R8G8_UNORM] = { NV50_SURFACE_FORMAT_R8G8_UNORM,
434
A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8_8, 0),
435
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
437
[PIPE_FORMAT_R8_UNORM] = { NV50_SURFACE_FORMAT_R8_UNORM,
438
A_(C0, ZERO, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8, 0),
439
VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
441
/* SSCALED 32 (not integer, data is converted to float !) */
349
443
[PIPE_FORMAT_R32G32B32A32_SSCALED] = { 0,
350
444
A_(C0, C1, C2, C3, SSCALED, SSCALED, SSCALED, SSCALED, 32_32_32_32, 0),
351
VERTEX_BUFFER | SAMPLER_VIEW },
353
447
[PIPE_FORMAT_R32G32B32_SSCALED] = { 0,
354
A_(C0, C1, C2, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 32_32_32, 0),
355
VERTEX_BUFFER | SAMPLER_VIEW },
448
A_(C0, C1, C2, ONE_FLOAT, SSCALED, SSCALED, SSCALED, SSCALED, 32_32_32, 0),
357
451
[PIPE_FORMAT_R32G32_SSCALED] = { 0,
358
A_(C0, C1, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 32_32, 0),
359
VERTEX_BUFFER | SAMPLER_VIEW },
452
A_(C0, C1, ZERO, ONE_FLOAT, SSCALED, SSCALED, SSCALED, SSCALED, 32_32, 0),
361
455
[PIPE_FORMAT_R32_SSCALED] = { 0,
362
A_(C0, ZERO, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 32, 0),
363
VERTEX_BUFFER | SAMPLER_VIEW },
456
A_(C0, ZERO, ZERO, ONE_FLOAT, SSCALED, SSCALED, SSCALED, SSCALED, 32, 0),
367
461
[PIPE_FORMAT_R32G32B32A32_USCALED] = { 0,
368
462
A_(C0, C1, C2, C3, USCALED, USCALED, USCALED, USCALED, 32_32_32_32, 0),
369
VERTEX_BUFFER | SAMPLER_VIEW },
371
465
[PIPE_FORMAT_R32G32B32_USCALED] = { 0,
372
A_(C0, C1, C2, ONE, USCALED, USCALED, USCALED, USCALED, 32_32_32, 0),
373
VERTEX_BUFFER | SAMPLER_VIEW },
466
A_(C0, C1, C2, ONE_FLOAT, USCALED, USCALED, USCALED, USCALED, 32_32_32, 0),
375
469
[PIPE_FORMAT_R32G32_USCALED] = { 0,
376
A_(C0, C1, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 32_32, 0),
377
VERTEX_BUFFER | SAMPLER_VIEW },
470
A_(C0, C1, ZERO, ONE_FLOAT, USCALED, USCALED, USCALED, USCALED, 32_32, 0),
379
473
[PIPE_FORMAT_R32_USCALED] = { 0,
380
A_(C0, ZERO, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 32, 0),
381
VERTEX_BUFFER | SAMPLER_VIEW },
474
A_(C0, ZERO, ZERO, ONE_FLOAT, USCALED, USCALED, USCALED, USCALED, 32, 0),
385
479
[PIPE_FORMAT_R16G16B16A16_SSCALED] = { 0,
386
480
A_(C0, C1, C2, C3, SSCALED, SSCALED, SSCALED, SSCALED, 16_16_16_16, 0),
387
VERTEX_BUFFER | SAMPLER_VIEW },
389
483
[PIPE_FORMAT_R16G16B16_SSCALED] = { 0,
390
A_(C0, C1, C2, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 16_16_16, 0),
391
VERTEX_BUFFER | SAMPLER_VIEW },
484
A_(C0, C1, C2, ONE_FLOAT, SSCALED, SSCALED, SSCALED, SSCALED, 16_16_16, 0),
393
487
[PIPE_FORMAT_R16G16_SSCALED] = { 0,
394
A_(C0, C1, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 16_16, 0),
395
VERTEX_BUFFER | SAMPLER_VIEW },
488
A_(C0, C1, ZERO, ONE_FLOAT, SSCALED, SSCALED, SSCALED, SSCALED, 16_16, 0),
397
491
[PIPE_FORMAT_R16_SSCALED] = { 0,
398
A_(C0, ZERO, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 16, 0),
399
VERTEX_BUFFER | SAMPLER_VIEW },
492
A_(C0, ZERO, ZERO, ONE_FLOAT, SSCALED, SSCALED, SSCALED, SSCALED, 16, 0),
403
497
[PIPE_FORMAT_R16G16B16A16_USCALED] = { 0,
404
498
A_(C0, C1, C2, C3, USCALED, USCALED, USCALED, USCALED, 16_16_16_16, 0),
405
VERTEX_BUFFER | SAMPLER_VIEW },
407
501
[PIPE_FORMAT_R16G16B16_USCALED] = { 0,
408
A_(C0, C1, C2, ONE, USCALED, USCALED, USCALED, USCALED, 16_16_16, 0),
409
VERTEX_BUFFER | SAMPLER_VIEW },
502
A_(C0, C1, C2, ONE_FLOAT, USCALED, USCALED, USCALED, USCALED, 16_16_16, 0),
411
505
[PIPE_FORMAT_R16G16_USCALED] = { 0,
412
A_(C0, C1, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 16_16, 0),
413
VERTEX_BUFFER | SAMPLER_VIEW },
506
A_(C0, C1, ZERO, ONE_FLOAT, USCALED, USCALED, USCALED, USCALED, 16_16, 0),
415
509
[PIPE_FORMAT_R16_USCALED] = { 0,
416
A_(C0, ZERO, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 16, 0),
417
VERTEX_BUFFER | SAMPLER_VIEW },
510
A_(C0, ZERO, ZERO, ONE_FLOAT, USCALED, USCALED, USCALED, USCALED, 16, 0),
421
515
[PIPE_FORMAT_R8G8B8A8_SSCALED] = { 0,
422
516
A_(C0, C1, C2, C3, SSCALED, SSCALED, SSCALED, SSCALED, 8_8_8_8, 0),
423
VERTEX_BUFFER | SAMPLER_VIEW },
425
519
[PIPE_FORMAT_R8G8B8_SSCALED] = { 0,
426
A_(C0, C1, C2, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 8_8_8, 0),
427
VERTEX_BUFFER | SAMPLER_VIEW },
520
A_(C0, C1, C2, ONE_FLOAT, SSCALED, SSCALED, SSCALED, SSCALED, 8_8_8, 0),
429
523
[PIPE_FORMAT_R8G8_SSCALED] = { 0,
430
A_(C0, C1, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 8_8, 0),
431
VERTEX_BUFFER | SAMPLER_VIEW },
524
A_(C0, C1, ZERO, ONE_FLOAT, SSCALED, SSCALED, SSCALED, SSCALED, 8_8, 0),
433
527
[PIPE_FORMAT_R8_SSCALED] = { 0,
434
A_(C0, ZERO, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 8, 0),
435
VERTEX_BUFFER | SAMPLER_VIEW },
528
A_(C0, ZERO, ZERO, ONE_FLOAT, SSCALED, SSCALED, SSCALED, SSCALED, 8, 0),
439
533
[PIPE_FORMAT_R8G8B8A8_USCALED] = { 0,
440
534
A_(C0, C1, C2, C3, USCALED, USCALED, USCALED, USCALED, 8_8_8_8, 0),
441
VERTEX_BUFFER | SAMPLER_VIEW },
443
537
[PIPE_FORMAT_R8G8B8_USCALED] = { 0,
444
A_(C0, C1, C2, ONE, USCALED, USCALED, USCALED, USCALED, 8_8_8, 0),
445
VERTEX_BUFFER | SAMPLER_VIEW },
538
A_(C0, C1, C2, ONE_FLOAT, USCALED, USCALED, USCALED, USCALED, 8_8_8, 0),
447
541
[PIPE_FORMAT_R8G8_USCALED] = { 0,
448
A_(C0, C1, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 8_8, 0),
449
VERTEX_BUFFER | SAMPLER_VIEW },
542
A_(C0, C1, ZERO, ONE_FLOAT, USCALED, USCALED, USCALED, USCALED, 8_8, 0),
451
545
[PIPE_FORMAT_R8_USCALED] = { 0,
452
A_(C0, ZERO, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 8, 0),
453
VERTEX_BUFFER | SAMPLER_VIEW },
546
A_(C0, ZERO, ZERO, ONE_FLOAT, USCALED, USCALED, USCALED, USCALED, 8, 0),
551
[PIPE_FORMAT_R8G8_B8G8_UNORM] = { 0,
552
B_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, C1_C2_C1_C0, 0),
555
[PIPE_FORMAT_G8R8_G8B8_UNORM] = { 0,
556
B_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, C2_C1_C0_C1, 0),
559
[PIPE_FORMAT_R8SG8SB8UX8U_NORM] = { 0,
560
B_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, UNORM, UNORM, 8_8_8_8, 0),
563
[PIPE_FORMAT_R5SG5SB6U_NORM] = { 0,
564
B_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, UNORM, UNORM, 6_5_5, 0),
567
[PIPE_FORMAT_R1_UNORM] = { 0,
568
B_(C0, ZERO, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, BITMAP_8X8, 0),
571
[PIPE_FORMAT_A8B8G8R8_UNORM] = { 0,
572
B_(C3, C2, C1, C0, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
575
/* FIXED FORMATS - hw doesn't support these, convert on vbo push for now */
577
[PIPE_FORMAT_R32G32B32A32_FIXED] = { 0,
578
B_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32_32, 0),
581
[PIPE_FORMAT_R32G32B32_FIXED] = { 0,
582
B_(C0, C1, C2, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32, 0),
585
[PIPE_FORMAT_R32G32_FIXED] = { 0,
586
B_(C0, C1, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32_32, 0),
589
[PIPE_FORMAT_R32_FIXED] = { 0,
590
B_(C0, ZERO, ZERO, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0),