zink: populate modifier props onto screen object during init
Acked-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10782>
This commit is contained in:
committed by
Marge Bot
parent
8eb91e372b
commit
696542bd3b
@@ -1463,8 +1463,26 @@ populate_format_props(struct zink_screen *screen)
|
||||
if (screen->vk.GetPhysicalDeviceFormatProperties2) {
|
||||
VkFormatProperties2 props = {0};
|
||||
props.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2;
|
||||
|
||||
VkDrmFormatModifierPropertiesListEXT mod_props;
|
||||
VkDrmFormatModifierPropertiesEXT mods[128];
|
||||
if (screen->info.have_EXT_image_drm_format_modifier) {
|
||||
mod_props.sType = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT;
|
||||
mod_props.pNext = NULL;
|
||||
mod_props.drmFormatModifierCount = ARRAY_SIZE(mods);
|
||||
mod_props.pDrmFormatModifierProperties = mods;
|
||||
props.pNext = &mod_props;
|
||||
}
|
||||
screen->vk.GetPhysicalDeviceFormatProperties2(screen->pdev, format, &props);
|
||||
screen->format_props[i] = props.formatProperties;
|
||||
if (screen->info.have_EXT_image_drm_format_modifier && mod_props.drmFormatModifierCount) {
|
||||
screen->modifier_props[i].drmFormatModifierCount = mod_props.drmFormatModifierCount;
|
||||
screen->modifier_props[i].pDrmFormatModifierProperties = ralloc_array(screen, VkDrmFormatModifierPropertiesEXT, mod_props.drmFormatModifierCount);
|
||||
if (mod_props.pDrmFormatModifierProperties) {
|
||||
for (unsigned j = 0; j < mod_props.drmFormatModifierCount; j++)
|
||||
screen->modifier_props[i].pDrmFormatModifierProperties[j] = mod_props.pDrmFormatModifierProperties[j];
|
||||
}
|
||||
}
|
||||
} else
|
||||
vkGetPhysicalDeviceFormatProperties(screen->pdev, format, &screen->format_props[i]);
|
||||
}
|
||||
|
||||
@@ -61,6 +61,11 @@ enum zink_descriptor_mode {
|
||||
ZINK_DESCRIPTOR_MODE_NOTEMPLATES,
|
||||
};
|
||||
|
||||
struct zink_modifier_prop {
|
||||
uint32_t drmFormatModifierCount;
|
||||
VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties;
|
||||
};
|
||||
|
||||
struct zink_screen {
|
||||
struct pipe_screen base;
|
||||
bool threaded;
|
||||
@@ -144,6 +149,7 @@ struct zink_screen {
|
||||
} driconf;
|
||||
|
||||
VkFormatProperties format_props[PIPE_FORMAT_COUNT];
|
||||
struct zink_modifier_prop modifier_props[PIPE_FORMAT_COUNT];
|
||||
struct {
|
||||
uint32_t image_view;
|
||||
uint32_t buffer_view;
|
||||
|
||||
Reference in New Issue
Block a user