X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fpipelinestate_backend.cpp;h=a6c9d8ce6754ce28d24002900b47511f21a16a33;hb=1b2e58f0e3c84e45b40e89b07939e89e7a211179;hp=419a7e4c149545b3de9ce19cd211da7bef5e563d;hpb=c89c1fb972fae2cb2f720cb3ec6cf8238ae8d2e1;p=libs%2Fgl.git diff --git a/source/backends/vulkan/pipelinestate_backend.cpp b/source/backends/vulkan/pipelinestate_backend.cpp index 419a7e4c..a6c9d8ce 100644 --- a/source/backends/vulkan/pipelinestate_backend.cpp +++ b/source/backends/vulkan/pipelinestate_backend.cpp @@ -275,6 +275,7 @@ uint64_t VulkanPipelineState::compute_descriptor_set_hash(unsigned index) const { result = hash_update<64>(result, b.binding); result = hash_update<64>(result, reinterpret_cast(b.block)); + result = hash_update<64>(result, reinterpret_cast(b.buffer)); } for(const PipelineState::BoundTexture &t: self.textures) if(t.used && (t.binding>>20)==index) @@ -319,7 +320,7 @@ unsigned VulkanPipelineState::fill_descriptor_writes(unsigned index, vector=0 && static_cast(u.binding>>20)==index) { - buffer_ptr->buffer = handle_cast<::VkBuffer>(u.block->get_buffer()->handle); + buffer_ptr->buffer = handle_cast<::VkBuffer>(u.buffer->handle); buffer_ptr->offset = u.block->get_offset(); buffer_ptr->range = u.block->get_data_size(); @@ -356,7 +357,7 @@ unsigned VulkanPipelineState::fill_descriptor_writes(unsigned index, vector(this); const VulkanFunctions &vk = device.get_functions(); @@ -387,7 +388,7 @@ void VulkanPipelineState::apply(VkCommandBuffer command_buffer) const if(self.viewport) { viewport.x = self.viewport->left; - viewport.y = self.framebuffer->get_height()-(self.viewport->bottom+self.viewport->height); + viewport.y = self.viewport->bottom; viewport.width = self.viewport->width; viewport.height = self.viewport->height; } @@ -398,6 +399,11 @@ void VulkanPipelineState::apply(VkCommandBuffer command_buffer) const viewport.width = self.framebuffer->get_width(); viewport.height = self.framebuffer->get_height(); } + if(negative_viewport) + { + viewport.y += viewport.height; + viewport.height = -viewport.height; + } viewport.minDepth = 0.0f; viewport.maxDepth = 1.0f; vk.CmdSetViewport(command_buffer, 0, 1, &viewport); @@ -406,7 +412,7 @@ void VulkanPipelineState::apply(VkCommandBuffer command_buffer) const if(self.scissor) { scissor.offset.x = self.scissor->left; - scissor.offset.y = self.framebuffer->get_height()-(self.scissor->bottom+self.scissor->height); + scissor.offset.y = self.scissor->bottom; scissor.extent.width = self.scissor->width; scissor.extent.height = self.scissor->height; }