turnip: Add support for alphaToOne.
authorEric Anholt <eric@anholt.net>
Fri, 5 Jun 2020 00:00:59 +0000 (17:00 -0700)
committerMarge Bot <eric+marge@anholt.net>
Fri, 5 Jun 2020 18:11:22 +0000 (18:11 +0000)
Comparing a blob trace using the feature to one not, the difference was
pretty obvious and in the spot you'd expect compared to alphaToCoverage.
The SP_ reg didn't have a corresponding bit set, though it also has an
alphaToCoverage.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5343>

src/freedreno/registers/a6xx.xml
src/freedreno/vulkan/tu_device.c
src/freedreno/vulkan/tu_pipeline.c

index 0a0eec3ea07c153ba038df22494099d1237ffa2e..515b1043aae506e111a64c1a5ad92f83307382d9 100644 (file)
@@ -2294,6 +2294,7 @@ to upconvert to 32b float internally?
                <bitfield name="INDEPENDENT_BLEND" pos="8" type="boolean"/>
                <bitfield name="DUAL_COLOR_IN_ENABLE" pos="9" type="boolean"/>
                <bitfield name="ALPHA_TO_COVERAGE" pos="10" type="boolean"/>
+               <bitfield name="ALPHA_TO_ONE" pos="11" type="boolean"/>
                <bitfield name="SAMPLE_MASK" low="16" high="31"/>
        </reg32>
        <reg32 offset="0x8870" name="RB_DEPTH_PLANE_CNTL">
index dfadb66d5e22759e387ab0ec4d094645b147babc..6e0b787beba149919433c5c6edcf1431d7e74558 100644 (file)
@@ -598,7 +598,7 @@ tu_GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,
       .depthBounds = false,
       .wideLines = false,
       .largePoints = false,
-      .alphaToOne = false,
+      .alphaToOne = true,
       .multiViewport = false,
       .samplerAnisotropy = true,
       .textureCompressionETC2 = true,
index 6a6fd2728aa135ba47f97e80866bec1bf0f07653..158297d9d17c3cee3d064bb36e08902af1246cdb 100644 (file)
@@ -2058,8 +2058,6 @@ tu6_emit_blend_control(struct tu_cs *cs,
                        bool dual_src_blend,
                        const VkPipelineMultisampleStateCreateInfo *msaa_info)
 {
-   assert(!msaa_info->alphaToOneEnable);
-
    const uint32_t sample_mask =
       msaa_info->pSampleMask ? (*msaa_info->pSampleMask & 0xffff)
                              : ((1 << msaa_info->rasterizationSamples) - 1);
@@ -2076,7 +2074,8 @@ tu6_emit_blend_control(struct tu_cs *cs,
                                       .independent_blend = true,
                                       .sample_mask = sample_mask,
                                       .dual_color_in_enable = dual_src_blend,
-                                      .alpha_to_coverage = msaa_info->alphaToCoverageEnable));
+                                      .alpha_to_coverage = msaa_info->alphaToCoverageEnable,
+                                      .alpha_to_one = msaa_info->alphaToOneEnable));
 }
 
 void