}
}
+static uint32_t
+pipe_to_pan_bind_flags(uint32_t pipe_bind_flags)
+{
+ static_assert(PIPE_BIND_DEPTH_STENCIL == PAN_BIND_DEPTH_STENCIL, "");
+ static_assert(PIPE_BIND_RENDER_TARGET == PAN_BIND_RENDER_TARGET, "");
+ static_assert(PIPE_BIND_SAMPLER_VIEW == PAN_BIND_SAMPLER_VIEW, "");
+ static_assert(PIPE_BIND_VERTEX_BUFFER == PAN_BIND_VERTEX_BUFFER, "");
+
+ return pipe_bind_flags & (PAN_BIND_DEPTH_STENCIL | PAN_BIND_RENDER_TARGET |
+ PAN_BIND_VERTEX_BUFFER | PAN_BIND_SAMPLER_VIEW);
+}
+
/**
* Query format support for creating a texture, drawing surface, etc.
* \param format the format to test
/* Check we support the format with the given bind */
- unsigned relevant_bind =
- bind & (PIPE_BIND_DEPTH_STENCIL | PIPE_BIND_RENDER_TARGET |
- PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_SAMPLER_VIEW);
+ unsigned pan_bind_flags = pipe_to_pan_bind_flags(bind);
struct panfrost_format fmt = dev->formats[format];
if (!supported)
return false;
- return MALI_EXTRACT_INDEX(fmt.hw) && ((relevant_bind & ~fmt.bind) == 0);
+ return MALI_EXTRACT_INDEX(fmt.hw) && ((pan_bind_flags & ~fmt.bind) == 0);
}
/* We always support linear and tiled operations, both external and internal.
/* Convenience */
-#define _V PIPE_BIND_VERTEX_BUFFER
-#define _T PIPE_BIND_SAMPLER_VIEW
-#define _R PIPE_BIND_RENDER_TARGET
-#define _Z PIPE_BIND_DEPTH_STENCIL
+#define _V PAN_BIND_VERTEX_BUFFER
+#define _T PAN_BIND_SAMPLER_VIEW
+#define _R PAN_BIND_RENDER_TARGET
+#define _Z PAN_BIND_DEPTH_STENCIL
#define FLAGS_V___ (_V)
#define FLAGS__T__ (_T)
typedef uint32_t mali_pixel_format;
+/* pan bind flags */
+#define PAN_BIND_DEPTH_STENCIL (1 << 0)
+#define PAN_BIND_RENDER_TARGET (1 << 1)
+#define PAN_BIND_SAMPLER_VIEW (1 << 3)
+#define PAN_BIND_VERTEX_BUFFER (1 << 4)
+
struct panfrost_format {
mali_pixel_format hw;
unsigned bind;
buffer |=
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
- if (fmt.bind & PIPE_BIND_VERTEX_BUFFER)
+ if (fmt.bind & PAN_BIND_VERTEX_BUFFER)
buffer |= VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT;
- if (fmt.bind & PIPE_BIND_SAMPLER_VIEW) {
+ if (fmt.bind & PAN_BIND_SAMPLER_VIEW) {
tex |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT |
VK_FORMAT_FEATURE_TRANSFER_DST_BIT |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT |
}
/* SNORM rendering isn't working yet, disable */
- if (fmt.bind & PIPE_BIND_RENDER_TARGET && !util_format_is_snorm(pfmt)) {
+ if (fmt.bind & PAN_BIND_RENDER_TARGET && !util_format_is_snorm(pfmt)) {
tex |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT;
tex |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT;
}
- if (fmt.bind & PIPE_BIND_DEPTH_STENCIL)
+ if (fmt.bind & PAN_BIND_DEPTH_STENCIL)
tex |= VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT;
end: