2 * Mesa 3-D graphics library
4 * Copyright (C) 2012-2013 LunarG, Inc.
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
13 * The above copyright notice and this permission notice shall be included
14 * in all copies or substantial portions of the Software.
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
25 * Chia-I Wu <olv@lunarg.com>
28 #include "genhw/genhw.h"
29 #include "ilo_state_surface.h"
32 surface_valid_sampler_format(const struct ilo_dev
*dev
,
33 enum ilo_state_surface_access access
,
34 enum gen_surface_format format
)
37 * This table is based on:
39 * - the Sandy Bridge PRM, volume 4 part 1, page 88-97
40 * - the Ivy Bridge PRM, volume 4 part 1, page 84-87
42 static const struct sampler_cap
{
48 #define CAP(sampling, filtering, shadow_map, chroma_key) \
49 { ILO_GEN(sampling), ILO_GEN(filtering), ILO_GEN(shadow_map), ILO_GEN(chroma_key) }
50 [GEN6_FORMAT_R32G32B32A32_FLOAT
] = CAP( 1, 5, 0, 0),
51 [GEN6_FORMAT_R32G32B32A32_SINT
] = CAP( 1, 0, 0, 0),
52 [GEN6_FORMAT_R32G32B32A32_UINT
] = CAP( 1, 0, 0, 0),
53 [GEN6_FORMAT_R32G32B32X32_FLOAT
] = CAP( 1, 5, 0, 0),
54 [GEN6_FORMAT_R32G32B32_FLOAT
] = CAP( 1, 5, 0, 0),
55 [GEN6_FORMAT_R32G32B32_SINT
] = CAP( 1, 0, 0, 0),
56 [GEN6_FORMAT_R32G32B32_UINT
] = CAP( 1, 0, 0, 0),
57 [GEN6_FORMAT_R16G16B16A16_UNORM
] = CAP( 1, 1, 0, 0),
58 [GEN6_FORMAT_R16G16B16A16_SNORM
] = CAP( 1, 1, 0, 0),
59 [GEN6_FORMAT_R16G16B16A16_SINT
] = CAP( 1, 0, 0, 0),
60 [GEN6_FORMAT_R16G16B16A16_UINT
] = CAP( 1, 0, 0, 0),
61 [GEN6_FORMAT_R16G16B16A16_FLOAT
] = CAP( 1, 1, 0, 0),
62 [GEN6_FORMAT_R32G32_FLOAT
] = CAP( 1, 5, 0, 0),
63 [GEN6_FORMAT_R32G32_SINT
] = CAP( 1, 0, 0, 0),
64 [GEN6_FORMAT_R32G32_UINT
] = CAP( 1, 0, 0, 0),
65 [GEN6_FORMAT_R32_FLOAT_X8X24_TYPELESS
] = CAP( 1, 5, 1, 0),
66 [GEN6_FORMAT_X32_TYPELESS_G8X24_UINT
] = CAP( 1, 0, 0, 0),
67 [GEN6_FORMAT_L32A32_FLOAT
] = CAP( 1, 5, 0, 0),
68 [GEN6_FORMAT_R16G16B16X16_UNORM
] = CAP( 1, 1, 0, 0),
69 [GEN6_FORMAT_R16G16B16X16_FLOAT
] = CAP( 1, 1, 0, 0),
70 [GEN6_FORMAT_A32X32_FLOAT
] = CAP( 1, 5, 0, 0),
71 [GEN6_FORMAT_L32X32_FLOAT
] = CAP( 1, 5, 0, 0),
72 [GEN6_FORMAT_I32X32_FLOAT
] = CAP( 1, 5, 0, 0),
73 [GEN6_FORMAT_B8G8R8A8_UNORM
] = CAP( 1, 1, 0, 1),
74 [GEN6_FORMAT_B8G8R8A8_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
75 [GEN6_FORMAT_R10G10B10A2_UNORM
] = CAP( 1, 1, 0, 0),
76 [GEN6_FORMAT_R10G10B10A2_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
77 [GEN6_FORMAT_R10G10B10A2_UINT
] = CAP( 1, 0, 0, 0),
78 [GEN6_FORMAT_R10G10B10_SNORM_A2_UNORM
] = CAP( 1, 1, 0, 0),
79 [GEN6_FORMAT_R8G8B8A8_UNORM
] = CAP( 1, 1, 0, 0),
80 [GEN6_FORMAT_R8G8B8A8_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
81 [GEN6_FORMAT_R8G8B8A8_SNORM
] = CAP( 1, 1, 0, 0),
82 [GEN6_FORMAT_R8G8B8A8_SINT
] = CAP( 1, 0, 0, 0),
83 [GEN6_FORMAT_R8G8B8A8_UINT
] = CAP( 1, 0, 0, 0),
84 [GEN6_FORMAT_R16G16_UNORM
] = CAP( 1, 1, 0, 0),
85 [GEN6_FORMAT_R16G16_SNORM
] = CAP( 1, 1, 0, 0),
86 [GEN6_FORMAT_R16G16_SINT
] = CAP( 1, 0, 0, 0),
87 [GEN6_FORMAT_R16G16_UINT
] = CAP( 1, 0, 0, 0),
88 [GEN6_FORMAT_R16G16_FLOAT
] = CAP( 1, 1, 0, 0),
89 [GEN6_FORMAT_B10G10R10A2_UNORM
] = CAP( 1, 1, 0, 0),
90 [GEN6_FORMAT_B10G10R10A2_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
91 [GEN6_FORMAT_R11G11B10_FLOAT
] = CAP( 1, 1, 0, 0),
92 [GEN6_FORMAT_R32_SINT
] = CAP( 1, 0, 0, 0),
93 [GEN6_FORMAT_R32_UINT
] = CAP( 1, 0, 0, 0),
94 [GEN6_FORMAT_R32_FLOAT
] = CAP( 1, 5, 1, 0),
95 [GEN6_FORMAT_R24_UNORM_X8_TYPELESS
] = CAP( 1, 5, 1, 0),
96 [GEN6_FORMAT_X24_TYPELESS_G8_UINT
] = CAP( 1, 0, 0, 0),
97 [GEN6_FORMAT_L16A16_UNORM
] = CAP( 1, 1, 0, 0),
98 [GEN6_FORMAT_I24X8_UNORM
] = CAP( 1, 5, 1, 0),
99 [GEN6_FORMAT_L24X8_UNORM
] = CAP( 1, 5, 1, 0),
100 [GEN6_FORMAT_A24X8_UNORM
] = CAP( 1, 5, 1, 0),
101 [GEN6_FORMAT_I32_FLOAT
] = CAP( 1, 5, 1, 0),
102 [GEN6_FORMAT_L32_FLOAT
] = CAP( 1, 5, 1, 0),
103 [GEN6_FORMAT_A32_FLOAT
] = CAP( 1, 5, 1, 0),
104 [GEN6_FORMAT_B8G8R8X8_UNORM
] = CAP( 1, 1, 0, 1),
105 [GEN6_FORMAT_B8G8R8X8_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
106 [GEN6_FORMAT_R8G8B8X8_UNORM
] = CAP( 1, 1, 0, 0),
107 [GEN6_FORMAT_R8G8B8X8_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
108 [GEN6_FORMAT_R9G9B9E5_SHAREDEXP
] = CAP( 1, 1, 0, 0),
109 [GEN6_FORMAT_B10G10R10X2_UNORM
] = CAP( 1, 1, 0, 0),
110 [GEN6_FORMAT_L16A16_FLOAT
] = CAP( 1, 1, 0, 0),
111 [GEN6_FORMAT_B5G6R5_UNORM
] = CAP( 1, 1, 0, 1),
112 [GEN6_FORMAT_B5G6R5_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
113 [GEN6_FORMAT_B5G5R5A1_UNORM
] = CAP( 1, 1, 0, 1),
114 [GEN6_FORMAT_B5G5R5A1_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
115 [GEN6_FORMAT_B4G4R4A4_UNORM
] = CAP( 1, 1, 0, 1),
116 [GEN6_FORMAT_B4G4R4A4_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
117 [GEN6_FORMAT_R8G8_UNORM
] = CAP( 1, 1, 0, 0),
118 [GEN6_FORMAT_R8G8_SNORM
] = CAP( 1, 1, 0, 1),
119 [GEN6_FORMAT_R8G8_SINT
] = CAP( 1, 0, 0, 0),
120 [GEN6_FORMAT_R8G8_UINT
] = CAP( 1, 0, 0, 0),
121 [GEN6_FORMAT_R16_UNORM
] = CAP( 1, 1, 1, 0),
122 [GEN6_FORMAT_R16_SNORM
] = CAP( 1, 1, 0, 0),
123 [GEN6_FORMAT_R16_SINT
] = CAP( 1, 0, 0, 0),
124 [GEN6_FORMAT_R16_UINT
] = CAP( 1, 0, 0, 0),
125 [GEN6_FORMAT_R16_FLOAT
] = CAP( 1, 1, 0, 0),
126 [GEN6_FORMAT_A8P8_UNORM_PALETTE0
] = CAP( 5, 5, 0, 0),
127 [GEN6_FORMAT_A8P8_UNORM_PALETTE1
] = CAP( 5, 5, 0, 0),
128 [GEN6_FORMAT_I16_UNORM
] = CAP( 1, 1, 1, 0),
129 [GEN6_FORMAT_L16_UNORM
] = CAP( 1, 1, 1, 0),
130 [GEN6_FORMAT_A16_UNORM
] = CAP( 1, 1, 1, 0),
131 [GEN6_FORMAT_L8A8_UNORM
] = CAP( 1, 1, 0, 1),
132 [GEN6_FORMAT_I16_FLOAT
] = CAP( 1, 1, 1, 0),
133 [GEN6_FORMAT_L16_FLOAT
] = CAP( 1, 1, 1, 0),
134 [GEN6_FORMAT_A16_FLOAT
] = CAP( 1, 1, 1, 0),
135 [GEN6_FORMAT_L8A8_UNORM_SRGB
] = CAP(4.5, 4.5, 0, 0),
136 [GEN6_FORMAT_R5G5_SNORM_B6_UNORM
] = CAP( 1, 1, 0, 1),
137 [GEN6_FORMAT_P8A8_UNORM_PALETTE0
] = CAP( 5, 5, 0, 0),
138 [GEN6_FORMAT_P8A8_UNORM_PALETTE1
] = CAP( 5, 5, 0, 0),
139 [GEN6_FORMAT_R8_UNORM
] = CAP( 1, 1, 0, 4.5),
140 [GEN6_FORMAT_R8_SNORM
] = CAP( 1, 1, 0, 0),
141 [GEN6_FORMAT_R8_SINT
] = CAP( 1, 0, 0, 0),
142 [GEN6_FORMAT_R8_UINT
] = CAP( 1, 0, 0, 0),
143 [GEN6_FORMAT_A8_UNORM
] = CAP( 1, 1, 0, 1),
144 [GEN6_FORMAT_I8_UNORM
] = CAP( 1, 1, 0, 0),
145 [GEN6_FORMAT_L8_UNORM
] = CAP( 1, 1, 0, 1),
146 [GEN6_FORMAT_P4A4_UNORM_PALETTE0
] = CAP( 1, 1, 0, 0),
147 [GEN6_FORMAT_A4P4_UNORM_PALETTE0
] = CAP( 1, 1, 0, 0),
148 [GEN6_FORMAT_P8_UNORM_PALETTE0
] = CAP(4.5, 4.5, 0, 0),
149 [GEN6_FORMAT_L8_UNORM_SRGB
] = CAP(4.5, 4.5, 0, 0),
150 [GEN6_FORMAT_P8_UNORM_PALETTE1
] = CAP(4.5, 4.5, 0, 0),
151 [GEN6_FORMAT_P4A4_UNORM_PALETTE1
] = CAP(4.5, 4.5, 0, 0),
152 [GEN6_FORMAT_A4P4_UNORM_PALETTE1
] = CAP(4.5, 4.5, 0, 0),
153 [GEN6_FORMAT_DXT1_RGB_SRGB
] = CAP(4.5, 4.5, 0, 0),
154 [GEN6_FORMAT_R1_UNORM
] = CAP( 1, 1, 0, 0),
155 [GEN6_FORMAT_YCRCB_NORMAL
] = CAP( 1, 1, 0, 1),
156 [GEN6_FORMAT_YCRCB_SWAPUVY
] = CAP( 1, 1, 0, 1),
157 [GEN6_FORMAT_P2_UNORM_PALETTE0
] = CAP(4.5, 4.5, 0, 0),
158 [GEN6_FORMAT_P2_UNORM_PALETTE1
] = CAP(4.5, 4.5, 0, 0),
159 [GEN6_FORMAT_BC1_UNORM
] = CAP( 1, 1, 0, 1),
160 [GEN6_FORMAT_BC2_UNORM
] = CAP( 1, 1, 0, 1),
161 [GEN6_FORMAT_BC3_UNORM
] = CAP( 1, 1, 0, 1),
162 [GEN6_FORMAT_BC4_UNORM
] = CAP( 1, 1, 0, 0),
163 [GEN6_FORMAT_BC5_UNORM
] = CAP( 1, 1, 0, 0),
164 [GEN6_FORMAT_BC1_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
165 [GEN6_FORMAT_BC2_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
166 [GEN6_FORMAT_BC3_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
167 [GEN6_FORMAT_MONO8
] = CAP( 1, 0, 0, 0),
168 [GEN6_FORMAT_YCRCB_SWAPUV
] = CAP( 1, 1, 0, 0),
169 [GEN6_FORMAT_YCRCB_SWAPY
] = CAP( 1, 1, 0, 0),
170 [GEN6_FORMAT_DXT1_RGB
] = CAP( 1, 1, 0, 0),
171 [GEN6_FORMAT_FXT1
] = CAP( 1, 1, 0, 0),
172 [GEN6_FORMAT_BC4_SNORM
] = CAP( 1, 1, 0, 0),
173 [GEN6_FORMAT_BC5_SNORM
] = CAP( 1, 1, 0, 0),
174 [GEN6_FORMAT_R16G16B16_FLOAT
] = CAP( 5, 5, 0, 0),
175 [GEN6_FORMAT_BC6H_SF16
] = CAP( 7, 7, 0, 0),
176 [GEN6_FORMAT_BC7_UNORM
] = CAP( 7, 7, 0, 0),
177 [GEN6_FORMAT_BC7_UNORM_SRGB
] = CAP( 7, 7, 0, 0),
178 [GEN6_FORMAT_BC6H_UF16
] = CAP( 7, 7, 0, 0),
182 ILO_DEV_ASSERT(dev
, 6, 8);
184 return (format
< ARRAY_SIZE(caps
) && caps
[format
].sampling
&&
185 ilo_dev_gen(dev
) >= caps
[format
].sampling
);
189 surface_valid_dp_format(const struct ilo_dev
*dev
,
190 enum ilo_state_surface_access access
,
191 enum gen_surface_format format
)
194 * This table is based on:
196 * - the Sandy Bridge PRM, volume 4 part 1, page 88-97
197 * - the Ivy Bridge PRM, volume 4 part 1, page 172, 252-253, and 277-278
198 * - the Haswell PRM, volume 7, page 262-264
200 static const struct dp_cap
{
202 int rt_write_blending
;
204 int media_color_processing
;
206 #define CAP(rt_write, rt_write_blending, typed_write, media_color_processing) \
207 { ILO_GEN(rt_write), ILO_GEN(rt_write_blending), ILO_GEN(typed_write), ILO_GEN(media_color_processing) }
208 [GEN6_FORMAT_R32G32B32A32_FLOAT
] = CAP( 1, 1, 7, 0),
209 [GEN6_FORMAT_R32G32B32A32_SINT
] = CAP( 1, 0, 7, 0),
210 [GEN6_FORMAT_R32G32B32A32_UINT
] = CAP( 1, 0, 7, 0),
211 [GEN6_FORMAT_R16G16B16A16_UNORM
] = CAP( 1, 4.5, 7, 6),
212 [GEN6_FORMAT_R16G16B16A16_SNORM
] = CAP( 1, 6, 7, 0),
213 [GEN6_FORMAT_R16G16B16A16_SINT
] = CAP( 1, 0, 7, 0),
214 [GEN6_FORMAT_R16G16B16A16_UINT
] = CAP( 1, 0, 7, 0),
215 [GEN6_FORMAT_R16G16B16A16_FLOAT
] = CAP( 1, 1, 7, 0),
216 [GEN6_FORMAT_R32G32_FLOAT
] = CAP( 1, 1, 7, 0),
217 [GEN6_FORMAT_R32G32_SINT
] = CAP( 1, 0, 7, 0),
218 [GEN6_FORMAT_R32G32_UINT
] = CAP( 1, 0, 7, 0),
219 [GEN6_FORMAT_B8G8R8A8_UNORM
] = CAP( 1, 1, 7, 6),
220 [GEN6_FORMAT_B8G8R8A8_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
221 [GEN6_FORMAT_R10G10B10A2_UNORM
] = CAP( 1, 1, 7, 6),
222 [GEN6_FORMAT_R10G10B10A2_UNORM_SRGB
] = CAP( 0, 0, 0, 6),
223 [GEN6_FORMAT_R10G10B10A2_UINT
] = CAP( 1, 0, 7, 0),
224 [GEN6_FORMAT_R8G8B8A8_UNORM
] = CAP( 1, 1, 7, 6),
225 [GEN6_FORMAT_R8G8B8A8_UNORM_SRGB
] = CAP( 1, 1, 0, 6),
226 [GEN6_FORMAT_R8G8B8A8_SNORM
] = CAP( 1, 6, 7, 0),
227 [GEN6_FORMAT_R8G8B8A8_SINT
] = CAP( 1, 0, 7, 0),
228 [GEN6_FORMAT_R8G8B8A8_UINT
] = CAP( 1, 0, 7, 0),
229 [GEN6_FORMAT_R16G16_UNORM
] = CAP( 1, 4.5, 7, 0),
230 [GEN6_FORMAT_R16G16_SNORM
] = CAP( 1, 6, 7, 0),
231 [GEN6_FORMAT_R16G16_SINT
] = CAP( 1, 0, 7, 0),
232 [GEN6_FORMAT_R16G16_UINT
] = CAP( 1, 0, 7, 0),
233 [GEN6_FORMAT_R16G16_FLOAT
] = CAP( 1, 1, 7, 0),
234 [GEN6_FORMAT_B10G10R10A2_UNORM
] = CAP( 1, 1, 7, 6),
235 [GEN6_FORMAT_B10G10R10A2_UNORM_SRGB
] = CAP( 1, 1, 0, 6),
236 [GEN6_FORMAT_R11G11B10_FLOAT
] = CAP( 1, 1, 7, 0),
237 [GEN6_FORMAT_R32_SINT
] = CAP( 1, 0, 7, 0),
238 [GEN6_FORMAT_R32_UINT
] = CAP( 1, 0, 7, 0),
239 [GEN6_FORMAT_R32_FLOAT
] = CAP( 1, 1, 7, 0),
240 [GEN6_FORMAT_B8G8R8X8_UNORM
] = CAP( 0, 0, 0, 6),
241 [GEN6_FORMAT_B5G6R5_UNORM
] = CAP( 1, 1, 7, 0),
242 [GEN6_FORMAT_B5G6R5_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
243 [GEN6_FORMAT_B5G5R5A1_UNORM
] = CAP( 1, 1, 7, 0),
244 [GEN6_FORMAT_B5G5R5A1_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
245 [GEN6_FORMAT_B4G4R4A4_UNORM
] = CAP( 1, 1, 7, 0),
246 [GEN6_FORMAT_B4G4R4A4_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
247 [GEN6_FORMAT_R8G8_UNORM
] = CAP( 1, 1, 7, 0),
248 [GEN6_FORMAT_R8G8_SNORM
] = CAP( 1, 6, 7, 0),
249 [GEN6_FORMAT_R8G8_SINT
] = CAP( 1, 0, 7, 0),
250 [GEN6_FORMAT_R8G8_UINT
] = CAP( 1, 0, 7, 0),
251 [GEN6_FORMAT_R16_UNORM
] = CAP( 1, 4.5, 7, 7),
252 [GEN6_FORMAT_R16_SNORM
] = CAP( 1, 6, 7, 0),
253 [GEN6_FORMAT_R16_SINT
] = CAP( 1, 0, 7, 0),
254 [GEN6_FORMAT_R16_UINT
] = CAP( 1, 0, 7, 0),
255 [GEN6_FORMAT_R16_FLOAT
] = CAP( 1, 1, 7, 0),
256 [GEN6_FORMAT_B5G5R5X1_UNORM
] = CAP( 1, 1, 7, 0),
257 [GEN6_FORMAT_B5G5R5X1_UNORM_SRGB
] = CAP( 1, 1, 0, 0),
258 [GEN6_FORMAT_R8_UNORM
] = CAP( 1, 1, 7, 0),
259 [GEN6_FORMAT_R8_SNORM
] = CAP( 1, 6, 7, 0),
260 [GEN6_FORMAT_R8_SINT
] = CAP( 1, 0, 7, 0),
261 [GEN6_FORMAT_R8_UINT
] = CAP( 1, 0, 7, 0),
262 [GEN6_FORMAT_A8_UNORM
] = CAP( 1, 1, 7, 0),
263 [GEN6_FORMAT_YCRCB_NORMAL
] = CAP( 1, 0, 0, 6),
264 [GEN6_FORMAT_YCRCB_SWAPUVY
] = CAP( 1, 0, 0, 6),
265 [GEN6_FORMAT_YCRCB_SWAPUV
] = CAP( 1, 0, 0, 6),
266 [GEN6_FORMAT_YCRCB_SWAPY
] = CAP( 1, 0, 0, 6),
270 ILO_DEV_ASSERT(dev
, 6, 8);
272 if (format
>= ARRAY_SIZE(caps
))
276 case ILO_STATE_SURFACE_ACCESS_DP_RENDER
:
277 return (caps
[format
].rt_write
&&
278 ilo_dev_gen(dev
) >= caps
[format
].rt_write
);
279 case ILO_STATE_SURFACE_ACCESS_DP_TYPED
:
280 return (caps
[format
].typed_write
&&
281 ilo_dev_gen(dev
) >= caps
[format
].typed_write
);
282 case ILO_STATE_SURFACE_ACCESS_DP_UNTYPED
:
283 return (format
== GEN6_FORMAT_RAW
);
284 case ILO_STATE_SURFACE_ACCESS_DP_DATA
:
285 /* ignored, but can it be raw? */
286 assert(format
!= GEN6_FORMAT_RAW
);
294 surface_valid_svb_format(const struct ilo_dev
*dev
,
295 enum gen_surface_format format
)
297 ILO_DEV_ASSERT(dev
, 6, 8);
300 * This table is based on:
302 * - the Sandy Bridge PRM, volume 4 part 1, page 88-97
303 * - the Ivy Bridge PRM, volume 2 part 1, page 195
304 * - the Haswell PRM, volume 7, page 535
307 case GEN6_FORMAT_R32G32B32A32_FLOAT
:
308 case GEN6_FORMAT_R32G32B32A32_SINT
:
309 case GEN6_FORMAT_R32G32B32A32_UINT
:
310 case GEN6_FORMAT_R32G32B32_FLOAT
:
311 case GEN6_FORMAT_R32G32B32_SINT
:
312 case GEN6_FORMAT_R32G32B32_UINT
:
313 case GEN6_FORMAT_R32G32_FLOAT
:
314 case GEN6_FORMAT_R32G32_SINT
:
315 case GEN6_FORMAT_R32G32_UINT
:
316 case GEN6_FORMAT_R32_SINT
:
317 case GEN6_FORMAT_R32_UINT
:
318 case GEN6_FORMAT_R32_FLOAT
:
326 ilo_state_surface_valid_format(const struct ilo_dev
*dev
,
327 enum ilo_state_surface_access access
,
328 enum gen_surface_format format
)
333 case ILO_STATE_SURFACE_ACCESS_SAMPLER
:
334 valid
= surface_valid_sampler_format(dev
, access
, format
);
336 case ILO_STATE_SURFACE_ACCESS_DP_RENDER
:
337 case ILO_STATE_SURFACE_ACCESS_DP_TYPED
:
338 case ILO_STATE_SURFACE_ACCESS_DP_UNTYPED
:
339 case ILO_STATE_SURFACE_ACCESS_DP_DATA
:
340 valid
= surface_valid_dp_format(dev
, access
, format
);
342 case ILO_STATE_SURFACE_ACCESS_DP_SVB
:
343 valid
= surface_valid_svb_format(dev
, format
);