| 456 | } |
| 457 | |
| 458 | VkSampler VulkanObjectManager::GetSampler(SamplerKey const & key) |
| 459 | { |
| 460 | std::lock_guard<std::mutex> lock(m_samplerMutex); |
| 461 | |
| 462 | auto const it = m_samplers.find(key); |
| 463 | if (it != m_samplers.end()) |
| 464 | return it->second; |
| 465 | |
| 466 | VkSamplerCreateInfo samplerCreateInfo = {}; |
| 467 | samplerCreateInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; |
| 468 | samplerCreateInfo.magFilter = samplerCreateInfo.minFilter = GetVulkanFilter(key.GetTextureFilter()); |
| 469 | samplerCreateInfo.addressModeU = GetVulkanSamplerAddressMode(key.GetWrapSMode()); |
| 470 | samplerCreateInfo.addressModeV = GetVulkanSamplerAddressMode(key.GetWrapTMode()); |
| 471 | |
| 472 | VkSampler sampler; |
| 473 | CHECK_VK_CALL(vkCreateSampler(m_device, &samplerCreateInfo, nullptr, &sampler)); |
| 474 | |
| 475 | m_samplers.insert(std::make_pair(key, sampler)); |
| 476 | return sampler; |
| 477 | } |
| 478 | } // namespace vulkan |
| 479 | } // namespace dp |
nothing calls this directly
no test coverage detected