|
|
@@ -1341,11 +1341,34 @@ reset() {
|
|
|
_supports_packed_dabc = false;
|
|
|
_supports_packed_ufloat = false;
|
|
|
#else
|
|
|
- _supports_packed_dabc = is_at_least_gl_version(3, 2) ||
|
|
|
+ _supports_packed_dabc = (is_at_least_gl_version(3, 2) ||
|
|
|
has_extension("GL_ARB_vertex_array_bgra") ||
|
|
|
- has_extension("GL_EXT_vertex_array_bgra");
|
|
|
+ has_extension("GL_EXT_vertex_array_bgra")) && gl_support_vertex_array_bgra;
|
|
|
+
|
|
|
_supports_packed_ufloat = is_at_least_gl_version(4, 4) ||
|
|
|
has_extension("GL_ARB_vertex_type_10f_11f_11f_rev");
|
|
|
+
|
|
|
+ if (_supports_packed_dabc) {
|
|
|
+ int number = 0;
|
|
|
+ if (_gl_renderer.compare(0, 14, "AMD Radeon RX ") == 0) {
|
|
|
+ number = atoi(_gl_renderer.c_str() + 14);
|
|
|
+ }
|
|
|
+ else if (_gl_renderer.compare(0, 10, "Radeon RX ") == 0) {
|
|
|
+ number = atoi(_gl_renderer.c_str() + 10);
|
|
|
+ }
|
|
|
+
|
|
|
+ // This is buggy for RDNA cards. Verified on 5700 XT, reportedly also
|
|
|
+ // occurs on the entire 5*00 and 6*00 line.
|
|
|
+ if (number >= 5000 && number < 8000) {
|
|
|
+ _supports_packed_dabc = false;
|
|
|
+
|
|
|
+ if (GLCAT.is_debug()) {
|
|
|
+ GLCAT.debug()
|
|
|
+ << "Detected AMD Radeon RX " << number
|
|
|
+ << ", disabling use of GL_BGRA vertex attributes\n";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
#endif
|
|
|
|
|
|
#ifdef OPENGLES
|