diff options
| author | Chia-I Wu <olv@lunarg.com> | 2015-10-31 00:31:16 +0800 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-11-03 15:19:07 -0700 |
| commit | 46176f157b1e47421bbfddb9917b2c1eef6b18c8 (patch) | |
| tree | 4141f4e2e4944b0e903e50b2688ba274cf59d753 /layers/draw_state.cpp | |
| parent | 95a799dee5d15cff133af1956c77211194197a82 (diff) | |
| download | usermoji-46176f157b1e47421bbfddb9917b2c1eef6b18c8.tar.xz | |
bug 14608: VkShaderModule object lifetime (WIP)
Remove VkShader. We add a simple cache to intel_shader_module in place of
intel_shader.
https://cvs.khronos.org/bugzilla/show_bug.cgi?id=14608
Diffstat (limited to 'layers/draw_state.cpp')
| -rwxr-xr-x | layers/draw_state.cpp | 35 |
1 files changed, 1 insertions, 34 deletions
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index 9befeeaa..26288101 100755 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -73,7 +73,6 @@ struct layer_data { unordered_map<VkDescriptorSet, SET_NODE*> setMap; unordered_map<VkDescriptorSetLayout, LAYOUT_NODE*> layoutMap; unordered_map<VkPipelineLayout, PIPELINE_LAYOUT_NODE> pipelineLayoutMap; - unordered_map<VkShader, VkShaderStageFlagBits> shaderStageMap; // Map for layout chains unordered_map<void*, GLOBAL_CB_NODE*> commandBufferMap; unordered_map<VkRenderPass, VkRenderPassCreateInfo*> renderPassMap; @@ -448,10 +447,7 @@ static PIPELINE_NODE* initPipeline(layer_data* dev_data, const VkGraphicsPipelin for (uint32_t i = 0; i < pCreateInfo->stageCount; i++) { const VkPipelineShaderStageCreateInfo *pPSSCI = &pCreateInfo->pStages[i]; - if (dev_data->shaderStageMap.find(pPSSCI->shader) == dev_data->shaderStageMap.end()) - continue; - - switch (dev_data->shaderStageMap[pPSSCI->shader]) { + switch (pPSSCI->stage) { case VK_SHADER_STAGE_VERTEX_BIT: memcpy(&pPipeline->vsCI, pPSSCI, sizeof(VkPipelineShaderStageCreateInfo)); pPipeline->active_shaders |= VK_SHADER_STAGE_VERTEX_BIT; @@ -1824,13 +1820,6 @@ VK_LAYER_EXPORT void VKAPI vkDestroyShaderModule(VkDevice device, VkShaderModule // TODO : Clean up any internal data structures using this obj. } -VK_LAYER_EXPORT void VKAPI vkDestroyShader(VkDevice device, VkShader shader, const VkAllocationCallbacks* pAllocator) -{ - layer_data* dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); - dev_data->device_dispatch_table->DestroyShader(device, shader, pAllocator); - dev_data->shaderStageMap.erase(shader); -} - VK_LAYER_EXPORT void VKAPI vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) { get_my_data_ptr(get_dispatch_key(device), layer_data_map)->device_dispatch_table->DestroyPipeline(device, pipeline, pAllocator); @@ -1928,24 +1917,6 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateImageView(VkDevice device, const VkImageV return result; } -VK_LAYER_EXPORT VkResult VKAPI vkCreateShader( - VkDevice device, - const VkShaderCreateInfo *pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkShader *pShader) -{ - layer_data* dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); - VkResult result = dev_data->device_dispatch_table->CreateShader(device, pCreateInfo, pAllocator, pShader); - - if (VK_SUCCESS == result) { - loader_platform_thread_lock_mutex(&globalLock); - dev_data->shaderStageMap[*pShader] = pCreateInfo->stage; - loader_platform_thread_unlock_mutex(&globalLock); - } - - return result; -} - //TODO handle pipeline caches VkResult VKAPI vkCreatePipelineCache( VkDevice device, @@ -3734,8 +3705,6 @@ VK_LAYER_EXPORT PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr(VkDevice dev, const return (PFN_vkVoidFunction) vkDestroyImageView; if (!strcmp(funcName, "vkDestroyShaderModule")) return (PFN_vkVoidFunction) vkDestroyShaderModule; - if (!strcmp(funcName, "vkDestroyShader")) - return (PFN_vkVoidFunction) vkDestroyShader; if (!strcmp(funcName, "vkDestroyPipeline")) return (PFN_vkVoidFunction) vkDestroyPipeline; if (!strcmp(funcName, "vkDestroyPipelineLayout")) @@ -3760,8 +3729,6 @@ VK_LAYER_EXPORT PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr(VkDevice dev, const return (PFN_vkVoidFunction) vkCreateImage; if (!strcmp(funcName, "vkCreateImageView")) return (PFN_vkVoidFunction) vkCreateImageView; - if (!strcmp(funcName, "vkCreateShader")) - return (PFN_vkVoidFunction) vkCreateShader; if (!strcmp(funcName, "CreatePipelineCache")) return (PFN_vkVoidFunction) vkCreatePipelineCache; if (!strcmp(funcName, "DestroyPipelineCache")) |
