18bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv/*
28bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv * Copyright (C) 2016 The Android Open Source Project
38bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv *
48bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv * Licensed under the Apache License, Version 2.0 (the "License");
58bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv * you may not use this file except in compliance with the License.
68bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv * You may obtain a copy of the License at
78bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv *
88bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv *      http://www.apache.org/licenses/LICENSE-2.0
98bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv *
108bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv * Unless required by applicable law or agreed to in writing, software
118bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv * distributed under the License is distributed on an "AS IS" BASIS,
128bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv * See the License for the specific language governing permissions and
148bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv * limitations under the License.
158bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv */
168bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv
178bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv#include "GlesDriver.h"
188bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv#include "DefaultGlesDriver.h"
198bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv#include "GlesErrorCheckWrapper.h"
208bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv
218bd5edf804d5995fe266f3f612b70ee0ee104130sergeyvnamespace android {
228bd5edf804d5995fe266f3f612b70ee0ee104130sergeyvnamespace uirenderer {
238bd5edf804d5995fe266f3f612b70ee0ee104130sergeyvnamespace debug {
248bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv
258bd5edf804d5995fe266f3f612b70ee0ee104130sergeyvstatic DefaultGlesDriver sDefaultDriver;
268bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv
278bd5edf804d5995fe266f3f612b70ee0ee104130sergeyvstatic std::unique_ptr<GlesDriver> sGlesDriver(new GlesErrorCheckWrapper(sDefaultDriver));
288bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv
298bd5edf804d5995fe266f3f612b70ee0ee104130sergeyvGlesDriver* GlesDriver::get() {
308bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv    return sGlesDriver.get();
318bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv}
328bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv
338bd5edf804d5995fe266f3f612b70ee0ee104130sergeyvstd::unique_ptr<GlesDriver> GlesDriver::replace(std::unique_ptr<GlesDriver>&& driver) {
348bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv    std::unique_ptr<GlesDriver> ret = std::move(sGlesDriver);
358bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv    sGlesDriver = std::move(driver);
368bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv    return ret;
378bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv}
388bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv
397e044fef628c7deb25189958714cb93a714a3617Derek Sollenbergersk_sp<const GrGLInterface> GlesDriver::getSkiaInterface() {
407e044fef628c7deb25189958714cb93a714a3617Derek Sollenberger    sk_sp<const GrGLInterface> skiaInterface(GrGLCreateNativeInterface());
417e044fef628c7deb25189958714cb93a714a3617Derek Sollenberger    return skiaInterface;
427e044fef628c7deb25189958714cb93a714a3617Derek Sollenberger}
437e044fef628c7deb25189958714cb93a714a3617Derek Sollenberger
448bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv} // namespace debug
458bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv} // namespace uirenderer
468bd5edf804d5995fe266f3f612b70ee0ee104130sergeyv} // namespace android
47