11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc.
41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */
81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#include "GrGLStencilBuffer.h"
111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#include "GrGpuGL.h"
121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
131cab2921ab279367f8206cdadc9259d12e603548Derek SollenbergerGrGLStencilBuffer::~GrGLStencilBuffer() {
141cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    this->release();
151cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}
161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergersize_t GrGLStencilBuffer::sizeInBytes() const {
181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    uint64_t size = this->width();
191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    size *= this->height();
201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    size *= fFormat.fTotalBits;
211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    size *= GrMax(1,this->numSamples());
221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    return static_cast<size_t>(size / 8);
231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}
241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergervoid GrGLStencilBuffer::onRelease() {
261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    if (0 != fRenderbufferID) {
271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger        GrGpuGL* gpuGL = (GrGpuGL*) this->getGpu();
281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger        const GrGLInterface* gl = gpuGL->glInterface();
291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger        GR_GL_CALL(gl, DeleteRenderbuffers(1, &fRenderbufferID));
301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger        fRenderbufferID = 0;
311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    }
321cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    INHERITED::onRelease();
331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}
341cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
351cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergervoid GrGLStencilBuffer::onAbandon() {
361cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    fRenderbufferID = 0;
371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    INHERITED::onAbandon();
381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}
391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
41