Edit

kc3-lang/angle/src/libANGLE/params.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2017-09-20 10:39:18
    Hash : 33510107
    Message : Pass gl::Context to more Buffer methods. This will allow us to pull out the Renderer from the Context in more places in Buffer11, for state update. Impacts a few method calls in a few places. BUG=angleproject:2151 Change-Id: I1360caea65a94d3de4cd9f52d1b74b10439b02b3 Reviewed-on: https://chromium-review.googlesource.com/673136 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/params.cpp
  • //
    // Copyright 2017 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    // params:
    //   Parameter wrapper structs for OpenGL ES. These helpers cache re-used values
    //   in entry point routines.
    
    #include "libANGLE/params.h"
    
    #include "common/utilities.h"
    #include "libANGLE/Context.h"
    #include "libANGLE/VertexArray.h"
    
    namespace gl
    {
    
    // static
    constexpr ParamTypeInfo ParamsBase::TypeInfo;
    constexpr ParamTypeInfo HasIndexRange::TypeInfo;
    
    const Optional<IndexRange> &HasIndexRange::getIndexRange() const
    {
        if (mIndexRange.valid())
        {
            return mIndexRange;
        }
    
        const State &state = mContext->getGLState();
    
        const gl::VertexArray *vao     = state.getVertexArray();
        gl::Buffer *elementArrayBuffer = vao->getElementArrayBuffer().get();
    
        if (elementArrayBuffer)
        {
            uintptr_t offset = reinterpret_cast<uintptr_t>(mIndices);
            IndexRange indexRange;
            Error error =
                elementArrayBuffer->getIndexRange(mContext, mType, static_cast<size_t>(offset), mCount,
                                                  state.isPrimitiveRestartEnabled(), &indexRange);
            if (error.isError())
            {
                mContext->handleError(error);
                return mIndexRange;
            }
    
            mIndexRange = indexRange;
        }
        else
        {
            mIndexRange = ComputeIndexRange(mType, mIndices, mCount, state.isPrimitiveRestartEnabled());
        }
    
        return mIndexRange;
    }
    
    }  // namespace gl