| Index: gpu/command_buffer/service/texture_manager.h
|
| diff --git a/gpu/command_buffer/service/texture_manager.h b/gpu/command_buffer/service/texture_manager.h
|
| index bc4c5c8592b5deb41e019022b706c650025df5ab..d72ffb66e4dcbe534abb2435869c765855653b91 100644
|
| --- a/gpu/command_buffer/service/texture_manager.h
|
| +++ b/gpu/command_buffer/service/texture_manager.h
|
| @@ -17,6 +17,7 @@
|
| #include "gpu/command_buffer/service/gl_utils.h"
|
| #include "gpu/command_buffer/service/memory_tracking.h"
|
| #include "gpu/gpu_export.h"
|
| +#include "ui/gfx/geometry/rect.h"
|
| #include "ui/gl/gl_image.h"
|
|
|
| namespace gpu {
|
| @@ -182,6 +183,10 @@ class GPU_EXPORT Texture {
|
| return immutable_;
|
| }
|
|
|
| + // Get the cleared rectangle for a particular level. Returns an empty
|
| + // rectangle if level does not exist.
|
| + gfx::Rect GetLevelClearedRect(GLenum target, GLint level) const;
|
| +
|
| // Whether a particular level/face is cleared.
|
| bool IsLevelCleared(GLenum target, GLint level) const;
|
|
|
| @@ -227,7 +232,7 @@ class GPU_EXPORT Texture {
|
| LevelInfo(const LevelInfo& rhs);
|
| ~LevelInfo();
|
|
|
| - bool cleared;
|
| + gfx::Rect cleared_rect;
|
| GLenum target;
|
| GLint level;
|
| GLenum internal_format;
|
| @@ -250,18 +255,17 @@ class GPU_EXPORT Texture {
|
| };
|
|
|
| // Set the info for a particular level.
|
| - void SetLevelInfo(
|
| - const FeatureInfo* feature_info,
|
| - GLenum target,
|
| - GLint level,
|
| - GLenum internal_format,
|
| - GLsizei width,
|
| - GLsizei height,
|
| - GLsizei depth,
|
| - GLint border,
|
| - GLenum format,
|
| - GLenum type,
|
| - bool cleared);
|
| + void SetLevelInfo(const FeatureInfo* feature_info,
|
| + GLenum target,
|
| + GLint level,
|
| + GLenum internal_format,
|
| + GLsizei width,
|
| + GLsizei height,
|
| + GLsizei depth,
|
| + GLint border,
|
| + GLenum format,
|
| + GLenum type,
|
| + const gfx::Rect& cleared_rect);
|
|
|
| // In GLES2 "texture complete" means it has all required mips for filtering
|
| // down to a 1x1 pixel texture, they are in the correct order, they are all
|
| @@ -281,6 +285,11 @@ class GPU_EXPORT Texture {
|
| return npot_;
|
| }
|
|
|
| + // Marks a |rect| of a particular level as cleared.
|
| + void SetLevelClearedRect(GLenum target,
|
| + GLint level,
|
| + const gfx::Rect& cleared_rect);
|
| +
|
| // Marks a particular level as cleared or uncleared.
|
| void SetLevelCleared(GLenum target, GLint level, bool cleared);
|
|
|
| @@ -374,7 +383,10 @@ class GPU_EXPORT Texture {
|
|
|
| // Updates the uncleared mip count in all the managers referencing this
|
| // texture.
|
| - void UpdateMipCleared(LevelInfo* info, bool cleared);
|
| + void UpdateMipCleared(LevelInfo* info,
|
| + GLsizei width,
|
| + GLsizei height,
|
| + const gfx::Rect& cleared_rect);
|
|
|
| // Computes the CanRenderCondition flag.
|
| CanRenderCondition GetCanRenderCondition() const;
|
| @@ -649,27 +661,25 @@ class GPU_EXPORT TextureManager {
|
| GLenum target);
|
|
|
| // Set the info for a particular level in a TexureInfo.
|
| - void SetLevelInfo(
|
| - TextureRef* ref,
|
| - GLenum target,
|
| - GLint level,
|
| - GLenum internal_format,
|
| - GLsizei width,
|
| - GLsizei height,
|
| - GLsizei depth,
|
| - GLint border,
|
| - GLenum format,
|
| - GLenum type,
|
| - bool cleared);
|
| + void SetLevelInfo(TextureRef* ref,
|
| + GLenum target,
|
| + GLint level,
|
| + GLenum internal_format,
|
| + GLsizei width,
|
| + GLsizei height,
|
| + GLsizei depth,
|
| + GLint border,
|
| + GLenum format,
|
| + GLenum type,
|
| + const gfx::Rect& cleared_rect);
|
|
|
| // Adapter to call above function.
|
| void SetLevelInfoFromParams(TextureRef* ref,
|
| const gpu::AsyncTexImage2DParams& params) {
|
| - SetLevelInfo(
|
| - ref, params.target, params.level, params.internal_format,
|
| - params.width, params.height, 1 /* depth */,
|
| - params.border, params.format,
|
| - params.type, true /* cleared */);
|
| + SetLevelInfo(ref, params.target, params.level, params.internal_format,
|
| + params.width, params.height, 1 /* depth */, params.border,
|
| + params.format, params.type,
|
| + gfx::Rect(params.width, params.height) /* cleared_rect */);
|
| }
|
|
|
| Texture* Produce(TextureRef* ref);
|
| @@ -677,6 +687,12 @@ class GPU_EXPORT TextureManager {
|
| // Maps an existing texture into the texture manager, at a given client ID.
|
| TextureRef* Consume(GLuint client_id, Texture* texture);
|
|
|
| + // Sets |rect| of mip as cleared.
|
| + void SetLevelClearedRect(TextureRef* ref,
|
| + GLenum target,
|
| + GLint level,
|
| + const gfx::Rect& cleared_rect);
|
| +
|
| // Sets a mip as cleared.
|
| void SetLevelCleared(TextureRef* ref, GLenum target,
|
| GLint level, bool cleared);
|
|
|