diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
index 56b70e1e129aeb14a7ed5fd40769e79345039eb2..852dc07efe749e6dcdf448d14226174ac2464864 100644
--- a/indra/newview/llglsandbox.cpp
+++ b/indra/newview/llglsandbox.cpp
@@ -1034,6 +1034,31 @@ class ShaderBinder
 	LLGLSLShader& mShader;
 };
 
+class VAOHolder
+{
+public:
+	VAOHolder() = default;
+	~VAOHolder()
+	{
+#ifdef GL_ARB_vertex_array_object
+		if (vaoName != 0)
+		{
+			glDeleteVertexArrays(1, &vaoName);
+		}
+#endif
+	}
+
+	void genVAO()
+	{
+#ifdef GL_ARB_vertex_array_object
+		glGenVertexArrays(1, &vaoName);
+		glBindVertexArray(vaoName);
+#endif
+	}
+
+private:
+	GLuint vaoName = 0;
+};
 
 //-----------------------------------------------------------------------------
 // gpu_benchmark()
@@ -1047,6 +1072,12 @@ F32 gpu_benchmark()
 		return -1.f;
 	}
 
+	VAOHolder dummVAO;
+	if (LLRender::sGLCoreProfile)
+	{
+		dummVAO.genVAO();
+	}
+
     if (gBenchmarkProgram.mProgramObject == 0)
 	{
 		LLViewerShaderMgr::instance()->initAttribsAndUniforms();