minor vulkan updates

This commit is contained in:
turanszkij
2018-04-25 16:39:58 +01:00
parent 5c908344ee
commit b9ecd0a36a
3 changed files with 34 additions and 5 deletions
+27 -5
View File
@@ -1591,6 +1591,8 @@ namespace wiGraphicsTypes
queueCreateInfos.push_back(queueCreateInfo);
}
vkGetPhysicalDeviceProperties(physicalDevice, &physicalDeviceProperties);
VkPhysicalDeviceFeatures deviceFeatures = {};
vkGetPhysicalDeviceFeatures(physicalDevice, &deviceFeatures);
@@ -4334,14 +4336,14 @@ namespace wiGraphicsTypes
VkMemoryBarrier barrier;
barrier.sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER;
barrier.pNext = nullptr;
barrier.srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT;
barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
barrier.srcAccessMask = VK_ACCESS_MEMORY_WRITE_BIT | VK_ACCESS_SHADER_WRITE_BIT;
barrier.dstAccessMask = VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_SHADER_READ_BIT;
vkCmdPipelineBarrier(GetDirectCommandList(threadID),
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
VK_DEPENDENCY_BY_REGION_BIT,
0, nullptr,
0,
1, &barrier,
0, nullptr,
0, nullptr);
}
@@ -4598,7 +4600,7 @@ namespace wiGraphicsTypes
void GraphicsDevice_Vulkan::WaitForGPU()
{
vkQueueWaitIdle(presentQueue);
//vkQueueWaitIdle(presentQueue);
}
void GraphicsDevice_Vulkan::QueryBegin(GPUQuery *query, GRAPHICSTHREAD threadID)
@@ -4617,6 +4619,26 @@ namespace wiGraphicsTypes
}
void GraphicsDevice_Vulkan::TransitionBarrier(GPUResource *const* resources, UINT NumBarriers, RESOURCE_STATES stateBefore, RESOURCE_STATES stateAfter, GRAPHICSTHREAD threadID)
{
//if (stateBefore == RESOURCE_STATE_UNORDERED_ACCESS && stateAfter == RESOURCE_STATE_GENERIC_READ)
//{
// VkBufferMemoryBarrier barrier = {};
// barrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;
// barrier.pNext = nullptr;
// barrier.buffer = static_cast<VkBuffer>(resources[0]->resource_Vulkan);
// barrier.size = ((GPUBuffer*)resources[0])->desc.ByteWidth;
// barrier.offset = 0;
// barrier.srcAccessMask = VK_ACCESS_MEMORY_WRITE_BIT | VK_ACCESS_SHADER_WRITE_BIT;
// barrier.dstAccessMask = VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_SHADER_READ_BIT;
// vkCmdPipelineBarrier(GetDirectCommandList(threadID),
// VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
// VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
// 0,
// 0, nullptr,
// 1, &barrier,
// 0, nullptr);
//}
//renderPass[threadID].disable(GetDirectCommandList(threadID));
//for (UINT i = 0; i < NumBarriers; ++i)
+2
View File
@@ -40,6 +40,8 @@ namespace wiGraphicsTypes
VkQueue graphicsQueue;
VkQueue presentQueue;
VkPhysicalDeviceProperties physicalDeviceProperties;
VkQueue copyQueue;
VkCommandPool copyCommandPool;
VkCommandBuffer copyCommandBuffer;
+5
View File
@@ -5402,6 +5402,11 @@ void wiRenderer::DrawWorld(Camera* camera, bool tessellation, GRAPHICSTHREAD thr
if (shaderType == SHADERTYPE_TILEDFORWARD)
{
//GPUResource* res[] =
//{
// resourceBuffers[RBTYPE_ENTITYINDEXLIST_OPAQUE]
//};
//GetDevice()->TransitionBarrier(res, ARRAYSIZE(res), RESOURCE_STATE_UNORDERED_ACCESS, RESOURCE_STATE_GENERIC_READ, threadID);
GetDevice()->BindResource(PS, resourceBuffers[RBTYPE_ENTITYINDEXLIST_OPAQUE], SBSLOT_ENTITYINDEXLIST, threadID);
}