// Copyright (C) 2016 The Android Open Source Project
//
// 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.

#pragma once

#include "host-common/opengl/emugl_config.h"

#ifdef _MSC_VER
# ifdef BUILDING_EMUGL_COMMON_SHARED
#  define EMUGL_COMMON_API __declspec(dllexport)
# else
#  define EMUGL_COMMON_API __declspec(dllimport)
#endif
#else
# define EMUGL_COMMON_API
#endif

namespace android {

namespace base {

class GLObjectCounter;

} // namespace base
} // namespace android

namespace emugl {
    // Set/get GLES major/minor version.
    EMUGL_COMMON_API void setGlesVersion(int maj, int min);
    EMUGL_COMMON_API void getGlesVersion(int* maj, int* min);

    // Set/get renderer
    EMUGL_COMMON_API void setRenderer(SelectedRenderer renderer);
    EMUGL_COMMON_API SelectedRenderer getRenderer();

    // Extension string query
    EMUGL_COMMON_API bool hasExtension(const char* extensionsStr,
                      const char* wantedExtension);

    // GL object counter get/set
    EMUGL_COMMON_API void setGLObjectCounter(
            android::base::GLObjectCounter* counter);
    EMUGL_COMMON_API android::base::GLObjectCounter* getGLObjectCounter();

    // Gralloc implementation get/set
    EMUGL_COMMON_API void setGrallocImplementation(
            GrallocImplementation gralloc);
    EMUGL_COMMON_API GrallocImplementation getGrallocImplementation();
}
