zink: simplify modifier ifdefs

these are the only two defines referenced, so they can be defined to 0
for platforms that don't support modifiers in order to remove a ton of
ifdefs and make the code more readable

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11847>
This commit is contained in:
Mike Blumenkrantz
2021-07-13 08:55:27 -04:00
committed by Marge Bot
parent 7f5a01a47d
commit d29c086fb9

View File

@@ -51,6 +51,10 @@
#ifdef ZINK_USE_DMABUF
#include "drm-uapi/drm_fourcc.h"
#else
/* these won't actually be used */
#define DRM_FORMAT_MOD_INVALID 0
#define DRM_FORMAT_MOD_LINEAR 0
#endif
static void
@@ -243,10 +247,8 @@ check_ici(struct zink_screen *screen, VkImageCreateInfo *ici, uint64_t modifier)
{
VkImageFormatProperties image_props;
VkResult ret;
#ifdef ZINK_USE_DMABUF
assert(modifier == DRM_FORMAT_MOD_INVALID ||
(screen->vk.GetPhysicalDeviceImageFormatProperties2 && screen->info.have_EXT_image_drm_format_modifier));
#endif
if (screen->vk.GetPhysicalDeviceImageFormatProperties2) {
VkImageFormatProperties2 props2 = {0};
props2.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
@@ -258,7 +260,6 @@ check_ici(struct zink_screen *screen, VkImageCreateInfo *ici, uint64_t modifier)
info.usage = ici->usage;
info.flags = ici->flags;
#ifdef ZINK_USE_DMABUF
VkPhysicalDeviceImageDrmFormatModifierInfoEXT mod_info;
if (modifier != DRM_FORMAT_MOD_INVALID) {
mod_info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT;
@@ -268,7 +269,6 @@ check_ici(struct zink_screen *screen, VkImageCreateInfo *ici, uint64_t modifier)
mod_info.queueFamilyIndexCount = 0;
info.pNext = &mod_info;
}
#endif
ret = screen->vk.GetPhysicalDeviceImageFormatProperties2(screen->pdev, &info, &props2);
image_props = props2.imageFormatProperties;
} else
@@ -339,7 +339,6 @@ static VkImageUsageFlags
get_image_usage(struct zink_screen *screen, VkImageCreateInfo *ici, const struct pipe_resource *templ, unsigned bind, unsigned modifiers_count, const uint64_t *modifiers, uint64_t *mod)
{
VkImageTiling tiling = ici->tiling;
#ifdef ZINK_USE_DMABUF
*mod = DRM_FORMAT_MOD_INVALID;
if (modifiers_count) {
bool have_linear = false;
@@ -373,7 +372,6 @@ get_image_usage(struct zink_screen *screen, VkImageCreateInfo *ici, const struct
}
}
} else
#endif
{
VkFormatProperties props = screen->format_props[templ->format];
VkFormatFeatureFlags feats = tiling == VK_IMAGE_TILING_LINEAR ? props.linearTilingFeatures : props.optimalTilingFeatures;
@@ -384,9 +382,7 @@ get_image_usage(struct zink_screen *screen, VkImageCreateInfo *ici, const struct
return usage;
}
}
#ifdef ZINK_USE_DMABUF
*mod = DRM_FORMAT_MOD_INVALID;
#endif
return 0;
}
@@ -467,11 +463,7 @@ create_ici(struct zink_screen *screen, VkImageCreateInfo *ici, const struct pipe
bool first = true;
bool tried[2] = {0};
#ifdef ZINK_USE_DMABUF
uint64_t mod = DRM_FORMAT_MOD_INVALID;
#else
uint64_t mod = 0;
#endif
while (!ici->usage) {
if (!first) {
switch (ici->tiling) {
@@ -485,11 +477,7 @@ create_ici(struct zink_screen *screen, VkImageCreateInfo *ici, const struct pipe
case VK_IMAGE_TILING_LINEAR:
if (bind & PIPE_BIND_LINEAR) {
*success = false;
#ifdef ZINK_USE_DMABUF
return DRM_FORMAT_MOD_INVALID;
#else
return 0;
#endif
}
ici->tiling = VK_IMAGE_TILING_OPTIMAL;
break;
@@ -498,11 +486,7 @@ create_ici(struct zink_screen *screen, VkImageCreateInfo *ici, const struct pipe
}
if (tried[ici->tiling]) {
*success = false;
#ifdef ZINK_USE_DMABUF
return DRM_FORMAT_MOD_INVALID;
#else
return 0;
#endif
}
}
ici->usage = get_image_usage(screen, ici, templ, bind, modifiers_count, modifiers, &mod);
@@ -551,21 +535,15 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t
obj->is_buffer = true;
obj->transfer_dst = true;
} else {
#ifdef ZINK_USE_DMABUF
bool winsys_modifier = shared && whandle && whandle->modifier != DRM_FORMAT_MOD_INVALID;
#else
bool winsys_modifier = false;
#endif
const uint64_t *ici_modifiers = winsys_modifier ? &whandle->modifier : modifiers;
unsigned ici_modifier_count = winsys_modifier ? 1 : modifiers_count;
bool success = false;
VkImageCreateInfo ici = {0};
uint64_t mod = create_ici(screen, &ici, templ, templ->bind, ici_modifier_count, ici_modifiers, &success);
VkExternalMemoryImageCreateInfo emici = {0};
#ifdef ZINK_USE_DMABUF
VkImageDrmFormatModifierExplicitCreateInfoEXT idfmeci = {0};
VkImageDrmFormatModifierListCreateInfoEXT idfmlci;
#endif
if (!success)
goto fail1;
@@ -574,7 +552,6 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t
emici.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT;
ici.pNext = &emici;
#ifdef ZINK_USE_DMABUF
assert(ici.tiling != VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT || mod != DRM_FORMAT_MOD_INVALID);
if (winsys_modifier && ici.tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT) {
assert(mod == whandle->modifier);
@@ -604,9 +581,7 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t
idfmlci.drmFormatModifierCount = 1;
idfmlci.pDrmFormatModifiers = &mod;
ici.pNext = &idfmlci;
} else
#endif
if (ici.tiling == VK_IMAGE_TILING_OPTIMAL) {
} else if (ici.tiling == VK_IMAGE_TILING_OPTIMAL) {
// TODO: remove for wsi
ici.pNext = NULL;
scanout = false;
@@ -892,7 +867,6 @@ zink_resource_get_param(struct pipe_screen *pscreen, struct pipe_context *pctx,
}
case PIPE_RESOURCE_PARAM_MODIFIER: {
#ifdef ZINK_USE_DMABUF
*value = DRM_FORMAT_MOD_INVALID;
if (!screen->info.have_EXT_image_drm_format_modifier)
return false;
@@ -902,9 +876,6 @@ zink_resource_get_param(struct pipe_screen *pscreen, struct pipe_context *pctx,
if (screen->vk.GetImageDrmFormatModifierPropertiesEXT(screen->dev, obj->image, &prop) == VK_SUCCESS)
*value = prop.drmFormatModifier;
break;
#else
return false;
#endif
}
case PIPE_RESOURCE_PARAM_LAYER_STRIDE: {