@@ -26,8 +26,9 @@ struct cvk_device_properties_mali : public cvk_device_properties {
2626 cl_uint get_max_first_cmd_batch_size () const override final { return 10 ; }
2727 cl_uint get_max_cmd_group_size () const override final { return 1 ; }
2828
29- cvk_device_properties_mali (const uint32_t deviceID)
30- : m_deviceID(deviceID) {}
29+ cvk_device_properties_mali (const uint32_t deviceID,
30+ const VkDriverId driverID)
31+ : m_deviceID(deviceID), m_driverID(driverID) {}
3132
3233 bool is_non_uniform_decoration_broken () const override final {
3334#define GPU_ID2_ARCH_MAJOR_SHIFT 28
@@ -37,24 +38,34 @@ struct cvk_device_properties_mali : public cvk_device_properties {
3738 return (m_deviceID & GPU_ID2_ARCH_MAJOR) <= bifrost_arch_major;
3839 }
3940
41+ bool reuse_descriptor_set () const override final {
42+ if (config.reuse_descriptor_set .set ) {
43+ return config.reuse_descriptor_set ();
44+ }
45+ return m_driverID == VK_DRIVER_ID_ARM_PROPRIETARY;
46+ }
47+
4048private:
4149 const uint32_t m_deviceID;
50+ const VkDriverId m_driverID;
4251};
4352
4453struct cvk_device_properties_mali_exynos9820
4554 : public cvk_device_properties_mali {
4655 cl_ulong get_global_mem_cache_size () const override final { return 262144 ; }
4756 cl_ulong get_num_compute_units () const override final { return 12 ; }
48- cvk_device_properties_mali_exynos9820 (const uint32_t deviceID)
49- : cvk_device_properties_mali(deviceID) {}
57+ cvk_device_properties_mali_exynos9820 (const uint32_t deviceID,
58+ const VkDriverId driverID)
59+ : cvk_device_properties_mali(deviceID, driverID) {}
5060};
5161
5262struct cvk_device_properties_mali_exynos990
5363 : public cvk_device_properties_mali {
5464 cl_ulong get_global_mem_cache_size () const override final { return 262144 ; }
5565 cl_ulong get_num_compute_units () const override final { return 11 ; }
56- cvk_device_properties_mali_exynos990 (const uint32_t deviceID)
57- : cvk_device_properties_mali(deviceID) {}
66+ cvk_device_properties_mali_exynos990 (const uint32_t deviceID,
67+ const VkDriverId driverID)
68+ : cvk_device_properties_mali(deviceID, driverID) {}
5869};
5970
6071static bool isMaliDevice (const char * name, const uint32_t vendorID) {
@@ -264,9 +275,9 @@ std::unique_ptr<cvk_device_properties> create_cvk_device_properties(
264275 cvk_warn (" Unable to query 'ro.hardware' system property, some "
265276 " device properties will be incorrect." );
266277 } else if (strcmp (soc, " exynos9820" ) == 0 ) {
267- RETURN (cvk_device_properties_mali_exynos9820, deviceID);
278+ RETURN (cvk_device_properties_mali_exynos9820, deviceID, driverID );
268279 } else if (strcmp (soc, " exynos990" ) == 0 ) {
269- RETURN (cvk_device_properties_mali_exynos990, deviceID);
280+ RETURN (cvk_device_properties_mali_exynos990, deviceID, driverID );
270281 } else {
271282 cvk_warn (" Unrecognized 'ro.hardware' value '%s', some device "
272283 " properties will be incorrect." ,
@@ -276,7 +287,7 @@ std::unique_ptr<cvk_device_properties> create_cvk_device_properties(
276287 cvk_warn (" Unrecognized Mali device, some device properties will be "
277288 " incorrect." );
278289#endif
279- RETURN (cvk_device_properties_mali, deviceID);
290+ RETURN (cvk_device_properties_mali, deviceID, driverID );
280291 } else if (strcmp (name, " Adreno (TM) 615" ) == 0 ) {
281292 RETURN (cvk_device_properties_adreno_615);
282293 } else if (strcmp (name, " Adreno (TM) 620" ) == 0 ) {
0 commit comments