| Index: gpu/command_buffer/service/texture_manager.cc
|
| diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc
|
| index 9bdcb96aa03558104244d803701dcd75191c34fa..134977f060dd72f830937a56ef287589357d541e 100644
|
| --- a/gpu/command_buffer/service/texture_manager.cc
|
| +++ b/gpu/command_buffer/service/texture_manager.cc
|
| @@ -22,6 +22,7 @@
|
| #include "gpu/command_buffer/service/error_state.h"
|
| #include "gpu/command_buffer/service/feature_info.h"
|
| #include "gpu/command_buffer/service/framebuffer_manager.h"
|
| +#include "gpu/command_buffer/service/gl_stream_texture_image.h"
|
| #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
|
| #include "gpu/command_buffer/service/mailbox_manager.h"
|
| #include "gpu/command_buffer/service/memory_tracking.h"
|
| @@ -1327,10 +1328,11 @@ bool Texture::ClearLevel(
|
| return true;
|
| }
|
|
|
| -void Texture::SetLevelImage(GLenum target,
|
| - GLint level,
|
| - gl::GLImage* image,
|
| - ImageState state) {
|
| +void Texture::SetLevelImageInternal(GLenum target,
|
| + GLint level,
|
| + gl::GLImage* image,
|
| + GLStreamTextureImage* stream_texture_image,
|
| + ImageState state) {
|
| DCHECK_GE(level, 0);
|
| size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
|
| DCHECK_LT(static_cast<size_t>(face_index),
|
| @@ -1342,15 +1344,29 @@ void Texture::SetLevelImage(GLenum target,
|
| DCHECK_EQ(info.target, target);
|
| DCHECK_EQ(info.level, level);
|
| info.image = image;
|
| + info.stream_texture_image = stream_texture_image;
|
| info.image_state = state;
|
|
|
| UpdateCanRenderCondition();
|
| UpdateHasImages();
|
| }
|
|
|
| -gl::GLImage* Texture::GetLevelImage(GLint target,
|
| - GLint level,
|
| - ImageState* state) const {
|
| +void Texture::SetLevelImage(GLenum target,
|
| + GLint level,
|
| + gl::GLImage* image,
|
| + ImageState state) {
|
| + SetLevelImageInternal(target, level, image, nullptr, state);
|
| +}
|
| +
|
| +void Texture::SetLevelStreamTextureImage(GLenum target,
|
| + GLint level,
|
| + GLStreamTextureImage* image,
|
| + ImageState state) {
|
| + SetLevelImageInternal(target, level, image, image, state);
|
| +}
|
| +
|
| +const Texture::LevelInfo* Texture::GetLevelInfo(GLint target,
|
| + GLint level) const {
|
| if (target != GL_TEXTURE_2D && target != GL_TEXTURE_EXTERNAL_OES &&
|
| target != GL_TEXTURE_RECTANGLE_ARB) {
|
| return NULL;
|
| @@ -1360,19 +1376,37 @@ gl::GLImage* Texture::GetLevelImage(GLint target,
|
| if (level >= 0 && face_index < face_infos_.size() &&
|
| static_cast<size_t>(level) < face_infos_[face_index].level_infos.size()) {
|
| const LevelInfo& info = face_infos_[face_index].level_infos[level];
|
| - if (info.target != 0) {
|
| - if (state)
|
| - *state = info.image_state;
|
| - return info.image.get();
|
| - }
|
| + if (info.target != 0)
|
| + return &info;
|
| }
|
| return NULL;
|
| }
|
|
|
| +gl::GLImage* Texture::GetLevelImage(GLint target,
|
| + GLint level,
|
| + ImageState* state) const {
|
| + const LevelInfo* info = GetLevelInfo(target, level);
|
| + if (!info)
|
| + return nullptr;
|
| +
|
| + if (state)
|
| + *state = info->image_state;
|
| + return info->image.get();
|
| +}
|
| +
|
| gl::GLImage* Texture::GetLevelImage(GLint target, GLint level) const {
|
| return GetLevelImage(target, level, nullptr);
|
| }
|
|
|
| +GLStreamTextureImage* Texture::GetLevelStreamTextureImage(GLint target,
|
| + GLint level) const {
|
| + const LevelInfo* info = GetLevelInfo(target, level);
|
| + if (!info)
|
| + return nullptr;
|
| +
|
| + return info->stream_texture_image.get();
|
| +}
|
| +
|
| void Texture::DumpLevelMemory(base::trace_event::ProcessMemoryDump* pmd,
|
| uint64_t client_tracing_id,
|
| const std::string& dump_name) const {
|
| @@ -1868,6 +1902,15 @@ void TextureManager::SetLevelImage(TextureRef* ref,
|
| ref->texture()->SetLevelImage(target, level, image, state);
|
| }
|
|
|
| +void TextureManager::SetLevelStreamTextureImage(TextureRef* ref,
|
| + GLenum target,
|
| + GLint level,
|
| + GLStreamTextureImage* image,
|
| + Texture::ImageState state) {
|
| + DCHECK(ref);
|
| + ref->texture()->SetLevelStreamTextureImage(target, level, image, state);
|
| +}
|
| +
|
| size_t TextureManager::GetSignatureSize() const {
|
| return sizeof(TextureTag) + sizeof(TextureSignature);
|
| }
|
|
|