Просмотр исходного кода

Vulkan: implement Logical Operations.

Fernando Sahmkow 4 лет назад
Родитель
Сommit
14d2c77f91

+ 2 - 2
src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp

@@ -748,8 +748,8 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
         .sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
         .sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
         .pNext = nullptr,
         .pNext = nullptr,
         .flags = 0,
         .flags = 0,
-        .logicOpEnable = VK_FALSE,
-        .logicOp = VK_LOGIC_OP_COPY,
+        .logicOpEnable = key.state.logic_op_enable != 0,
+        .logicOp = static_cast<VkLogicOp>(key.state.logic_op.Value()),
         .attachmentCount = static_cast<u32>(cb_attachments.size()),
         .attachmentCount = static_cast<u32>(cb_attachments.size()),
         .pAttachments = cb_attachments.data(),
         .pAttachments = cb_attachments.data(),
         .blendConstants = {},
         .blendConstants = {},

+ 1 - 1
src/video_core/vulkan_common/vulkan_device.cpp

@@ -271,7 +271,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
             .tessellationShader = true,
             .tessellationShader = true,
             .sampleRateShading = true,
             .sampleRateShading = true,
             .dualSrcBlend = true,
             .dualSrcBlend = true,
-            .logicOp = false,
+            .logicOp = true,
             .multiDrawIndirect = false,
             .multiDrawIndirect = false,
             .drawIndirectFirstInstance = false,
             .drawIndirectFirstInstance = false,
             .depthClamp = true,
             .depthClamp = true,