From 68edf5edbafeb681cf68ab12f143b2f7fd6ac8f5 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Wed, 8 Apr 2015 10:11:59 +1200 Subject: shader_checker: capture spir-v for every shader at vkCreateShader time --- layers/shader_checker.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'layers/shader_checker.cpp') diff --git a/layers/shader_checker.cpp b/layers/shader_checker.cpp index 8affef19..7eeb82cb 100644 --- a/layers/shader_checker.cpp +++ b/layers/shader_checker.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include "loader_platform.h" #include "vk_dispatch_table_helper.h" #include "vkLayer.h" @@ -36,6 +37,19 @@ static std::unordered_map tableMap; + +struct shader_source { + std::vector words; + + shader_source(VkShaderCreateInfo const *pCreateInfo) : + words((uint32_t *)pCreateInfo->pCode, (uint32_t *)pCreateInfo->pCode + pCreateInfo->codeSize / sizeof(uint32_t)) { + } +}; + + +static std::unordered_map shader_map; + + static VkLayerDispatchTable * initLayerTable(const VkBaseLayerObject *gpuw) { VkLayerDispatchTable *pTable; @@ -139,6 +153,8 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateShader(VkDevice device, const VkShaderCre { VkLayerDispatchTable* pTable = tableMap[(VkBaseLayerObject *)device]; VkResult res = pTable->CreateShader(device, pCreateInfo, pShader); + + shader_map[(VkBaseLayerObject *) *pShader] = new shader_source(pCreateInfo); return res; } -- cgit v1.2.3