| Index: gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| index 2dfacf16f20b6e95312adaa1782f8772df0afb49..b242f4b785ca349e4b73ef6525756cbadf5cea31 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| @@ -711,9 +711,7 @@ class GLES2DecoderImpl : public GLES2Decoder {
|
|
|
| // Gets the texture info for the given texture. Returns NULL if none exists.
|
| Texture* GetTexture(GLuint client_id) const {
|
| - Texture* info =
|
| - texture_manager()->GetTexture(client_id);
|
| - return info;
|
| + return texture_manager()->GetTexture(client_id);
|
| }
|
|
|
| // Deletes the texture info for the given texture.
|
| @@ -831,7 +829,7 @@ class GLES2DecoderImpl : public GLES2Decoder {
|
| // Extra validation for async tex(Sub)Image2D.
|
| bool ValidateAsyncTransfer(
|
| const char* function_name,
|
| - Texture* info,
|
| + Texture* texture,
|
| GLenum target,
|
| GLint level,
|
| const void * data);
|
| @@ -1052,7 +1050,7 @@ class GLES2DecoderImpl : public GLES2Decoder {
|
|
|
| // Clear any uncleared level in texture.
|
| // Returns false if there was a generated GL error.
|
| - bool ClearTexture(Texture* info);
|
| + bool ClearTexture(Texture* texture);
|
|
|
| // Clears any uncleared attachments attached to the given frame buffer.
|
| // Returns false if there was a generated GL error.
|
| @@ -1409,10 +1407,10 @@ class GLES2DecoderImpl : public GLES2Decoder {
|
| // Gets the texture id for a given target.
|
| Texture* GetTextureInfoForTarget(GLenum target) {
|
| TextureUnit& unit = state_.texture_units[state_.active_texture_unit];
|
| - Texture* info = NULL;
|
| + Texture* texture = NULL;
|
| switch (target) {
|
| case GL_TEXTURE_2D:
|
| - info = unit.bound_texture_2d;
|
| + texture = unit.bound_texture_2d;
|
| break;
|
| case GL_TEXTURE_CUBE_MAP:
|
| case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
|
| @@ -1421,29 +1419,29 @@ class GLES2DecoderImpl : public GLES2Decoder {
|
| case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
|
| case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
| case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
| - info = unit.bound_texture_cube_map;
|
| + texture = unit.bound_texture_cube_map;
|
| break;
|
| case GL_TEXTURE_EXTERNAL_OES:
|
| - info = unit.bound_texture_external_oes;
|
| + texture = unit.bound_texture_external_oes;
|
| break;
|
| case GL_TEXTURE_RECTANGLE_ARB:
|
| - info = unit.bound_texture_rectangle_arb;
|
| + texture = unit.bound_texture_rectangle_arb;
|
| break;
|
| default:
|
| NOTREACHED();
|
| return NULL;
|
| }
|
| - return info;
|
| + return texture;
|
| }
|
|
|
| Texture* GetTextureInfoForTargetUnlessDefault(
|
| GLenum target) {
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info)
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture)
|
| return NULL;
|
| - if (info == texture_manager()->GetDefaultTextureInfo(target))
|
| + if (texture == texture_manager()->GetDefaultTextureInfo(target))
|
| return NULL;
|
| - return info;
|
| + return texture;
|
| }
|
|
|
| GLenum GetBindTargetForSamplerType(GLenum type) {
|
| @@ -2263,23 +2261,25 @@ bool GLES2DecoderImpl::Initialize(
|
| for (uint32 tt = 0; tt < state_.texture_units.size(); ++tt) {
|
| glActiveTexture(GL_TEXTURE0 + tt);
|
| // We want the last bind to be 2D.
|
| - Texture* info;
|
| + Texture* texture;
|
| if (features().oes_egl_image_external) {
|
| - info = texture_manager()->GetDefaultTextureInfo(GL_TEXTURE_EXTERNAL_OES);
|
| - state_.texture_units[tt].bound_texture_external_oes = info;
|
| - glBindTexture(GL_TEXTURE_EXTERNAL_OES, info->service_id());
|
| + texture = texture_manager()->GetDefaultTextureInfo(
|
| + GL_TEXTURE_EXTERNAL_OES);
|
| + state_.texture_units[tt].bound_texture_external_oes = texture;
|
| + glBindTexture(GL_TEXTURE_EXTERNAL_OES, texture->service_id());
|
| }
|
| if (features().arb_texture_rectangle) {
|
| - info = texture_manager()->GetDefaultTextureInfo(GL_TEXTURE_RECTANGLE_ARB);
|
| - state_.texture_units[tt].bound_texture_rectangle_arb = info;
|
| - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, info->service_id());
|
| - }
|
| - info = texture_manager()->GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP);
|
| - state_.texture_units[tt].bound_texture_cube_map = info;
|
| - glBindTexture(GL_TEXTURE_CUBE_MAP, info->service_id());
|
| - info = texture_manager()->GetDefaultTextureInfo(GL_TEXTURE_2D);
|
| - state_.texture_units[tt].bound_texture_2d = info;
|
| - glBindTexture(GL_TEXTURE_2D, info->service_id());
|
| + texture = texture_manager()->GetDefaultTextureInfo(
|
| + GL_TEXTURE_RECTANGLE_ARB);
|
| + state_.texture_units[tt].bound_texture_rectangle_arb = texture;
|
| + glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texture->service_id());
|
| + }
|
| + texture = texture_manager()->GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP);
|
| + state_.texture_units[tt].bound_texture_cube_map = texture;
|
| + glBindTexture(GL_TEXTURE_CUBE_MAP, texture->service_id());
|
| + texture = texture_manager()->GetDefaultTextureInfo(GL_TEXTURE_2D);
|
| + state_.texture_units[tt].bound_texture_2d = texture;
|
| + glBindTexture(GL_TEXTURE_2D, texture->service_id());
|
| }
|
| glActiveTexture(GL_TEXTURE0);
|
| CHECK_GL_ERROR();
|
| @@ -2990,18 +2990,26 @@ void GLES2DecoderImpl::UpdateParentTextureInfo() {
|
| GL_UNSIGNED_BYTE,
|
| true);
|
| parent_texture_manager->SetParameter(
|
| + "UpdateParentTextureInfo",
|
| + this,
|
| offscreen_saved_color_texture_info_,
|
| GL_TEXTURE_MAG_FILTER,
|
| GL_NEAREST);
|
| parent_texture_manager->SetParameter(
|
| + "UpdateParentTextureInfo",
|
| + this,
|
| offscreen_saved_color_texture_info_,
|
| GL_TEXTURE_MIN_FILTER,
|
| GL_NEAREST);
|
| parent_texture_manager->SetParameter(
|
| + "UpdateParentTextureInfo",
|
| + this,
|
| offscreen_saved_color_texture_info_,
|
| GL_TEXTURE_WRAP_S,
|
| GL_CLAMP_TO_EDGE);
|
| parent_texture_manager->SetParameter(
|
| + "UpdateParentTextureInfo",
|
| + this,
|
| offscreen_saved_color_texture_info_,
|
| GL_TEXTURE_WRAP_T,
|
| GL_CLAMP_TO_EDGE);
|
| @@ -3040,8 +3048,7 @@ void GLES2DecoderImpl::SetAsyncPixelTransferDelegate(
|
|
|
| bool GLES2DecoderImpl::GetServiceTextureId(uint32 client_texture_id,
|
| uint32* service_texture_id) {
|
| - Texture* texture =
|
| - texture_manager()->GetTexture(client_texture_id);
|
| + Texture* texture = texture_manager()->GetTexture(client_texture_id);
|
| if (texture) {
|
| *service_texture_id = texture->service_id();
|
| return true;
|
| @@ -3241,7 +3248,7 @@ bool GLES2DecoderImpl::SetParent(GLES2Decoder* new_parent,
|
| new_parent_impl->CreateTexture(new_parent_texture_id, service_id);
|
| offscreen_saved_color_texture_info_->SetNotOwned();
|
| new_parent_impl->texture_manager()->
|
| - SetInfoTarget(offscreen_saved_color_texture_info_, GL_TEXTURE_2D);
|
| + SetTarget(offscreen_saved_color_texture_info_, GL_TEXTURE_2D);
|
|
|
| parent_ = base::AsWeakPtr<GLES2DecoderImpl>(new_parent_impl);
|
|
|
| @@ -3775,69 +3782,69 @@ void GLES2DecoderImpl::DoBindRenderbuffer(GLenum target, GLuint client_id) {
|
| }
|
|
|
| void GLES2DecoderImpl::DoBindTexture(GLenum target, GLuint client_id) {
|
| - Texture* info = NULL;
|
| + Texture* texture = NULL;
|
| GLuint service_id = 0;
|
| if (client_id != 0) {
|
| - info = GetTexture(client_id);
|
| - if (!info) {
|
| + texture = GetTexture(client_id);
|
| + if (!texture) {
|
| if (!group_->bind_generates_resource()) {
|
| LOG(ERROR) << "glBindTexture: id not generated by glGenTextures";
|
| current_decoder_error_ = error::kGenericError;
|
| return;
|
| }
|
|
|
| - // It's a new id so make a texture info for it.
|
| + // It's a new id so make a texture texture for it.
|
| glGenTextures(1, &service_id);
|
| DCHECK_NE(0u, service_id);
|
| CreateTexture(client_id, service_id);
|
| - info = GetTexture(client_id);
|
| + texture = GetTexture(client_id);
|
| IdAllocatorInterface* id_allocator =
|
| group_->GetIdAllocator(id_namespaces::kTextures);
|
| id_allocator->MarkAsUsed(client_id);
|
| }
|
| } else {
|
| - info = texture_manager()->GetDefaultTextureInfo(target);
|
| + texture = texture_manager()->GetDefaultTextureInfo(target);
|
| }
|
|
|
| // Check the texture exists
|
| // Check that we are not trying to bind it to a different target.
|
| - if (info->target() != 0 && info->target() != target) {
|
| + if (texture->target() != 0 && texture->target() != target) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glBindTexture", "texture bound to more than 1 target.");
|
| return;
|
| }
|
| - if (info->IsStreamTexture() && target != GL_TEXTURE_EXTERNAL_OES) {
|
| + if (texture->IsStreamTexture() && target != GL_TEXTURE_EXTERNAL_OES) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glBindTexture", "illegal target for stream texture.");
|
| return;
|
| }
|
| - LogClientServiceForInfo(info, client_id, "glBindTexture");
|
| - if (info->target() == 0) {
|
| - texture_manager()->SetInfoTarget(info, target);
|
| + LogClientServiceForInfo(texture, client_id, "glBindTexture");
|
| + if (texture->target() == 0) {
|
| + texture_manager()->SetTarget(texture, target);
|
| }
|
| - glBindTexture(target, info->service_id());
|
| + glBindTexture(target, texture->service_id());
|
|
|
| TextureUnit& unit = state_.texture_units[state_.active_texture_unit];
|
| unit.bind_target = target;
|
| switch (target) {
|
| case GL_TEXTURE_2D:
|
| - unit.bound_texture_2d = info;
|
| + unit.bound_texture_2d = texture;
|
| break;
|
| case GL_TEXTURE_CUBE_MAP:
|
| - unit.bound_texture_cube_map = info;
|
| + unit.bound_texture_cube_map = texture;
|
| break;
|
| case GL_TEXTURE_EXTERNAL_OES:
|
| - unit.bound_texture_external_oes = info;
|
| - if (info->IsStreamTexture()) {
|
| + unit.bound_texture_external_oes = texture;
|
| + if (texture->IsStreamTexture()) {
|
| DCHECK(stream_texture_manager_);
|
| StreamTexture* stream_tex =
|
| - stream_texture_manager_->LookupStreamTexture(info->service_id());
|
| + stream_texture_manager_->LookupStreamTexture(texture->service_id());
|
| if (stream_tex)
|
| stream_tex->Update();
|
| }
|
| break;
|
| case GL_TEXTURE_RECTANGLE_ARB:
|
| - unit.bound_texture_rectangle_arb = info;
|
| + unit.bound_texture_rectangle_arb = texture;
|
| break;
|
| default:
|
| NOTREACHED(); // Validation should prevent us getting here.
|
| @@ -3914,9 +3921,9 @@ void GLES2DecoderImpl::DoEnableVertexAttribArray(GLuint index) {
|
| }
|
|
|
| void GLES2DecoderImpl::DoGenerateMipmap(GLenum target) {
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info ||
|
| - !texture_manager()->CanGenerateMipmaps(info)) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture ||
|
| + !texture_manager()->CanGenerateMipmaps(texture)) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glGenerateMipmaps", "Can not generate mips");
|
| return;
|
| @@ -3925,13 +3932,13 @@ void GLES2DecoderImpl::DoGenerateMipmap(GLenum target) {
|
| if (target == GL_TEXTURE_CUBE_MAP) {
|
| for (int i = 0; i < 6; ++i) {
|
| GLenum face = GL_TEXTURE_CUBE_MAP_POSITIVE_X + i;
|
| - if (!texture_manager()->ClearTextureLevel(this, info, face, 0)) {
|
| + if (!texture_manager()->ClearTextureLevel(this, texture, face, 0)) {
|
| SetGLError(GL_OUT_OF_MEMORY, "glGenerateMipmaps", "dimensions too big");
|
| return;
|
| }
|
| }
|
| } else {
|
| - if (!texture_manager()->ClearTextureLevel(this, info, target, 0)) {
|
| + if (!texture_manager()->ClearTextureLevel(this, texture, target, 0)) {
|
| SetGLError(GL_OUT_OF_MEMORY, "glGenerateMipmaps", "dimensions too big");
|
| return;
|
| }
|
| @@ -3949,11 +3956,11 @@ void GLES2DecoderImpl::DoGenerateMipmap(GLenum target) {
|
| }
|
| glGenerateMipmapEXT(target);
|
| if (workarounds().set_texture_filter_before_generating_mipmap) {
|
| - glTexParameteri(target, GL_TEXTURE_MIN_FILTER, info->min_filter());
|
| + glTexParameteri(target, GL_TEXTURE_MIN_FILTER, texture->min_filter());
|
| }
|
| GLenum error = PeekGLError();
|
| if (error == GL_NO_ERROR) {
|
| - texture_manager()->MarkMipmapsGenerated(info);
|
| + texture_manager()->MarkMipmapsGenerated(texture);
|
| }
|
| }
|
|
|
| @@ -4801,15 +4808,15 @@ void GLES2DecoderImpl::DoFramebufferTexture2D(
|
| return;
|
| }
|
| GLuint service_id = 0;
|
| - Texture* info = NULL;
|
| + Texture* texture = NULL;
|
| if (client_texture_id) {
|
| - info = GetTexture(client_texture_id);
|
| - if (!info) {
|
| + texture = GetTexture(client_texture_id);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glFramebufferTexture2D", "unknown texture");
|
| return;
|
| }
|
| - service_id = info->service_id();
|
| + service_id = texture->service_id();
|
| }
|
|
|
| if (!texture_manager()->ValidForTarget(textarget, level, 0, 0, 1)) {
|
| @@ -4822,7 +4829,7 @@ void GLES2DecoderImpl::DoFramebufferTexture2D(
|
| glFramebufferTexture2DEXT(target, attachment, textarget, service_id, level);
|
| GLenum error = PeekGLError();
|
| if (error == GL_NO_ERROR) {
|
| - framebuffer_info->AttachTexture(attachment, info, textarget, level);
|
| + framebuffer_info->AttachTexture(attachment, texture, textarget, level);
|
| }
|
| if (framebuffer_info == state_.bound_draw_framebuffer) {
|
| clear_state_dirty_ = true;
|
| @@ -5045,75 +5052,50 @@ void GLES2DecoderImpl::DoLinkProgram(GLuint program_id) {
|
|
|
| void GLES2DecoderImpl::DoTexParameterf(
|
| GLenum target, GLenum pname, GLfloat param) {
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_VALUE, "glTexParameterf", "unknown texture");
|
| return;
|
| }
|
|
|
| - GLenum error = texture_manager()->SetParameter(
|
| - info, pname, static_cast<GLint>(param));
|
| - if (error != GL_NO_ERROR) {
|
| - SetGLErrorInvalidParam(
|
| - error, "glTexParameterf", pname, static_cast<GLint>(param));
|
| - return;
|
| - }
|
| - glTexParameterf(target, pname, param);
|
| + texture_manager()->SetParameter(
|
| + "glTexParameterf", this, texture, pname, static_cast<GLint>(param));
|
| }
|
|
|
| void GLES2DecoderImpl::DoTexParameteri(
|
| GLenum target, GLenum pname, GLint param) {
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_VALUE, "glTexParameteri", "unknown texture");
|
| return;
|
| }
|
|
|
| - GLenum error = texture_manager()->SetParameter(info, pname, param);
|
| - if (error != GL_NO_ERROR) {
|
| - SetGLErrorInvalidParam(error, "glTexParameteri", pname, param);
|
| - return;
|
| - }
|
| - // Texture tracking pools exist only for the command decoder, so
|
| - // do not pass them on to the native GL implementation.
|
| - if (pname == GL_TEXTURE_POOL_CHROMIUM) {
|
| - return;
|
| - }
|
| - glTexParameteri(target, pname, param);
|
| + texture_manager()->SetParameter(
|
| + "glTexParameteri", this, texture, pname, param);
|
| }
|
|
|
| void GLES2DecoderImpl::DoTexParameterfv(
|
| GLenum target, GLenum pname, const GLfloat* params) {
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_VALUE, "glTexParameterfv", "unknown texture");
|
| return;
|
| }
|
|
|
| - GLenum error =texture_manager()->SetParameter(
|
| - info, pname, static_cast<GLint>(params[0]));
|
| - if (error != GL_NO_ERROR) {
|
| - SetGLErrorInvalidParam(
|
| - error, "glTexParameterfv", pname, static_cast<GLint>(params[0]));
|
| - return;
|
| - }
|
| - glTexParameterfv(target, pname, params);
|
| + texture_manager()->SetParameter(
|
| + "glTexParameterfv", this, texture, pname, static_cast<GLint>(params[0]));
|
| }
|
|
|
| void GLES2DecoderImpl::DoTexParameteriv(
|
| GLenum target, GLenum pname, const GLint* params) {
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_VALUE, "glTexParameteriv", "unknown texture");
|
| return;
|
| }
|
|
|
| - GLenum error = texture_manager()->SetParameter(info, pname, *params);
|
| - if (error != GL_NO_ERROR) {
|
| - SetGLErrorInvalidParam(error, "glTexParameteriv", pname, *params);
|
| - return;
|
| - }
|
| - glTexParameteriv(target, pname, params);
|
| + texture_manager()->SetParameter(
|
| + "glTexParameteriv", this, texture, pname, *params);
|
| }
|
|
|
| bool GLES2DecoderImpl::CheckCurrentProgram(const char* function_name) {
|
| @@ -5669,9 +5651,9 @@ bool GLES2DecoderImpl::SetBlackTextureForNonRenderableTextures() {
|
| GLuint texture_unit_index = uniform_info->texture_units[jj];
|
| if (texture_unit_index < state_.texture_units.size()) {
|
| TextureUnit& texture_unit = state_.texture_units[texture_unit_index];
|
| - Texture* texture_info =
|
| + Texture* texture =
|
| texture_unit.GetInfoForSamplerType(uniform_info->type);
|
| - if (!texture_info || !texture_manager()->CanRender(texture_info)) {
|
| + if (!texture || !texture_manager()->CanRender(texture)) {
|
| textures_set = true;
|
| glActiveTexture(GL_TEXTURE0 + texture_unit_index);
|
| glBindTexture(
|
| @@ -5703,18 +5685,17 @@ void GLES2DecoderImpl::RestoreStateForNonRenderableTextures() {
|
| GLuint texture_unit_index = uniform_info->texture_units[jj];
|
| if (texture_unit_index < state_.texture_units.size()) {
|
| TextureUnit& texture_unit = state_.texture_units[texture_unit_index];
|
| - Texture* texture_info =
|
| - uniform_info->type == GL_SAMPLER_2D ?
|
| - texture_unit.bound_texture_2d :
|
| - texture_unit.bound_texture_cube_map;
|
| - if (!texture_info || !texture_manager()->CanRender(texture_info)) {
|
| + Texture* texture = uniform_info->type == GL_SAMPLER_2D ?
|
| + texture_unit.bound_texture_2d :
|
| + texture_unit.bound_texture_cube_map;
|
| + if (!texture || !texture_manager()->CanRender(texture)) {
|
| glActiveTexture(GL_TEXTURE0 + texture_unit_index);
|
| // Get the texture info that was previously bound here.
|
| - texture_info = texture_unit.bind_target == GL_TEXTURE_2D ?
|
| + texture = texture_unit.bind_target == GL_TEXTURE_2D ?
|
| texture_unit.bound_texture_2d :
|
| texture_unit.bound_texture_cube_map;
|
| glBindTexture(texture_unit.bind_target,
|
| - texture_info ? texture_info->service_id() : 0);
|
| + texture ? texture->service_id() : 0);
|
| }
|
| }
|
| }
|
| @@ -5741,10 +5722,10 @@ bool GLES2DecoderImpl::ClearUnclearedTextures() {
|
| GLuint texture_unit_index = uniform_info->texture_units[jj];
|
| if (texture_unit_index < state_.texture_units.size()) {
|
| TextureUnit& texture_unit = state_.texture_units[texture_unit_index];
|
| - Texture* texture_info =
|
| + Texture* texture =
|
| texture_unit.GetInfoForSamplerType(uniform_info->type);
|
| - if (texture_info && !texture_info->SafeToRenderFrom()) {
|
| - if (!texture_manager()->ClearRenderableLevels(this, texture_info)) {
|
| + if (texture && !texture->SafeToRenderFrom()) {
|
| + if (!texture_manager()->ClearRenderableLevels(this, texture)) {
|
| return false;
|
| }
|
| }
|
| @@ -7326,8 +7307,8 @@ bool GLES2DecoderImpl::ClearLevel(
|
| }
|
| y += tile_height;
|
| }
|
| - Texture* info = GetTextureInfoForTarget(bind_target);
|
| - glBindTexture(bind_target, info ? info->service_id() : 0);
|
| + Texture* texture = GetTextureInfoForTarget(bind_target);
|
| + glBindTexture(bind_target, texture ? texture->service_id() : 0);
|
| return true;
|
| }
|
|
|
| @@ -7499,13 +7480,13 @@ error::Error GLES2DecoderImpl::DoCompressedTexImage2D(
|
| "glCompressedTexImage2D", "dimensions out of range");
|
| return error::kNoError;
|
| }
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_VALUE,
|
| "glCompressedTexImage2D", "unknown texture target");
|
| return error::kNoError;
|
| }
|
| - if (info->IsImmutable()) {
|
| + if (texture->IsImmutable()) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glCompressedTexImage2D", "texture is immutable");
|
| return error::kNoError;
|
| @@ -7523,7 +7504,7 @@ error::Error GLES2DecoderImpl::DoCompressedTexImage2D(
|
| return error::kNoError;
|
| }
|
|
|
| - if (info->IsAttachedToFramebuffer()) {
|
| + if (texture->IsAttachedToFramebuffer()) {
|
| clear_state_dirty_ = true;
|
| // TODO(gman): If textures tracked which framebuffers they were attached to
|
| // we could just mark those framebuffers as not complete.
|
| @@ -7542,7 +7523,7 @@ error::Error GLES2DecoderImpl::DoCompressedTexImage2D(
|
| GLenum error = PeekGLError();
|
| if (error == GL_NO_ERROR) {
|
| texture_manager()->SetLevelInfo(
|
| - info, target, level, internal_format, width, height, 1, border, 0, 0,
|
| + texture, target, level, internal_format, width, height, 1, border, 0, 0,
|
| true);
|
| }
|
| return error::kNoError;
|
| @@ -7728,13 +7709,13 @@ bool GLES2DecoderImpl::ValidateTexImage2D(
|
| function_name, "can not supply data for depth or stencil textures");
|
| return false;
|
| }
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| function_name, "unknown texture for target");
|
| return false;
|
| }
|
| - if (info->IsImmutable()) {
|
| + if (texture->IsImmutable()) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| function_name, "texture is immutable");
|
| return false;
|
| @@ -7763,28 +7744,28 @@ void GLES2DecoderImpl::DoTexImage2D(
|
| return;
|
| }
|
|
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| GLsizei tex_width = 0;
|
| GLsizei tex_height = 0;
|
| GLenum tex_type = 0;
|
| GLenum tex_format = 0;
|
| bool level_is_same =
|
| - info->GetLevelSize(target, level, &tex_width, &tex_height) &&
|
| - info->GetLevelType(target, level, &tex_type, &tex_format) &&
|
| + texture->GetLevelSize(target, level, &tex_width, &tex_height) &&
|
| + texture->GetLevelType(target, level, &tex_type, &tex_format) &&
|
| width == tex_width && height == tex_height &&
|
| type == tex_type && format == tex_format;
|
|
|
| if (level_is_same && !pixels) {
|
| - // Just set the level info but mark the texture as uncleared.
|
| + // Just set the level texture but mark the texture as uncleared.
|
| texture_manager()->SetLevelInfo(
|
| - info,
|
| + texture,
|
| target, level, internal_format, width, height, 1, border, format, type,
|
| false);
|
| tex_image_2d_failed_ = false;
|
| return;
|
| }
|
|
|
| - if (info->IsAttachedToFramebuffer()) {
|
| + if (texture->IsAttachedToFramebuffer()) {
|
| clear_state_dirty_ = true;
|
| // TODO(gman): If textures tracked which framebuffers they were attached to
|
| // we could just mark those framebuffers as not complete.
|
| @@ -7793,7 +7774,7 @@ void GLES2DecoderImpl::DoTexImage2D(
|
|
|
| if (!teximage2d_faster_than_texsubimage2d_ && level_is_same && pixels) {
|
| glTexSubImage2D(target, level, 0, 0, width, height, format, type, pixels);
|
| - texture_manager()->SetLevelCleared(info, target, level, true);
|
| + texture_manager()->SetLevelCleared(texture, target, level, true);
|
| tex_image_2d_failed_ = false;
|
| return;
|
| }
|
| @@ -7805,7 +7786,7 @@ void GLES2DecoderImpl::DoTexImage2D(
|
| GLenum error = PeekGLError();
|
| if (error == GL_NO_ERROR) {
|
| texture_manager()->SetLevelInfo(
|
| - info,
|
| + texture,
|
| target, level, internal_format, width, height, 1, border, format, type,
|
| pixels != NULL);
|
| tex_image_2d_failed_ = false;
|
| @@ -7885,15 +7866,15 @@ void GLES2DecoderImpl::DoCompressedTexSubImage2D(
|
| GLenum format,
|
| GLsizei image_size,
|
| const void * data) {
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glCompressedTexSubImage2D", "unknown texture for target");
|
| return;
|
| }
|
| GLenum type = 0;
|
| GLenum internal_format = 0;
|
| - if (!info->GetLevelType(target, level, &type, &internal_format)) {
|
| + if (!texture->GetLevelType(target, level, &type, &internal_format)) {
|
| SetGLError(
|
| GL_INVALID_OPERATION,
|
| "glCompressedTexSubImage2D", "level does not exist.");
|
| @@ -7905,7 +7886,7 @@ void GLES2DecoderImpl::DoCompressedTexSubImage2D(
|
| "glCompressedTexSubImage2D", "format does not match internal format.");
|
| return;
|
| }
|
| - if (!info->ValidForTexture(
|
| + if (!texture->ValidForTexture(
|
| target, level, xoffset, yoffset, width, height, format, type)) {
|
| SetGLError(GL_INVALID_VALUE,
|
| "glCompressedTexSubImage2D", "bad dimensions.");
|
| @@ -7916,7 +7897,7 @@ void GLES2DecoderImpl::DoCompressedTexSubImage2D(
|
| "glCompressedTexSubImage2D", width, height, format, image_size) ||
|
| !ValidateCompressedTexSubDimensions(
|
| "glCompressedTexSubImage2D",
|
| - target, level, xoffset, yoffset, width, height, format, info)) {
|
| + target, level, xoffset, yoffset, width, height, format, texture)) {
|
| return;
|
| }
|
|
|
| @@ -7956,13 +7937,13 @@ void GLES2DecoderImpl::DoCopyTexImage2D(
|
| GLsizei height,
|
| GLint border) {
|
| DCHECK(!ShouldDeferReads());
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glCopyTexImage2D", "unknown texture for target");
|
| return;
|
| }
|
| - if (info->IsImmutable()) {
|
| + if (texture->IsImmutable()) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glCopyTexImage2D", "texture is immutable");
|
| }
|
| @@ -8014,7 +7995,7 @@ void GLES2DecoderImpl::DoCopyTexImage2D(
|
| ScopedResolvedFrameBufferBinder binder(this, false, true);
|
| gfx::Size size = GetBoundReadFrameBufferSize();
|
|
|
| - if (info->IsAttachedToFramebuffer()) {
|
| + if (texture->IsAttachedToFramebuffer()) {
|
| clear_state_dirty_ = true;
|
| // TODO(gman): If textures tracked which framebuffers they were attached to
|
| // we could just mark those framebuffers as not complete.
|
| @@ -8035,9 +8016,9 @@ void GLES2DecoderImpl::DoCopyTexImage2D(
|
| copyHeight != height) {
|
| // some part was clipped so clear the texture.
|
| if (!ClearLevel(
|
| - info->service_id(), info->target(),
|
| + texture->service_id(), texture->target(),
|
| target, level, internal_format, GL_UNSIGNED_BYTE, width, height,
|
| - info->IsImmutable())) {
|
| + texture->IsImmutable())) {
|
| SetGLError(GL_OUT_OF_MEMORY, "glCopyTexImage2D", "dimensions too big");
|
| return;
|
| }
|
| @@ -8057,7 +8038,7 @@ void GLES2DecoderImpl::DoCopyTexImage2D(
|
| GLenum error = PeekGLError();
|
| if (error == GL_NO_ERROR) {
|
| texture_manager()->SetLevelInfo(
|
| - info, target, level, internal_format, width, height, 1,
|
| + texture, target, level, internal_format, width, height, 1,
|
| border, internal_format, GL_UNSIGNED_BYTE, true);
|
| }
|
| }
|
| @@ -8072,22 +8053,22 @@ void GLES2DecoderImpl::DoCopyTexSubImage2D(
|
| GLsizei width,
|
| GLsizei height) {
|
| DCHECK(!ShouldDeferReads());
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glCopyTexSubImage2D", "unknown texture for target");
|
| return;
|
| }
|
| GLenum type = 0;
|
| GLenum format = 0;
|
| - if (!info->GetLevelType(target, level, &type, &format) ||
|
| - !info->ValidForTexture(
|
| + if (!texture->GetLevelType(target, level, &type, &format) ||
|
| + !texture->ValidForTexture(
|
| target, level, xoffset, yoffset, width, height, format, type)) {
|
| SetGLError(GL_INVALID_VALUE,
|
| "glCopyTexSubImage2D", "bad dimensions.");
|
| return;
|
| }
|
| - if (info->AsyncTransferIsInProgress()) {
|
| + if (texture->AsyncTransferIsInProgress()) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glCopyTexSubImage2D", "async upload pending for texture");
|
| return;
|
| @@ -8125,7 +8106,7 @@ void GLES2DecoderImpl::DoCopyTexSubImage2D(
|
| Clip(x, width, size.width(), ©X, ©Width);
|
| Clip(y, height, size.height(), ©Y, ©Height);
|
|
|
| - if (!texture_manager()->ClearTextureLevel(this, info, target, level)) {
|
| + if (!texture_manager()->ClearTextureLevel(this, texture, target, level)) {
|
| SetGLError(GL_OUT_OF_MEMORY, "glCopyTexSubImage2D", "dimensions too big");
|
| return;
|
| }
|
| @@ -8194,15 +8175,15 @@ bool GLES2DecoderImpl::ValidateTexSubImage2D(
|
| SetGLErrorInvalidEnum(function_name, type, "type");
|
| return false;
|
| }
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| function_name, "unknown texture for target");
|
| return false;
|
| }
|
| GLenum current_type = 0;
|
| GLenum internal_format = 0;
|
| - if (!info->GetLevelType(target, level, ¤t_type, &internal_format)) {
|
| + if (!texture->GetLevelType(target, level, ¤t_type, &internal_format)) {
|
| SetGLError(
|
| GL_INVALID_OPERATION, function_name, "level does not exist.");
|
| return false;
|
| @@ -8217,12 +8198,12 @@ bool GLES2DecoderImpl::ValidateTexSubImage2D(
|
| function_name, "type does not match type of texture.");
|
| return false;
|
| }
|
| - if (info->AsyncTransferIsInProgress()) {
|
| + if (texture->AsyncTransferIsInProgress()) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| function_name, "async upload pending for texture");
|
| return false;
|
| }
|
| - if (!info->ValidForTexture(
|
| + if (!texture->ValidForTexture(
|
| target, level, xoffset, yoffset, width, height, format, type)) {
|
| SetGLError(GL_INVALID_VALUE, function_name, "bad dimensions.");
|
| return false;
|
| @@ -8256,14 +8237,14 @@ error::Error GLES2DecoderImpl::DoTexSubImage2D(
|
| xoffset, yoffset, width, height, format, type, data)) {
|
| return error;
|
| }
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| GLsizei tex_width = 0;
|
| GLsizei tex_height = 0;
|
| - bool ok = info->GetLevelSize(target, level, &tex_width, &tex_height);
|
| + bool ok = texture->GetLevelSize(target, level, &tex_width, &tex_height);
|
| DCHECK(ok);
|
| if (xoffset != 0 || yoffset != 0 ||
|
| width != tex_width || height != tex_height) {
|
| - if (!texture_manager()->ClearTextureLevel(this, info, target, level)) {
|
| + if (!texture_manager()->ClearTextureLevel(this, texture, target, level)) {
|
| SetGLError(GL_OUT_OF_MEMORY, "glTexSubImage2D", "dimensions too big");
|
| return error::kNoError;
|
| }
|
| @@ -8273,7 +8254,7 @@ error::Error GLES2DecoderImpl::DoTexSubImage2D(
|
| return error::kNoError;
|
| }
|
|
|
| - if (teximage2d_faster_than_texsubimage2d_ && !info->IsImmutable()) {
|
| + if (teximage2d_faster_than_texsubimage2d_ && !texture->IsImmutable()) {
|
| ScopedTextureUploadTimer timer(this);
|
| // NOTE: In OpenGL ES 2.0 border is always zero and format is always the
|
| // same as internal_foramt. If that changes we'll need to look them up.
|
| @@ -8284,7 +8265,7 @@ error::Error GLES2DecoderImpl::DoTexSubImage2D(
|
| glTexSubImage2D(
|
| target, level, xoffset, yoffset, width, height, format, type, data);
|
| }
|
| - texture_manager()->SetLevelCleared(info, target, level, true);
|
| + texture_manager()->SetLevelCleared(texture, target, level, true);
|
| return error::kNoError;
|
| }
|
|
|
| @@ -9306,23 +9287,22 @@ error::Error GLES2DecoderImpl::HandleCreateStreamTextureCHROMIUM(
|
| if (!result)
|
| return error::kOutOfBounds;
|
| *result = GL_ZERO;
|
| - Texture* info =
|
| - texture_manager()->GetTexture(client_id);
|
| - if (!info) {
|
| + Texture* texture = texture_manager()->GetTexture(client_id);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_VALUE,
|
| "glCreateStreamTextureCHROMIUM", ""
|
| "bad texture id.");
|
| return error::kNoError;
|
| }
|
|
|
| - if (info->IsStreamTexture()) {
|
| + if (texture->IsStreamTexture()) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glCreateStreamTextureCHROMIUM", ""
|
| "is already a stream texture.");
|
| return error::kNoError;
|
| }
|
|
|
| - if (info->target() && info->target() != GL_TEXTURE_EXTERNAL_OES) {
|
| + if (texture->target() && texture->target() != GL_TEXTURE_EXTERNAL_OES) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glCreateStreamTextureCHROMIUM", ""
|
| "is already bound to incompatible target.");
|
| @@ -9333,10 +9313,10 @@ error::Error GLES2DecoderImpl::HandleCreateStreamTextureCHROMIUM(
|
| return error::kInvalidArguments;
|
|
|
| GLuint object_id = stream_texture_manager_->CreateStreamTexture(
|
| - info->service_id(), client_id);
|
| + texture->service_id(), client_id);
|
|
|
| if (object_id) {
|
| - info->SetStreamTexture(true);
|
| + texture->SetStreamTexture(true);
|
| } else {
|
| SetGLError(GL_OUT_OF_MEMORY,
|
| "glCreateStreamTextureCHROMIUM", ""
|
| @@ -9351,14 +9331,13 @@ error::Error GLES2DecoderImpl::HandleDestroyStreamTextureCHROMIUM(
|
| uint32 immediate_data_size,
|
| const cmds::DestroyStreamTextureCHROMIUM& c) {
|
| GLuint client_id = c.texture;
|
| - Texture* info =
|
| - texture_manager()->GetTexture(client_id);
|
| - if (info && info->IsStreamTexture()) {
|
| + Texture* texture = texture_manager()->GetTexture(client_id);
|
| + if (texture && texture->IsStreamTexture()) {
|
| if (!stream_texture_manager_)
|
| return error::kInvalidArguments;
|
|
|
| - stream_texture_manager_->DestroyStreamTexture(info->service_id());
|
| - info->SetStreamTexture(false);
|
| + stream_texture_manager_->DestroyStreamTexture(texture->service_id());
|
| + texture->SetStreamTexture(false);
|
| } else {
|
| SetGLError(GL_INVALID_VALUE,
|
| "glDestroyStreamTextureCHROMIUM", "bad texture id.");
|
| @@ -9412,9 +9391,8 @@ void GLES2DecoderImpl::DoTexImageIOSurface2DCHROMIUM(
|
|
|
| // Default target might be conceptually valid, but disallow it to avoid
|
| // accidents.
|
| - Texture* info = GetTextureInfoForTargetUnlessDefault(
|
| - target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTargetUnlessDefault(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glTexImageIOSurface2DCHROMIUM", "no rectangle texture bound");
|
| return;
|
| @@ -9434,11 +9412,11 @@ void GLES2DecoderImpl::DoTexImageIOSurface2DCHROMIUM(
|
| }
|
|
|
| // Release any IOSurface previously bound to this texture.
|
| - ReleaseIOSurfaceForTexture(info->service_id());
|
| + ReleaseIOSurfaceForTexture(texture->service_id());
|
|
|
| // Make sure we release the IOSurface even if CGLTexImageIOSurface2D fails.
|
| texture_to_io_surface_map_.insert(
|
| - std::make_pair(info->service_id(), surface));
|
| + std::make_pair(texture->service_id(), surface));
|
|
|
| CGLContextObj context =
|
| static_cast<CGLContextObj>(context_->GetHandle());
|
| @@ -9462,7 +9440,7 @@ void GLES2DecoderImpl::DoTexImageIOSurface2DCHROMIUM(
|
| }
|
|
|
| texture_manager()->SetLevelInfo(
|
| - info, target, 0, GL_RGBA, width, height, 1, 0,
|
| + texture, target, 0, GL_RGBA, width, height, 1, 0,
|
| GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, true);
|
|
|
| #else
|
| @@ -9519,10 +9497,10 @@ static GLenum ExtractFormatFromStorageFormat(GLenum internalformat) {
|
| void GLES2DecoderImpl::DoCopyTextureCHROMIUM(
|
| GLenum target, GLuint source_id, GLuint dest_id, GLint level,
|
| GLenum internal_format) {
|
| - Texture* dest_info = GetTexture(dest_id);
|
| - Texture* source_info = GetTexture(source_id);
|
| + Texture* dest_texture = GetTexture(dest_id);
|
| + Texture* source_texture = GetTexture(source_id);
|
|
|
| - if (!source_info || !dest_info) {
|
| + if (!source_texture || !dest_texture) {
|
| SetGLError(GL_INVALID_VALUE, "glCopyTextureCHROMIUM", "unknown texture id");
|
| return;
|
| }
|
| @@ -9533,15 +9511,15 @@ void GLES2DecoderImpl::DoCopyTextureCHROMIUM(
|
| return;
|
| }
|
|
|
| - if (dest_info->target() != GL_TEXTURE_2D ||
|
| - source_info->target() != GL_TEXTURE_2D) {
|
| + if (dest_texture->target() != GL_TEXTURE_2D ||
|
| + source_texture->target() != GL_TEXTURE_2D) {
|
| SetGLError(GL_INVALID_VALUE,
|
| "glCopyTextureCHROMIUM", "invalid texture target binding");
|
| return;
|
| }
|
|
|
| int source_width, source_height, dest_width, dest_height;
|
| - if (!source_info->GetLevelSize(GL_TEXTURE_2D, 0, &source_width,
|
| + if (!source_texture->GetLevelSize(GL_TEXTURE_2D, 0, &source_width,
|
| &source_height)) {
|
| SetGLError(GL_INVALID_VALUE,
|
| "glCopyTextureChromium", "source texture has no level 0");
|
| @@ -9569,17 +9547,16 @@ void GLES2DecoderImpl::DoCopyTextureCHROMIUM(
|
|
|
| GLenum dest_type;
|
| GLenum dest_internal_format;
|
| - bool dest_level_defined = dest_info->GetLevelSize(GL_TEXTURE_2D, level,
|
| - &dest_width,
|
| - &dest_height);
|
| + bool dest_level_defined = dest_texture->GetLevelSize(
|
| + GL_TEXTURE_2D, level, &dest_width, &dest_height);
|
|
|
| if (dest_level_defined) {
|
| - dest_info->GetLevelType(GL_TEXTURE_2D, level, &dest_type,
|
| - &dest_internal_format);
|
| + dest_texture->GetLevelType(GL_TEXTURE_2D, level, &dest_type,
|
| + &dest_internal_format);
|
| } else {
|
| GLenum source_internal_format;
|
| - source_info->GetLevelType(GL_TEXTURE_2D, 0, &dest_type,
|
| - &source_internal_format);
|
| + source_texture->GetLevelType(GL_TEXTURE_2D, 0, &dest_type,
|
| + &source_internal_format);
|
| }
|
|
|
| // Resize the destination texture to the dimensions of the source texture.
|
| @@ -9588,7 +9565,7 @@ void GLES2DecoderImpl::DoCopyTextureCHROMIUM(
|
| dest_internal_format != internal_format) {
|
| // Ensure that the glTexImage2D succeeds.
|
| CopyRealGLErrorsToWrapper();
|
| - glBindTexture(GL_TEXTURE_2D, dest_info->service_id());
|
| + glBindTexture(GL_TEXTURE_2D, dest_texture->service_id());
|
| WrappedTexImage2D(
|
| GL_TEXTURE_2D, level, internal_format, source_width, source_height,
|
| 0, internal_format, dest_type, NULL);
|
| @@ -9599,17 +9576,18 @@ void GLES2DecoderImpl::DoCopyTextureCHROMIUM(
|
| }
|
|
|
| texture_manager()->SetLevelInfo(
|
| - dest_info, GL_TEXTURE_2D, level, internal_format, source_width,
|
| + dest_texture, GL_TEXTURE_2D, level, internal_format, source_width,
|
| source_height, 1, 0, internal_format, dest_type, true);
|
| } else {
|
| - texture_manager()->SetLevelCleared(dest_info, GL_TEXTURE_2D, level, true);
|
| + texture_manager()->SetLevelCleared(
|
| + dest_texture, GL_TEXTURE_2D, level, true);
|
| }
|
|
|
| copy_texture_CHROMIUM_->DoCopyTexture(this,
|
| - source_info->target(),
|
| - dest_info->target(),
|
| - source_info->service_id(),
|
| - dest_info->service_id(), level,
|
| + source_texture->target(),
|
| + dest_texture->target(),
|
| + source_texture->service_id(),
|
| + dest_texture->service_id(), level,
|
| source_width, source_height,
|
| unpack_flip_y_,
|
| unpack_premultiply_alpha_,
|
| @@ -9674,16 +9652,16 @@ void GLES2DecoderImpl::DoTexStorage2DEXT(
|
| GL_INVALID_VALUE, "glTexStorage2DEXT", "dimensions out of range");
|
| return;
|
| }
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glTexStorage2DEXT", "unknown texture for target");
|
| return;
|
| }
|
| - if (info->IsAttachedToFramebuffer()) {
|
| + if (texture->IsAttachedToFramebuffer()) {
|
| clear_state_dirty_ = true;
|
| }
|
| - if (info->IsImmutable()) {
|
| + if (texture->IsImmutable()) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glTexStorage2DEXT", "texture is immutable");
|
| return;
|
| @@ -9724,12 +9702,12 @@ void GLES2DecoderImpl::DoTexStorage2DEXT(
|
| GLsizei level_height = height;
|
| for (int ii = 0; ii < levels; ++ii) {
|
| texture_manager()->SetLevelInfo(
|
| - info, target, ii, format, level_width, level_height, 1, 0, format,
|
| + texture, target, ii, format, level_width, level_height, 1, 0, format,
|
| type, false);
|
| level_width = std::max(1, level_width >> 1);
|
| level_height = std::max(1, level_height >> 1);
|
| }
|
| - info->SetImmutable(true);
|
| + texture->SetImmutable(true);
|
| }
|
| }
|
|
|
| @@ -9748,14 +9726,14 @@ error::Error GLES2DecoderImpl::HandleGenMailboxCHROMIUM(
|
|
|
| void GLES2DecoderImpl::DoProduceTextureCHROMIUM(GLenum target,
|
| const GLbyte* mailbox) {
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glProduceTextureCHROMIUM", "unknown texture for target");
|
| return;
|
| }
|
|
|
| - TextureDefinition* definition = texture_manager()->Save(info);
|
| + TextureDefinition* definition = texture_manager()->Save(texture);
|
| if (!definition) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glProduceTextureCHROMIUM", "invalid texture");
|
| @@ -9767,20 +9745,21 @@ void GLES2DecoderImpl::DoProduceTextureCHROMIUM(GLenum target,
|
| *reinterpret_cast<const MailboxName*>(mailbox),
|
| definition,
|
| texture_manager())) {
|
| - bool success = texture_manager()->Restore(info, definition);
|
| + bool success = texture_manager()->Restore(
|
| + "glProductTextureCHROMIUM", this, texture, definition);
|
| DCHECK(success);
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glProduceTextureCHROMIUM", "invalid mailbox name");
|
| return;
|
| }
|
|
|
| - glBindTexture(info->target(), info->service_id());
|
| + glBindTexture(texture->target(), texture->service_id());
|
| }
|
|
|
| void GLES2DecoderImpl::DoConsumeTextureCHROMIUM(GLenum target,
|
| const GLbyte* mailbox) {
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glConsumeTextureCHROMIUM", "unknown texture for target");
|
| return;
|
| @@ -9796,13 +9775,12 @@ void GLES2DecoderImpl::DoConsumeTextureCHROMIUM(GLenum target,
|
| return;
|
| }
|
|
|
| - if (!texture_manager()->Restore(info, definition.release())) {
|
| + if (!texture_manager()->Restore(
|
| + "glConsumeTextureCHROMIUM", this, texture, definition.release())) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glConsumeTextureCHROMIUM", "invalid texture");
|
| return;
|
| }
|
| -
|
| - glBindTexture(info->target(), info->service_id());
|
| }
|
|
|
| void GLES2DecoderImpl::DoInsertEventMarkerEXT(
|
| @@ -9840,9 +9818,8 @@ void GLES2DecoderImpl::DoBindTexImage2DCHROMIUM(
|
|
|
| // Default target might be conceptually valid, but disallow it to avoid
|
| // accidents.
|
| - Texture* info = GetTextureInfoForTargetUnlessDefault(
|
| - target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTargetUnlessDefault(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glBindTexImage2DCHROMIUM", "no texture bound");
|
| return;
|
| @@ -9865,9 +9842,9 @@ void GLES2DecoderImpl::DoBindTexImage2DCHROMIUM(
|
|
|
| gfx::Size size = gl_image->GetSize();
|
| texture_manager()->SetLevelInfo(
|
| - info, target, 0, GL_RGBA, size.width(), size.height(), 1, 0,
|
| + texture, target, 0, GL_RGBA, size.width(), size.height(), 1, 0,
|
| GL_RGBA, GL_UNSIGNED_BYTE, true);
|
| - texture_manager()->SetLevelImage(info, target, 0, gl_image);
|
| + texture_manager()->SetLevelImage(texture, target, 0, gl_image);
|
| }
|
|
|
| void GLES2DecoderImpl::DoReleaseTexImage2DCHROMIUM(
|
| @@ -9883,9 +9860,8 @@ void GLES2DecoderImpl::DoReleaseTexImage2DCHROMIUM(
|
|
|
| // Default target might be conceptually valid, but disallow it to avoid
|
| // accidents.
|
| - Texture* info = GetTextureInfoForTargetUnlessDefault(
|
| - target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTargetUnlessDefault(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glReleaseTexImage2DCHROMIUM", "no texture bound");
|
| return;
|
| @@ -9900,13 +9876,13 @@ void GLES2DecoderImpl::DoReleaseTexImage2DCHROMIUM(
|
| }
|
|
|
| // Do nothing when image is not currently bound.
|
| - if (info->GetLevelImage(target, 0) != gl_image)
|
| + if (texture->GetLevelImage(target, 0) != gl_image)
|
| return;
|
|
|
| gl_image->ReleaseTexImage();
|
|
|
| texture_manager()->SetLevelInfo(
|
| - info, target, 0, GL_RGBA, 0, 0, 1, 0,
|
| + texture, target, 0, GL_RGBA, 0, 0, 1, 0,
|
| GL_RGBA, GL_UNSIGNED_BYTE, false);
|
| }
|
|
|
| @@ -9941,7 +9917,7 @@ void GLES2DecoderImpl::DoTraceEndCHROMIUM() {
|
|
|
| bool GLES2DecoderImpl::ValidateAsyncTransfer(
|
| const char* function_name,
|
| - Texture* info,
|
| + Texture* texture,
|
| GLenum target,
|
| GLint level,
|
| const void * data) {
|
| @@ -9961,7 +9937,7 @@ bool GLES2DecoderImpl::ValidateAsyncTransfer(
|
| return false;
|
| }
|
| // We only support one async transfer in progress.
|
| - if (!info || info->AsyncTransferIsInProgress()) {
|
| + if (!texture || texture->AsyncTransferIsInProgress()) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| function_name, "transfer already in progress");
|
| return false;
|
| @@ -10008,13 +9984,13 @@ error::Error GLES2DecoderImpl::HandleAsyncTexImage2DCHROMIUM(
|
| }
|
|
|
| // Extra async validation.
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| if (!ValidateAsyncTransfer(
|
| - "glAsyncTexImage2DCHROMIUM", info, target, level, pixels))
|
| + "glAsyncTexImage2DCHROMIUM", texture, target, level, pixels))
|
| return error::kNoError;
|
|
|
| // Don't allow async redefinition of a textures.
|
| - if (info->IsDefined()) {
|
| + if (texture->IsDefined()) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glAsyncTexImage2DCHROMIUM", "already defined");
|
| return error::kNoError;
|
| @@ -10034,13 +10010,13 @@ error::Error GLES2DecoderImpl::HandleAsyncTexImage2DCHROMIUM(
|
| uint32 shm_data_size = pixels_size;
|
|
|
| // Set up the async state if needed, and make the texture
|
| - // immutable so the async state stays valid. The level info
|
| + // immutable so the async state stays valid. The level texture
|
| // is set up lazily when the transfer completes.
|
| - DCHECK(!info->GetAsyncTransferState());
|
| - info->SetAsyncTransferState(
|
| + DCHECK(!texture->GetAsyncTransferState());
|
| + texture->SetAsyncTransferState(
|
| async_pixel_transfer_delegate_->
|
| - CreatePixelTransferState(info->service_id()));
|
| - info->SetImmutable(true);
|
| + CreatePixelTransferState(texture->service_id()));
|
| + texture->SetImmutable(true);
|
|
|
| // Issue the async call and set up the texture.
|
| GLenum gl_internal_format =
|
| @@ -10051,13 +10027,13 @@ error::Error GLES2DecoderImpl::HandleAsyncTexImage2DCHROMIUM(
|
| shm_data_offset, shm_data_size};
|
|
|
| // Add a pending transfer to the texture manager, which will bind the
|
| - // transfer data to the texture and set the level info at the same time,
|
| + // transfer data to the texture and set the level texture at the same time,
|
| // after the the transfer is complete.
|
| texture_manager()->AddPendingAsyncPixelTransfer(
|
| - info->GetAsyncTransferState()->AsWeakPtr(), info);
|
| + texture->GetAsyncTransferState()->AsWeakPtr(), texture);
|
|
|
| async_pixel_transfer_delegate_->AsyncTexImage2D(
|
| - info->GetAsyncTransferState(), tex_params, mem_params);
|
| + texture->GetAsyncTransferState(), tex_params, mem_params);
|
| return error::kNoError;
|
| }
|
|
|
| @@ -10092,9 +10068,9 @@ error::Error GLES2DecoderImpl::HandleAsyncTexSubImage2DCHROMIUM(
|
| }
|
|
|
| // Extra async validation.
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| if (!ValidateAsyncTransfer(
|
| - "glAsyncTexSubImage2DCHROMIUM", info, target, level, pixels))
|
| + "glAsyncTexSubImage2DCHROMIUM", texture, target, level, pixels))
|
| return error::kNoError;
|
|
|
| // Guarantee async textures are always 'cleared' as follows:
|
| @@ -10103,8 +10079,8 @@ error::Error GLES2DecoderImpl::HandleAsyncTexSubImage2DCHROMIUM(
|
| // - AsyncTexSubImage2D clears synchronously if not already cleared.
|
| // - Textures become immutable after an async call.
|
| // This way we know in all cases that an async texture is always clear.
|
| - if (!info->SafeToRenderFrom()) {
|
| - if (!texture_manager()->ClearTextureLevel(this, info, target, level)) {
|
| + if (!texture->SafeToRenderFrom()) {
|
| + if (!texture_manager()->ClearTextureLevel(this, texture, target, level)) {
|
| SetGLError(GL_OUT_OF_MEMORY,
|
| "glAsyncTexSubImage2DCHROMIUM", "dimensions too big");
|
| return error::kNoError;
|
| @@ -10119,13 +10095,13 @@ error::Error GLES2DecoderImpl::HandleAsyncTexSubImage2DCHROMIUM(
|
| uint32 shm_data_offset = c.data_shm_offset;
|
| uint32 shm_data_size = data_size;
|
|
|
| - if (!info->GetAsyncTransferState()) {
|
| + if (!texture->GetAsyncTransferState()) {
|
| // Set up the async state if needed, and make the texture
|
| // immutable so the async state stays valid.
|
| - info->SetAsyncTransferState(
|
| + texture->SetAsyncTransferState(
|
| async_pixel_transfer_delegate_->
|
| - CreatePixelTransferState(info->service_id()));
|
| - info->SetImmutable(true);
|
| + CreatePixelTransferState(texture->service_id()));
|
| + texture->SetImmutable(true);
|
| }
|
|
|
| gfx::AsyncTexSubImage2DParams tex_params = {target, level, xoffset, yoffset,
|
| @@ -10133,7 +10109,7 @@ error::Error GLES2DecoderImpl::HandleAsyncTexSubImage2DCHROMIUM(
|
| gfx::AsyncMemoryParams mem_params = {shared_memory, shm_size,
|
| shm_data_offset, shm_data_size};
|
| async_pixel_transfer_delegate_->AsyncTexSubImage2D(
|
| - info->GetAsyncTransferState(), tex_params, mem_params);
|
| + texture->GetAsyncTransferState(), tex_params, mem_params);
|
| return error::kNoError;
|
| }
|
|
|
| @@ -10146,14 +10122,14 @@ error::Error GLES2DecoderImpl::HandleWaitAsyncTexImage2DCHROMIUM(
|
| SetGLError(GL_INVALID_ENUM, "glWaitAsyncTexImage2DCHROMIUM", "target");
|
| return error::kNoError;
|
| }
|
| - Texture* info = GetTextureInfoForTarget(target);
|
| - if (!info) {
|
| + Texture* texture = GetTextureInfoForTarget(target);
|
| + if (!texture) {
|
| SetGLError(GL_INVALID_OPERATION,
|
| "glWaitAsyncTexImage2DCHROMIUM", "unknown texture");
|
| return error::kNoError;
|
| }
|
| async_pixel_transfer_delegate_->WaitForTransferCompletion(
|
| - info->GetAsyncTransferState());
|
| + texture->GetAsyncTransferState());
|
| ProcessFinishedAsyncTransfers();
|
| return error::kNoError;
|
| }
|
|
|