}
static struct radv_pipeline_key
+radv_generate_pipeline_key(const struct radv_pipeline *pipeline, VkPipelineCreateFlags flags)
+{
+ struct radv_device *device = pipeline->device;
+ struct radv_pipeline_key key;
+
+ memset(&key, 0, sizeof(key));
+
+ if (flags & VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)
+ key.optimisations_disabled = 1;
+
+ key.disable_aniso_single_level = device->instance->disable_aniso_single_level &&
+ device->physical_device->rad_info.chip_class < GFX8;
+
+ return key;
+}
+
+static struct radv_pipeline_key
radv_generate_graphics_pipeline_key(const struct radv_pipeline *pipeline,
const VkGraphicsPipelineCreateInfo *pCreateInfo,
const struct radv_blend_state *blend)
vk_find_struct_const(pCreateInfo->pNext, PIPELINE_RENDERING_CREATE_INFO);
bool uses_dynamic_stride = false;
- struct radv_pipeline_key key;
- memset(&key, 0, sizeof(key));
-
- if (pCreateInfo->flags & VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)
- key.optimisations_disabled = 1;
+ struct radv_pipeline_key key = radv_generate_pipeline_key(pipeline, pCreateInfo->flags);
key.has_multiview_view_index = !!render_create_info->viewMask;
key.use_ngg = pipeline->device->physical_device->use_ngg;
key.adjust_frag_coord_z = pipeline->device->adjust_frag_coord_z;
- key.disable_aniso_single_level = pipeline->device->instance->disable_aniso_single_level &&
- pipeline->device->physical_device->rad_info.chip_class < GFX8;
return key;
}
const VkComputePipelineCreateInfo *pCreateInfo)
{
const VkPipelineShaderStageCreateInfo *stage = &pCreateInfo->stage;
- struct radv_pipeline_key key;
- memset(&key, 0, sizeof(key));
-
- if (pCreateInfo->flags & VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)
- key.optimisations_disabled = 1;
+ struct radv_pipeline_key key = radv_generate_pipeline_key(pipeline, pCreateInfo->flags);
const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *subgroup_size =
vk_find_struct_const(stage->pNext,
key.cs.require_full_subgroups = true;
}
- key.disable_aniso_single_level = pipeline->device->instance->disable_aniso_single_level &&
- pipeline->device->physical_device->rad_info.chip_class < GFX8;
-
return key;
}