diff options
author | egdaniel <egdaniel@google.com> | 2016-04-08 13:27:53 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-08 13:27:53 -0700 |
commit | 7cbffda6c85e0634399d74607db2a82943abe06a (patch) | |
tree | c2cc75d1fb0f3c27bf08ac0e78466a8e588f3170 /src/gpu/vk/GrVkPipelineStateDataManager.cpp | |
parent | 9e0efe57ac29b13d7f7a24ccefc456562acbad6c (diff) |
Don't create new descriptor set for vulkan uniforms every draw
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1872553005
Review URL: https://codereview.chromium.org/1872553005
Diffstat (limited to 'src/gpu/vk/GrVkPipelineStateDataManager.cpp')
-rw-r--r-- | src/gpu/vk/GrVkPipelineStateDataManager.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gpu/vk/GrVkPipelineStateDataManager.cpp b/src/gpu/vk/GrVkPipelineStateDataManager.cpp index 86066abe0b..60d7d7fee8 100644 --- a/src/gpu/vk/GrVkPipelineStateDataManager.cpp +++ b/src/gpu/vk/GrVkPipelineStateDataManager.cpp @@ -253,9 +253,10 @@ template<> struct set_uniform_matrix<4> { } }; -void GrVkPipelineStateDataManager::uploadUniformBuffers(const GrVkGpu* gpu, +bool GrVkPipelineStateDataManager::uploadUniformBuffers(const GrVkGpu* gpu, GrVkUniformBuffer* vertexBuffer, GrVkUniformBuffer* fragmentBuffer) const { + bool updatedBuffer = false; if (vertexBuffer && fVertexUniformsDirty) { vertexBuffer->addMemoryBarrier(gpu, VK_ACCESS_UNIFORM_READ_BIT, @@ -263,7 +264,8 @@ void GrVkPipelineStateDataManager::uploadUniformBuffers(const GrVkGpu* gpu, VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT, false); - SkAssertResult(vertexBuffer->updateData(gpu, fVertexUniformData.get(), fVertexUniformSize)); + SkAssertResult(vertexBuffer->updateData(gpu, fVertexUniformData.get(), fVertexUniformSize, + &updatedBuffer)); fVertexUniformsDirty = false; } @@ -275,7 +277,8 @@ void GrVkPipelineStateDataManager::uploadUniformBuffers(const GrVkGpu* gpu, VK_PIPELINE_STAGE_HOST_BIT, false); SkAssertResult(fragmentBuffer->updateData(gpu, fFragmentUniformData.get(), - fFragmentUniformSize)); + fFragmentUniformSize, &updatedBuffer)); fFragmentUniformsDirty = false; } + return updatedBuffer; } |