/*
 * Copyright 2021 Google LLC
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkSLGLSL_DEFINED
#define SkSLGLSL_DEFINED

namespace SkSL {

// Limited set of GLSL versions we build shaders for. Caller should round
// down the GLSL version to one of these enums.
enum class GLSLGeneration {
    /**
     * Desktop GLSL 1.10 and ES2 shading language (based on desktop GLSL 1.20)
     */
    k110,
    k100es = k110,
    /**
     * Desktop GLSL 1.30
     */
    k130,
    /**
     * Desktop GLSL 1.40
     */
    k140,
    /**
     * Desktop GLSL 1.50
     */
    k150,
    /**
     * Desktop GLSL 3.30, and ES GLSL 3.00
     */
    k330,
    k300es = k330,
    /**
     * Desktop GLSL 4.00
     */
    k400,
    /**
     * Desktop GLSL 4.20
     */
    k420,
    /**
     * ES GLSL 3.10 only TODO Make GLSLCap objects to make this more granular
     */
    k310es,
    /**
     * ES GLSL 3.20
     */
    k320es,
};

} // namespace SkSL

#endif
