aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_surface_formats.c
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-07-26 20:59:38 -0700
committerJason Ekstrand <[email protected]>2016-08-23 11:45:24 -0700
commitf6967ddd32d2e93b1de149251bce6317a773fd3d (patch)
tree10b3e9f65ba4ed7ccb98bac2983408a7bf79db95 /src/mesa/drivers/dri/i965/brw_surface_formats.c
parentfb90291dd5a734de3eb2ab59d883df3d2f9db0c7 (diff)
i965/surface_formats: Don't advertise 8 or 16-bit RGB formats
We have implicitly been not advertising these formats since we had them turned off in the format capabilities table. We are about to update that table and this prevents a change in behavior. The only change in behavior created by this patch is that we no longer advertise support for R16G16B16_FLOAT which means that it's now renderable which seems like a bonus. Maybe someday we'll want to change things to start supporting 16-bit RGB formats natively but, at the moment, there's no need. Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Nanley Chery <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_surface_formats.c')
-rw-r--r--src/mesa/drivers/dri/i965/brw_surface_formats.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_surface_formats.c b/src/mesa/drivers/dri/i965/brw_surface_formats.c
index 2543f4b514f..a9d8544f340 100644
--- a/src/mesa/drivers/dri/i965/brw_surface_formats.c
+++ b/src/mesa/drivers/dri/i965/brw_surface_formats.c
@@ -311,6 +311,16 @@ brw_init_surface_formats(struct brw_context *brw)
if (texture == 0 && format != MESA_FORMAT_RGBA_FLOAT32)
continue;
+ /* Don't advertise 8 and 16-bit RGB formats to core mesa. This ensures
+ * that they are renderable from an API perspective since core mesa will
+ * fall back to RGBA or RGBX (we can't render to non-power-of-two
+ * formats). For 8-bit, formats, this also keeps us from hitting some
+ * nasty corners in intel_miptree_map_blit if you ever try to map one.
+ */
+ int format_size = _mesa_get_format_bytes(format);
+ if (format_size == 3 || format_size == 6)
+ continue;
+
if (isl_format_supports_sampling(devinfo, texture) &&
(isl_format_supports_filtering(devinfo, texture) || is_integer))
ctx->TextureFormatSupported[format] = true;