// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef GPU_COMMAND_BUFFER_SERVICE_TEXTURE_DEFINITION_H_ #define GPU_COMMAND_BUFFER_SERVICE_TEXTURE_DEFINITION_H_ #include #include "base/callback.h" #include "gpu/command_buffer/service/gl_utils.h" #include "gpu/gpu_export.h" namespace gpu { namespace gles2 { // A saved definition of a texture that still exists in the underlying // GLShareGroup and can be used to redefine a client visible texture in any // context using the same GLShareGroup with the corresponding service ID. class GPU_EXPORT TextureDefinition { public: struct LevelInfo { LevelInfo(GLenum target, GLenum internal_format, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, bool cleared); GLenum target; GLenum internal_format; GLsizei width; GLsizei height; GLsizei depth; GLint border; GLenum format; GLenum type; bool cleared; }; typedef std::vector > LevelInfos; typedef base::Callback DestroyCallback; TextureDefinition(GLenum target, GLuint service_id, const LevelInfos& level_infos); ~TextureDefinition(); GLenum target() const { return target_; } GLuint ReleaseServiceId(); const LevelInfos& level_infos() const { return level_infos_; } private: GLenum target_; GLuint service_id_; std::vector > level_infos_; DISALLOW_COPY_AND_ASSIGN(TextureDefinition); }; } // namespage gles2 } // namespace gpu #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_DEFINITION_H_