Mesa (master): turnip: Disallow NPoT formats.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Sep 27 13:26:07 UTC 2019
Module: Mesa
Branch: master
Commit: fa522b8a4745e5a1e3f54528f18094775d7c597b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fa522b8a4745e5a1e3f54528f18094775d7c597b
Author: Bas Nieuwenhuizen <basni at chromium.org>
Date: Thu Sep 19 23:34:36 2019 +0200
turnip: Disallow NPoT formats.
Copying is a mess for these formats for now.
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>
Reviewed-by: Eric Anholt <eric at anholt.net>
---
src/freedreno/vulkan/tu_formats.c | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/src/freedreno/vulkan/tu_formats.c b/src/freedreno/vulkan/tu_formats.c
index 5ae04d1e6ad..095f77570ba 100644
--- a/src/freedreno/vulkan/tu_formats.c
+++ b/src/freedreno/vulkan/tu_formats.c
@@ -614,15 +614,26 @@ tu_physical_device_get_format_properties(
const struct vk_format_description *desc = vk_format_description(format);
const struct tu_native_format *native_fmt = tu6_get_native_format(format);
if (!desc || !native_fmt) {
- out_properties->linearTilingFeatures = linear;
- out_properties->optimalTilingFeatures = tiled;
- out_properties->bufferFeatures = buffer;
- return;
+ goto end;
}
- linear |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
- tiled |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
buffer |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
+ if (native_fmt->vtx >= 0) {
+ buffer |= VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT;
+ }
+
+ /*
+ * The non-power-of-two formats cannot be copied, so to make sure nothing
+ * broken is allowed don't allow these formats at all.
+ */
+ if (!util_is_power_of_two_or_zero(vk_format_get_blocksizebits(format))) {
+ goto end;
+ }
+
+ if (native_fmt->tex >= 0 || native_fmt->rb >= 0) {
+ linear |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
+ tiled |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
+ }
if (native_fmt->tex >= 0) {
linear |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
@@ -635,10 +646,7 @@ tu_physical_device_get_format_properties(
tiled |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT;
}
- if (native_fmt->vtx >= 0) {
- buffer |= VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT;
- }
-
+end:
out_properties->linearTilingFeatures = linear;
out_properties->optimalTilingFeatures = tiled;
out_properties->bufferFeatures = buffer;
More information about the mesa-commit
mailing list