| // |
| // Copyright 2014 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. |
| // |
| |
| // BufferImpl.h: Defines the abstract rx::BufferImpl class. |
| |
| #ifndef LIBANGLE_RENDERER_BUFFERIMPL_H_ |
| #define LIBANGLE_RENDERER_BUFFERIMPL_H_ |
| |
| #include "common/angleutils.h" |
| #include "common/mathutil.h" |
| #include "libANGLE/Error.h" |
| |
| #include <stdint.h> |
| |
| namespace gl |
| { |
| class BufferState; |
| } |
| |
| namespace rx |
| { |
| class ContextImpl; |
| |
| class BufferImpl : angle::NonCopyable |
| { |
| public: |
| BufferImpl(const gl::BufferState &state) : mState(state) {} |
| virtual ~BufferImpl() {} |
| virtual void destroy(ContextImpl *contextImpl) {} |
| |
| virtual gl::Error setData(ContextImpl *context, |
| GLenum target, |
| const void *data, |
| size_t size, |
| GLenum usage) = 0; |
| virtual gl::Error setSubData(ContextImpl *context, |
| GLenum target, |
| const void *data, |
| size_t size, |
| size_t offset) = 0; |
| virtual gl::Error copySubData(ContextImpl *contextImpl, |
| BufferImpl *source, |
| GLintptr sourceOffset, |
| GLintptr destOffset, |
| GLsizeiptr size) = 0; |
| virtual gl::Error map(ContextImpl *contextImpl, GLenum access, void **mapPtr) = 0; |
| virtual gl::Error mapRange(ContextImpl *contextImpl, |
| size_t offset, |
| size_t length, |
| GLbitfield access, |
| void **mapPtr) = 0; |
| virtual gl::Error unmap(ContextImpl *contextImpl, GLboolean *result) = 0; |
| |
| virtual gl::Error getIndexRange(GLenum type, |
| size_t offset, |
| size_t count, |
| bool primitiveRestartEnabled, |
| gl::IndexRange *outRange) = 0; |
| |
| protected: |
| const gl::BufferState &mState; |
| }; |
| } |
| |
| #endif // LIBANGLE_RENDERER_BUFFERIMPL_H_ |