v3dv: implement vkGetPipelineExecutablePropertiesKHR

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16370>
This commit is contained in:
Iago Toral Quiroga
2022-05-06 10:56:49 +02:00
committed by Marge Bot
parent 89eb0ac23d
commit dc48313d70
+35
View File
@@ -3604,3 +3604,38 @@ v3dv_GetPipelineExecutableInternalRepresentationsKHR(
return incomplete ? VK_INCOMPLETE : vk_outarray_status(&out);
}
VKAPI_ATTR VkResult VKAPI_CALL
v3dv_GetPipelineExecutablePropertiesKHR(
VkDevice device,
const VkPipelineInfoKHR *pPipelineInfo,
uint32_t *pExecutableCount,
VkPipelineExecutablePropertiesKHR *pProperties)
{
V3DV_FROM_HANDLE(v3dv_pipeline, pipeline, pPipelineInfo->pipeline);
pipeline_collect_executable_data(pipeline);
VK_OUTARRAY_MAKE_TYPED(VkPipelineExecutablePropertiesKHR, out,
pProperties, pExecutableCount);
util_dynarray_foreach(&pipeline->executables.data,
struct v3dv_pipeline_executable_data, exe) {
vk_outarray_append_typed(VkPipelineExecutablePropertiesKHR, &out, props) {
gl_shader_stage mesa_stage = broadcom_shader_stage_to_gl(exe->stage);
props->stages = mesa_to_vk_shader_stage(mesa_stage);
WRITE_STR(props->name, "%s (%s)",
_mesa_shader_stage_to_abbrev(mesa_stage),
broadcom_shader_stage_is_binning(exe->stage) ?
"Binning" : "Render");
WRITE_STR(props->description, "%s",
_mesa_shader_stage_to_string(mesa_stage));
props->subgroupSize = V3D_CHANNELS;
}
}
return vk_outarray_status(&out);
}