#ifndef _GLCKHRONOSMUSTPASSGLNOCONTEXT_HPP
#define _GLCKHRONOSMUSTPASSGLNOCONTEXT_HPP
/*     Copyright (C) 2016-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.
 *     You may obtain a copy of the License at
 *
 *          http://www.apache.org/licenses/LICENSE-2.0
 *
 *     Unless required by applicable law or agreed to in writing, software
 *     distributed under the License is distributed on an "AS IS" BASIS,
 *     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *     See the License for the specific language governing permissions and
 *     limitations under the License.
*/

/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 */

const char* mustpassDir = "gl_cts/data/mustpass/gl/khronos_mustpass_noctx/4.6.0.x/";

static const RunParams khronos_mustpass_gl_nocontext_first_cfg[] = {
	{ glu::ApiType::core(3, 0), "khr-master", DE_NULL, "unspecified", 1, DE_NULL, 64, 64 },
	{ glu::ApiType::core(4, 0), "khr-master", DE_NULL, "unspecified", 1, DE_NULL, 64, 64 },
	{ glu::ApiType::core(4, 5), "khr-master", DE_NULL, "unspecified", 1, DE_NULL, 64, 64 },
};

#endif // _GLCKHRONOSMUSTPASSGLNOCONTEXT_HPP
