#ifndef _GLCKHRONOSMUSTPASSAOSPFORGL_HPP
#define _GLCKHRONOSMUSTPASSAOSPFORGL_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/aosp_mustpass/4.6.1.x/";

static const RunParams khronos_mustpass_aosp_for_gl_first_cfg[] = {
	{ glu::ApiType::core(4, 5), "master", "rgba8888d24s8ms0", "unspecified", -1, DE_NULL, 256, 256 },
};

#endif // _GLCKHRONOSMUSTPASSAOSPFORGL_HPP
