Mesa (main): zink: move void format detection function to zink_format
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Aug 24 21:37:25 UTC 2021
Module: Mesa
Branch: main
Commit: 08bad3b2b87e6aef3d7ef80f835a137cd0f64e81
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=08bad3b2b87e6aef3d7ef80f835a137cd0f64e81
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Tue Apr 6 10:18:41 2021 -0400
zink: move void format detection function to zink_format
Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12529>
---
src/gallium/drivers/zink/zink_context.c | 27 +++------------------------
src/gallium/drivers/zink/zink_format.c | 25 +++++++++++++++++++++++++
src/gallium/drivers/zink/zink_format.h | 3 +++
3 files changed, 31 insertions(+), 24 deletions(-)
diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c
index 1ff2edbaa42..bed0def0075 100644
--- a/src/gallium/drivers/zink/zink_context.c
+++ b/src/gallium/drivers/zink/zink_context.c
@@ -26,6 +26,7 @@
#include "zink_batch.h"
#include "zink_compiler.h"
#include "zink_fence.h"
+#include "zink_format.h"
#include "zink_framebuffer.h"
#include "zink_helpers.h"
#include "zink_program.h"
@@ -692,28 +693,6 @@ clamp_zs_swizzle(enum pipe_swizzle swizzle)
return swizzle;
}
-static inline bool
-format_is_usable_rgba_variant(const struct util_format_description *desc)
-{
- unsigned chan;
-
- if(desc->block.width != 1 ||
- desc->block.height != 1 ||
- (desc->block.bits != 32 && desc->block.bits != 64))
- return false;
-
- if (desc->nr_channels != 4)
- return false;
-
- unsigned size = desc->channel[0].size;
- for(chan = 0; chan < 4; ++chan) {
- if(desc->channel[chan].size != size)
- return false;
- }
-
- return true;
-}
-
static struct pipe_sampler_view *
zink_create_sampler_view(struct pipe_context *pctx, struct pipe_resource *pres,
const struct pipe_sampler_view *state)
@@ -753,8 +732,8 @@ zink_create_sampler_view(struct pipe_context *pctx, struct pipe_resource *pres,
/* if we have e.g., R8G8B8X8, then we have to ignore alpha since we're just emulating
* these formats
*/
- const struct util_format_description *desc = util_format_description(state->format);
- if (format_is_usable_rgba_variant(desc)) {
+ if (zink_format_is_voidable_rgba_variant(state->format)) {
+ const struct util_format_description *desc = util_format_description(state->format);
sampler_view->base.swizzle_r = clamp_void_swizzle(desc, sampler_view->base.swizzle_r);
sampler_view->base.swizzle_g = clamp_void_swizzle(desc, sampler_view->base.swizzle_g);
sampler_view->base.swizzle_b = clamp_void_swizzle(desc, sampler_view->base.swizzle_b);
diff --git a/src/gallium/drivers/zink/zink_format.c b/src/gallium/drivers/zink/zink_format.c
index 3e1bea65725..87c1ea548b5 100644
--- a/src/gallium/drivers/zink/zink_format.c
+++ b/src/gallium/drivers/zink/zink_format.c
@@ -1,3 +1,4 @@
+#include "util/format/u_format.h"
#include "zink_format.h"
static const VkFormat formats[PIPE_FORMAT_COUNT] = {
@@ -152,3 +153,27 @@ zink_pipe_format_to_vk_format(enum pipe_format format)
{
return formats[format];
}
+
+
+bool
+zink_format_is_voidable_rgba_variant(enum pipe_format format)
+{
+ const struct util_format_description *desc = util_format_description(format);
+ unsigned chan;
+
+ if(desc->block.width != 1 ||
+ desc->block.height != 1 ||
+ (desc->block.bits != 32 && desc->block.bits != 64))
+ return false;
+
+ if (desc->nr_channels != 4)
+ return false;
+
+ unsigned size = desc->channel[0].size;
+ for(chan = 0; chan < 4; ++chan) {
+ if(desc->channel[chan].size != size)
+ return false;
+ }
+
+ return true;
+}
diff --git a/src/gallium/drivers/zink/zink_format.h b/src/gallium/drivers/zink/zink_format.h
index 966ee9bd9a8..5f81a78b10e 100644
--- a/src/gallium/drivers/zink/zink_format.h
+++ b/src/gallium/drivers/zink/zink_format.h
@@ -26,9 +26,12 @@
#include "pipe/p_format.h"
+#include <stdbool.h>
#include <vulkan/vulkan.h>
VkFormat
zink_pipe_format_to_vk_format(enum pipe_format format);
+bool
+zink_format_is_voidable_rgba_variant(enum pipe_format format);
#endif
More information about the mesa-commit
mailing list