[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kwin/fredrik/vulkan] libkwineffects: vulkan/utils: Add CullFront and CullBack pipeline traits
From:       Fredrik_Höglund <null () kde ! org>
Date:       2018-02-16 17:01:50
Message-ID: E1emjOQ-0004Yx-CF () code ! kde ! org
[Download RAW message or body]

Git commit 952ecc496967663bab3e7d2986b0b98f663f38f9 by Fredrik Höglund.
Committed on 16/02/2018 at 16:58.
Pushed by fredrik into branch 'fredrik/vulkan'.

vulkan/utils: Add CullFront and CullBack pipeline traits

M  +12   -4    libkwineffects/kwinvulkanutils.cpp
M  +3    -0    libkwineffects/kwinvulkanutils.h

https://commits.kde.org/kwin/952ecc496967663bab3e7d2986b0b98f663f38f9

diff --git a/libkwineffects/kwinvulkanutils.cpp b/libkwineffects/kwinvulkanutils.cpp
index 95616945c..2efb05b1b 100644
--- a/libkwineffects/kwinvulkanutils.cpp
+++ b/libkwineffects/kwinvulkanutils.cpp
@@ -726,14 +726,22 @@ VkPipeline VulkanPipelineManager::createPipeline(Material material, Traits trait
 
     // Rasterization state
     // -------------------
-    static const VkPipelineRasterizationStateCreateInfo rasterizationState {
+    VkCullModeFlags cullMode = VK_CULL_MODE_NONE;
+
+    if (traits & CullFront)
+        cullMode |= VK_CULL_MODE_FRONT_BIT;
+
+    if (traits & CullBack)
+        cullMode |= VK_CULL_MODE_BACK_BIT;
+
+    const VkPipelineRasterizationStateCreateInfo rasterizationState {
         .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
         .pNext = nullptr,
         .flags = 0,
         .depthClampEnable = VK_FALSE,
         .rasterizerDiscardEnable = VK_FALSE,
         .polygonMode = VK_POLYGON_MODE_FILL,
-        .cullMode = VK_CULL_MODE_NONE,
+        .cullMode = cullMode,
         .frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE,
         .depthBiasEnable = VK_FALSE,
         .depthBiasConstantFactor = 0.0f,
@@ -1054,11 +1062,11 @@ std::tuple<VkPipeline, VkPipelineLayout> VulkanPipelineManager::pipeline(Materia
     union {
         struct {
             unsigned material:3;
-            unsigned traits:5;
+            unsigned traits:6;
             unsigned topology:3;
             unsigned descriptorType:1;
             unsigned renderPassType:1;
-            unsigned unused:19;
+            unsigned unused:18;
         } u;
         uint32_t value;
     } key;
diff --git a/libkwineffects/kwinvulkanutils.h b/libkwineffects/kwinvulkanutils.h
index 34d1b24f6..5ba0ee4de 100644
--- a/libkwineffects/kwinvulkanutils.h
+++ b/libkwineffects/kwinvulkanutils.h
@@ -3368,6 +3368,9 @@ public:
         Modulate                 = (1 << 1),
         Desaturate               = (1 << 2),
         CrossFade                = (1 << 3),
+        CullFront                = (1 << 4),
+        CullBack                 = (1 << 5),
+        CullFrontAndBack         = (CullFront | CullBack)
     };
 
     Q_DECLARE_FLAGS(Traits, Trait);

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic