17da54d7e41e04ea5122009b40de19be0724e1ca4George Mount/*
27da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * Copyright (C) 2012 The Android Open Source Project
37da54d7e41e04ea5122009b40de19be0724e1ca4George Mount *
47da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * Licensed under the Apache License, Version 2.0 (the "License");
57da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * you may not use this file except in compliance with the License.
67da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * You may obtain a copy of the License at
77da54d7e41e04ea5122009b40de19be0724e1ca4George Mount *
87da54d7e41e04ea5122009b40de19be0724e1ca4George Mount *      http://www.apache.org/licenses/LICENSE-2.0
97da54d7e41e04ea5122009b40de19be0724e1ca4George Mount *
107da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * Unless required by applicable law or agreed to in writing, software
117da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * distributed under the License is distributed on an "AS IS" BASIS,
127da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * See the License for the specific language governing permissions and
147da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * limitations under the License.
157da54d7e41e04ea5122009b40de19be0724e1ca4George Mount */
16a4eae1abb4f2547dfbda84301ee764ce35464881John Reckpackage com.android.gallery3d.glrenderer;
177da54d7e41e04ea5122009b40de19be0724e1ca4George Mount
187da54d7e41e04ea5122009b40de19be0724e1ca4George Mountimport javax.microedition.khronos.opengles.GL11;
197da54d7e41e04ea5122009b40de19be0724e1ca4George Mountimport javax.microedition.khronos.opengles.GL11ExtensionPack;
207da54d7e41e04ea5122009b40de19be0724e1ca4George Mount
217da54d7e41e04ea5122009b40de19be0724e1ca4George Mount/**
227da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * Open GL ES 1.1 implementation for generating and destroying texture IDs and
237da54d7e41e04ea5122009b40de19be0724e1ca4George Mount * buffer IDs
247da54d7e41e04ea5122009b40de19be0724e1ca4George Mount */
2550b33abe053ccab7be3d1bca2328e792507963d4George Mountpublic class GLES11IdImpl implements GLId {
267da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    private static int sNextId = 1;
277da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    // Mutex for sNextId
287da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    private static Object sLock = new Object();
297da54d7e41e04ea5122009b40de19be0724e1ca4George Mount
307da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    @Override
317da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    public int generateTexture() {
327da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        synchronized (sLock) {
337da54d7e41e04ea5122009b40de19be0724e1ca4George Mount            return sNextId++;
347da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        }
357da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    }
367da54d7e41e04ea5122009b40de19be0724e1ca4George Mount
377da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    @Override
387da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    public void glGenBuffers(int n, int[] buffers, int offset) {
397da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        synchronized (sLock) {
407da54d7e41e04ea5122009b40de19be0724e1ca4George Mount            while (n-- > 0) {
417da54d7e41e04ea5122009b40de19be0724e1ca4George Mount                buffers[offset + n] = sNextId++;
427da54d7e41e04ea5122009b40de19be0724e1ca4George Mount            }
437da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        }
447da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    }
457da54d7e41e04ea5122009b40de19be0724e1ca4George Mount
467da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    @Override
477da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    public void glDeleteTextures(GL11 gl, int n, int[] textures, int offset) {
487da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        synchronized (sLock) {
497da54d7e41e04ea5122009b40de19be0724e1ca4George Mount            gl.glDeleteTextures(n, textures, offset);
507da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        }
517da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    }
527da54d7e41e04ea5122009b40de19be0724e1ca4George Mount
537da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    @Override
547da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    public void glDeleteBuffers(GL11 gl, int n, int[] buffers, int offset) {
557da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        synchronized (sLock) {
567da54d7e41e04ea5122009b40de19be0724e1ca4George Mount            gl.glDeleteBuffers(n, buffers, offset);
577da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        }
587da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    }
597da54d7e41e04ea5122009b40de19be0724e1ca4George Mount
607da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    @Override
617da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    public void glDeleteFramebuffers(GL11ExtensionPack gl11ep, int n, int[] buffers, int offset) {
627da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        synchronized (sLock) {
637da54d7e41e04ea5122009b40de19be0724e1ca4George Mount            gl11ep.glDeleteFramebuffersOES(n, buffers, offset);
647da54d7e41e04ea5122009b40de19be0724e1ca4George Mount        }
657da54d7e41e04ea5122009b40de19be0724e1ca4George Mount    }
667da54d7e41e04ea5122009b40de19be0724e1ca4George Mount
677da54d7e41e04ea5122009b40de19be0724e1ca4George Mount
687da54d7e41e04ea5122009b40de19be0724e1ca4George Mount}
69