diff --git a/external/openglcts/README.md b/external/openglcts/README.md
index 07b9a8f..95a9b30 100644
--- a/external/openglcts/README.md
+++ b/external/openglcts/README.md
@@ -231,8 +231,12 @@
 at [Khronos Gitlab](https://gitlab.khronos.org/) to be able to download
 Khronos Confidential CTS.
 It is possible to run and build the CTS without the Khronos Confidential CTS.
-Khronos Confidential CTS is mandatory only if you plan to make a
+For OpenGL CTS releases, and OpenGL ES CTS releases prior to opengl-es-cts-3.2.4.0
+Khronos Confidential CTS is mandatory if you plan to make a
 conformance submission (see [Creating a Submission Package](#creating-a-submission-package)).
+For opengl-es-cts-3.2.4.0 and later OpenGL ES CTS releases Khronos Confidential CTS
+results must not be included in a submission package.
+
 
 With CMake out-of-source builds are always recommended. Create a build directory
 of your choosing, and in that directory generate Makefiles or IDE project
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/gles2-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/gles2-khr-noctx-master.txt
similarity index 100%
rename from external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/gles2-khr-master.txt
rename to external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/gles2-khr-noctx-master.txt
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/gles32-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/gles32-khr-noctx-master.txt
similarity index 100%
rename from external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/gles32-khr-master.txt
rename to external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/gles32-khr-noctx-master.txt
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/mustpass.xml b/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/mustpass.xml
index 5528e4d..2d45d40 100644
--- a/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/mustpass.xml
+++ b/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/mustpass.xml
@@ -18,7 +18,7 @@
  * be lost! Modify the generating script instead.
  */-->
 	<TestPackage name="Khronos Mustpass ES NoContext">
-		<Configuration caseListFile="gles2-khr-master.txt" commandLine="--deqp-screen-rotation=unspecified --deqp-surface-width=64 --deqp-surface-height=64 --deqp-base-seed=1 --deqp-watchdog=disable" name="khr-master" os="any" useForFirstEGLConfig="True"/>
-		<Configuration caseListFile="gles32-khr-master.txt" commandLine="--deqp-screen-rotation=unspecified --deqp-surface-width=64 --deqp-surface-height=64 --deqp-base-seed=1 --deqp-watchdog=disable" name="khr-master" os="any" useForFirstEGLConfig="True"/>
+		<Configuration caseListFile="gles2-khr-noctx-master.txt" commandLine="--deqp-screen-rotation=unspecified --deqp-surface-width=64 --deqp-surface-height=64 --deqp-base-seed=1 --deqp-watchdog=disable" name="khr-noctx-master" os="any" useForFirstEGLConfig="True"/>
+		<Configuration caseListFile="gles32-khr-noctx-master.txt" commandLine="--deqp-screen-rotation=unspecified --deqp-surface-width=64 --deqp-surface-height=64 --deqp-base-seed=1 --deqp-watchdog=disable" name="khr-noctx-master" os="any" useForFirstEGLConfig="True"/>
 	</TestPackage>
 </Mustpass>
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/gles2-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/gles2-khr-noctx-master.txt
similarity index 100%
rename from external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/gles2-khr-master.txt
rename to external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/gles2-khr-noctx-master.txt
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/gles32-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/gles32-khr-noctx-master.txt
similarity index 100%
rename from external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/gles32-khr-master.txt
rename to external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/gles32-khr-noctx-master.txt
diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/mustpass.xml b/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/mustpass.xml
index 5bc5063..008d616 100644
--- a/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/mustpass.xml
+++ b/external/openglcts/data/mustpass/gles/khronos_mustpass_noctx/master/mustpass.xml
@@ -18,7 +18,7 @@
  * be lost! Modify the generating script instead.
  */-->
 	<TestPackage name="Khronos Mustpass ES NoContext">
-		<Configuration caseListFile="gles2-khr-master.txt" commandLine="--deqp-screen-rotation=unspecified --deqp-surface-width=64 --deqp-surface-height=64 --deqp-base-seed=1 --deqp-watchdog=disable" name="khr-master" os="any" useForFirstEGLConfig="True"/>
-		<Configuration caseListFile="gles32-khr-master.txt" commandLine="--deqp-screen-rotation=unspecified --deqp-surface-width=64 --deqp-surface-height=64 --deqp-base-seed=1 --deqp-watchdog=disable" name="khr-master" os="any" useForFirstEGLConfig="True"/>
+		<Configuration caseListFile="gles2-khr-noctx-master.txt" commandLine="--deqp-screen-rotation=unspecified --deqp-surface-width=64 --deqp-surface-height=64 --deqp-base-seed=1 --deqp-watchdog=disable" name="khr-noctx-master" os="any" useForFirstEGLConfig="True"/>
+		<Configuration caseListFile="gles32-khr-noctx-master.txt" commandLine="--deqp-screen-rotation=unspecified --deqp-surface-width=64 --deqp-surface-height=64 --deqp-base-seed=1 --deqp-watchdog=disable" name="khr-noctx-master" os="any" useForFirstEGLConfig="True"/>
 	</TestPackage>
 </Mustpass>
diff --git a/external/openglcts/modules/runner/glcKhronosMustpassEsNocontext.hpp b/external/openglcts/modules/runner/glcKhronosMustpassEsNocontext.hpp
index b4130de..8c7fb2c 100644
--- a/external/openglcts/modules/runner/glcKhronosMustpassEsNocontext.hpp
+++ b/external/openglcts/modules/runner/glcKhronosMustpassEsNocontext.hpp
@@ -22,8 +22,8 @@
 const char* mustpassDir = "gl_cts/data/mustpass/gles/khronos_mustpass_noctx/3.2.4.x/";
 
 static const RunParams khronos_mustpass_es_nocontext_first_cfg[] = {
-	{ glu::ApiType::es(2, 0), "khr-master", DE_NULL, "unspecified", 1, DE_NULL, 64, 64 },
-	{ glu::ApiType::es(3, 2), "khr-master", DE_NULL, "unspecified", 1, DE_NULL, 64, 64 },
+	{ glu::ApiType::es(2, 0), "khr-noctx-master", DE_NULL, "unspecified", 1, DE_NULL, 64, 64 },
+	{ glu::ApiType::es(3, 2), "khr-noctx-master", DE_NULL, "unspecified", 1, DE_NULL, 64, 64 },
 };
 
 #endif // _GLCKHRONOSMUSTPASSESNOCONTEXT_HPP
diff --git a/external/openglcts/scripts/build_mustpass.py b/external/openglcts/scripts/build_mustpass.py
index 488d9de..1bc9d26 100644
--- a/external/openglcts/scripts/build_mustpass.py
+++ b/external/openglcts/scripts/build_mustpass.py
@@ -854,7 +854,7 @@
 
 GLCTS_NOCTX_ES2_KHR_PKG			= Package(module = NOCTX_ES2_KHR_MODULE, configurations = [
 		# Master
-		Configuration(name			= "khr-master",
+		Configuration(name			= "khr-noctx-master",
 					surfacewidth	= "64",
 					surfaceheight	= "64",
 					baseseed		= "1",
@@ -863,7 +863,7 @@
 
 GLCTS_NOCTX_ES32_KHR_PKG		= Package(module = NOCTX_ES32_KHR_MODULE, configurations = [
 		# Master
-		Configuration(name			= "khr-master",
+		Configuration(name			= "khr-noctx-master",
 					surfacewidth	= "64",
 					surfaceheight	= "64",
 					baseseed		= "1",
diff --git a/external/openglcts/scripts/verify/verify_es.py b/external/openglcts/scripts/verify/verify_es.py
index ef1c95a..559718a 100644
--- a/external/openglcts/scripts/verify/verify_es.py
+++ b/external/openglcts/scripts/verify/verify_es.py
@@ -4,7 +4,7 @@
 # Khronos OpenGL CTS
 # ------------------
 #
-# Copyright (c) 2016 The Khronos Group Inc.
+# Copyright (c) 2017 The Khronos Group Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -73,6 +73,14 @@
 
 	return messages
 
+def numGitLogStatusFile (releaseTag):
+	KC_CTS_RELEASE = ["opengl-es-cts-3\.2\.[2-3]\.[0-9]*", "opengl-cts-4\.6\.[0-9]*\.[0-9]*"]
+	for r in KC_CTS_RELEASE:
+		if re.match(r, releaseTag):
+			return 2
+
+	return 1
+
 def verifyConfigFile (filename, type):
 	messages  = []
 	caseNames = getConfigCaseName(type)
@@ -214,8 +222,11 @@
 def verifyGitStatusFiles (package):
 	messages = []
 
-	if len(package.gitStatus) != 2:
-		messages.append(error(package.basePath, "Exactly two git status files must be present, found %s" % len(package.gitStatus)))
+	errorDict = {1 : 'one git status file', 2 : 'two git status files'}
+	numFiles = numGitLogStatusFile(package.conformVersion)
+
+	if len(package.gitStatus) != numFiles:
+		messages.append(error(package.basePath, "Exactly %s must be present, found %s" % (errorDict[numFiles], len(package.gitStatus))))
 
 	messages += verifyGitStatus(package)
 
@@ -268,11 +279,14 @@
 def verifyGitLogFiles (package):
 	messages = []
 
-	if len(package.gitLog) != 2:
-		messages.append(error(package.basePath, "Exactly two git log file must be present, found %s" % len(package.gitLog)))
+	errorDict = {1 : 'one git log file', 2 : 'two git log files'}
+	numFiles = numGitLogStatusFile(package.conformVersion)
+
+	if len(package.gitLog) != numFiles:
+		messages.append(error(package.basePath, "Exactly %s must be present, found %s" % (errorDict[numFiles], len(package.gitLog))))
 
 	for i, gitLog in enumerate(package.gitLog):
-		if "kc-cts" in gitLog[0]:
+		if "kc-cts" in gitLog[0] and numFiles > 1:
 			package.gitLog[i] = gitLog[:1] + ("external/kc-cts/src",) + gitLog[2:]
 
 	messages += verifyGitLogFile(package)
