radv: use CmdPushConstants when restoring constants after meta operations
[mesa.git] / src / amd / vulkan / radv_device.c
index 4203074a4cdaf69529454af0fc99f4d91201604d..3cf050ed220478e8436080176580d08c91227ae8 100644 (file)
@@ -100,7 +100,6 @@ radv_get_device_name(enum radeon_family family, char *name, size_t name_len)
        case CHIP_KAVERI: chip_string = "AMD RADV KAVERI"; break;
        case CHIP_KABINI: chip_string = "AMD RADV KABINI"; break;
        case CHIP_HAWAII: chip_string = "AMD RADV HAWAII"; break;
-       case CHIP_MULLINS: chip_string = "AMD RADV MULLINS"; break;
        case CHIP_TONGA: chip_string = "AMD RADV TONGA"; break;
        case CHIP_ICELAND: chip_string = "AMD RADV ICELAND"; break;
        case CHIP_CARRIZO: chip_string = "AMD RADV CARRIZO"; break;
@@ -1352,7 +1351,7 @@ void radv_GetPhysicalDeviceProperties2(
                        properties->maxTransformFeedbackBufferDataSize = UINT32_MAX;
                        properties->maxTransformFeedbackBufferDataStride = 512;
                        properties->transformFeedbackQueries = true;
-                       properties->transformFeedbackStreamsLinesTriangles = false;
+                       properties->transformFeedbackStreamsLinesTriangles = true;
                        properties->transformFeedbackRasterizationStreamSelect = false;
                        properties->transformFeedbackDraw = true;
                        break;
@@ -1368,6 +1367,27 @@ void radv_GetPhysicalDeviceProperties2(
                        props->maxDescriptorSetUpdateAfterBindInlineUniformBlocks = MAX_INLINE_UNIFORM_BLOCK_COUNT;
                        break;
                }
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT: {
+                       VkPhysicalDeviceSampleLocationsPropertiesEXT *properties =
+                               (VkPhysicalDeviceSampleLocationsPropertiesEXT *)ext;
+                       /* TODO: The ext is currently disabled because the
+                        * driver needs to handle sample locations during
+                        * layout transitions for depth/stencil surfaces and
+                        * HTILE.
+                        */
+                       properties->sampleLocationSampleCounts = VK_SAMPLE_COUNT_1_BIT;
+                       /*
+                       properties->sampleLocationSampleCounts = VK_SAMPLE_COUNT_2_BIT |
+                                                                VK_SAMPLE_COUNT_4_BIT |
+                                                                VK_SAMPLE_COUNT_8_BIT;
+                       */
+                       properties->maxSampleLocationGridSize = (VkExtent2D){ 2 , 2 };
+                       properties->sampleLocationCoordinateRange[0] = 0.0f;
+                       properties->sampleLocationCoordinateRange[1] = 0.9375f;
+                       properties->sampleLocationSubPixelBits = 4;
+                       properties->variableSampleLocations = VK_FALSE;
+                       break;
+               }
                default:
                        break;
                }
@@ -5369,3 +5389,17 @@ VkResult radv_GetCalibratedTimestampsEXT(
 
        return VK_SUCCESS;
 }
+
+void radv_GetPhysicalDeviceMultisamplePropertiesEXT(
+    VkPhysicalDevice                            physicalDevice,
+    VkSampleCountFlagBits                       samples,
+    VkMultisamplePropertiesEXT*                 pMultisampleProperties)
+{
+       if (samples & (VK_SAMPLE_COUNT_2_BIT |
+                      VK_SAMPLE_COUNT_4_BIT |
+                      VK_SAMPLE_COUNT_8_BIT)) {
+               pMultisampleProperties->maxSampleLocationGridSize = (VkExtent2D){ 2, 2 };
+       } else {
+               pMultisampleProperties->maxSampleLocationGridSize = (VkExtent2D){ 0, 0 };
+       }
+}