| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "gpu/command_buffer/service/texture_definition.h" | 5 #include "gpu/command_buffer/service/texture_definition.h" |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 | 8 |
| 9 #include "base/memory/linked_ptr.h" | 9 #include "base/memory/linked_ptr.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 } | 277 } |
| 278 | 278 |
| 279 TextureDefinition::LevelInfo::LevelInfo() | 279 TextureDefinition::LevelInfo::LevelInfo() |
| 280 : target(0), | 280 : target(0), |
| 281 internal_format(0), | 281 internal_format(0), |
| 282 width(0), | 282 width(0), |
| 283 height(0), | 283 height(0), |
| 284 depth(0), | 284 depth(0), |
| 285 border(0), | 285 border(0), |
| 286 format(0), | 286 format(0), |
| 287 type(0), | 287 type(0) { |
| 288 cleared(false) { | |
| 289 } | 288 } |
| 290 | 289 |
| 291 TextureDefinition::LevelInfo::LevelInfo(GLenum target, | 290 TextureDefinition::LevelInfo::LevelInfo(GLenum target, |
| 292 GLenum internal_format, | 291 GLenum internal_format, |
| 293 GLsizei width, | 292 GLsizei width, |
| 294 GLsizei height, | 293 GLsizei height, |
| 295 GLsizei depth, | 294 GLsizei depth, |
| 296 GLint border, | 295 GLint border, |
| 297 GLenum format, | 296 GLenum format, |
| 298 GLenum type, | 297 GLenum type, |
| 299 bool cleared) | 298 const gfx::Rect& cleared_rect) |
| 300 : target(target), | 299 : target(target), |
| 301 internal_format(internal_format), | 300 internal_format(internal_format), |
| 302 width(width), | 301 width(width), |
| 303 height(height), | 302 height(height), |
| 304 depth(depth), | 303 depth(depth), |
| 305 border(border), | 304 border(border), |
| 306 format(format), | 305 format(format), |
| 307 type(type), | 306 type(type), |
| 308 cleared(cleared) {} | 307 cleared_rect(cleared_rect) { |
| 308 } |
| 309 | 309 |
| 310 TextureDefinition::LevelInfo::~LevelInfo() {} | 310 TextureDefinition::LevelInfo::~LevelInfo() {} |
| 311 | 311 |
| 312 TextureDefinition::TextureDefinition() | 312 TextureDefinition::TextureDefinition() |
| 313 : version_(0), | 313 : version_(0), |
| 314 target_(0), | 314 target_(0), |
| 315 min_filter_(0), | 315 min_filter_(0), |
| 316 mag_filter_(0), | 316 mag_filter_(0), |
| 317 wrap_s_(0), | 317 wrap_s_(0), |
| 318 wrap_t_(0), | 318 wrap_t_(0), |
| (...skipping 26 matching lines...) Expand all Loading... |
| 345 scoped_refptr<gfx::GLImage> gl_image( | 345 scoped_refptr<gfx::GLImage> gl_image( |
| 346 new GLImageSync(image_buffer_, | 346 new GLImageSync(image_buffer_, |
| 347 gfx::Size(first_face.level_infos[0].width, | 347 gfx::Size(first_face.level_infos[0].width, |
| 348 first_face.level_infos[0].height))); | 348 first_face.level_infos[0].height))); |
| 349 texture->SetLevelImage(NULL, target_, 0, gl_image.get()); | 349 texture->SetLevelImage(NULL, target_, 0, gl_image.get()); |
| 350 } | 350 } |
| 351 | 351 |
| 352 const Texture::LevelInfo& level = first_face.level_infos[0]; | 352 const Texture::LevelInfo& level = first_face.level_infos[0]; |
| 353 level_info_ = LevelInfo(level.target, level.internal_format, level.width, | 353 level_info_ = LevelInfo(level.target, level.internal_format, level.width, |
| 354 level.height, level.depth, level.border, level.format, | 354 level.height, level.depth, level.border, level.format, |
| 355 level.type, level.cleared); | 355 level.type, level.cleared_rect); |
| 356 } | 356 } |
| 357 | 357 |
| 358 TextureDefinition::~TextureDefinition() { | 358 TextureDefinition::~TextureDefinition() { |
| 359 } | 359 } |
| 360 | 360 |
| 361 Texture* TextureDefinition::CreateTexture() const { | 361 Texture* TextureDefinition::CreateTexture() const { |
| 362 GLuint texture_id; | 362 GLuint texture_id; |
| 363 glGenTextures(1, &texture_id); | 363 glGenTextures(1, &texture_id); |
| 364 | 364 |
| 365 Texture* texture(new Texture(texture_id)); | 365 Texture* texture(new Texture(texture_id)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 384 // though. | 384 // though. |
| 385 glFlush(); | 385 glFlush(); |
| 386 | 386 |
| 387 if (defined_) { | 387 if (defined_) { |
| 388 texture->face_infos_.resize(1); | 388 texture->face_infos_.resize(1); |
| 389 texture->face_infos_[0].level_infos.resize(1); | 389 texture->face_infos_[0].level_infos.resize(1); |
| 390 texture->SetLevelInfo(NULL, level_info_.target, 0, | 390 texture->SetLevelInfo(NULL, level_info_.target, 0, |
| 391 level_info_.internal_format, level_info_.width, | 391 level_info_.internal_format, level_info_.width, |
| 392 level_info_.height, level_info_.depth, | 392 level_info_.height, level_info_.depth, |
| 393 level_info_.border, level_info_.format, | 393 level_info_.border, level_info_.format, |
| 394 level_info_.type, level_info_.cleared); | 394 level_info_.type, level_info_.cleared_rect); |
| 395 } | 395 } |
| 396 | 396 |
| 397 if (image_buffer_.get()) { | 397 if (image_buffer_.get()) { |
| 398 texture->SetLevelImage( | 398 texture->SetLevelImage( |
| 399 NULL, | 399 NULL, |
| 400 target_, | 400 target_, |
| 401 0, | 401 0, |
| 402 new GLImageSync( | 402 new GLImageSync( |
| 403 image_buffer_, | 403 image_buffer_, |
| 404 gfx::Size(level_info_.width, level_info_.height))); | 404 gfx::Size(level_info_.width, level_info_.height))); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 451 return false; | 451 return false; |
| 452 | 452 |
| 453 // All structural changes should have orphaned the texture. | 453 // All structural changes should have orphaned the texture. |
| 454 if (image_buffer_.get() && !texture->GetLevelImage(texture->target(), 0)) | 454 if (image_buffer_.get() && !texture->GetLevelImage(texture->target(), 0)) |
| 455 return false; | 455 return false; |
| 456 | 456 |
| 457 return true; | 457 return true; |
| 458 } | 458 } |
| 459 | 459 |
| 460 bool TextureDefinition::SafeToRenderFrom() const { | 460 bool TextureDefinition::SafeToRenderFrom() const { |
| 461 return level_info_.cleared; | 461 return level_info_.cleared_rect.Contains( |
| 462 gfx::Rect(level_info_.width, level_info_.height)); |
| 462 } | 463 } |
| 463 | 464 |
| 464 } // namespace gles2 | 465 } // namespace gles2 |
| 465 } // namespace gpu | 466 } // namespace gpu |
| OLD | NEW |