X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fbackends%2Fvulkan%2Fpipelinestate_backend.cpp;h=ab5d3dd4cd8ca10a20342eb1b063a0c29c92b8bf;hb=08d3b5a55fad7439b47fc93d8ba604cbeb7e19ca;hp=07af5a7b9ba47129142720eab8a251f3e6fee5b9;hpb=d01902f355b1ea9a038a7f96cab37e49c6b65419;p=libs%2Fgl.git diff --git a/source/backends/vulkan/pipelinestate_backend.cpp b/source/backends/vulkan/pipelinestate_backend.cpp index 07af5a7b..ab5d3dd4 100644 --- a/source/backends/vulkan/pipelinestate_backend.cpp +++ b/source/backends/vulkan/pipelinestate_backend.cpp @@ -48,7 +48,7 @@ void VulkanPipelineState::update() const push_const_compat = hash_update<32>(push_const_compat, self.shprog->get_push_constants_size()); } - constexpr unsigned graphics_mask = PipelineState::VERTEX_SETUP|PipelineState::FACE_CULL| + constexpr unsigned graphics_mask = PipelineState::FRAMEBUFFER|PipelineState::VERTEX_SETUP|PipelineState::FACE_CULL| PipelineState::DEPTH_TEST|PipelineState::STENCIL_TEST|PipelineState::BLEND|PipelineState::PRIMITIVE_TYPE; unsigned pipeline_mask = PipelineState::SHPROG; if(!self.shprog->is_compute()) @@ -118,6 +118,8 @@ uint64_t VulkanPipelineState::compute_hash() const } result = hash_round<64>(result, format.get_samples()); + if(format.get_samples()>1) + result = hash_round<64>(result, self.blend.alpha_to_coverage); if(self.depth_test.enabled) { @@ -164,6 +166,7 @@ void VulkanPipelineState::fill_graphics_creation_info(vector &buffer) cons const FrameFormat &format = self.framebuffer->get_format(); RenderPass render_pass; render_pass.framebuffer = self.framebuffer; + render_pass.to_present = self.framebuffer->is_presentable(); render_pass.update(device); unsigned n_color_attachments = 0; @@ -216,7 +219,7 @@ void VulkanPipelineState::fill_graphics_creation_info(vector &buffer) cons multisample_info->sampleShadingEnable = VK_FALSE; multisample_info->minSampleShading = 1.0f; multisample_info->pSampleMask = 0; - multisample_info->alphaToCoverageEnable = VK_FALSE; + multisample_info->alphaToCoverageEnable = (format.get_samples()>1 && self.blend.alpha_to_coverage ? VK_TRUE : VK_FALSE); multisample_info->alphaToOneEnable = VK_FALSE; depth_stencil_info->sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;