| 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 d9576f7e58755cb6b3138759e950d97d32ddd8c5..b1f80d0c2ca4c6f97ff022889239c82cca0f0995 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 {
|
| @@ -92,10 +93,6 @@ class GPU_EXPORT Texture {
|
| return max_level_;
|
| }
|
|
|
| - int num_uncleared_mips() const {
|
| - return num_uncleared_mips_;
|
| - }
|
| -
|
| uint32 estimated_size() const {
|
| return estimated_size_;
|
| }
|
| @@ -182,6 +179,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 +228,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 +251,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,12 +281,14 @@ 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);
|
|
|
| - // Updates the cleared flag for this texture by inspecting all the mips.
|
| - void UpdateCleared();
|
| -
|
| // Clears any renderable uncleared levels.
|
| // Returns false if a GL error was generated.
|
| bool ClearRenderableLevels(GLES2Decoder* decoder);
|
| @@ -370,11 +372,7 @@ class GPU_EXPORT Texture {
|
|
|
| // Updates the unsafe textures count in all the managers referencing this
|
| // texture.
|
| - void UpdateSafeToRenderFrom(bool cleared);
|
| -
|
| - // Updates the uncleared mip count in all the managers referencing this
|
| - // texture.
|
| - void UpdateMipCleared(LevelInfo* info, bool cleared);
|
| + void UpdateSafeToRenderFrom();
|
|
|
| // Computes the CanRenderCondition flag.
|
| CanRenderCondition GetCanRenderCondition() const;
|
| @@ -410,7 +408,6 @@ class GPU_EXPORT Texture {
|
| // Whether all renderable mips of this texture have been cleared.
|
| bool cleared_;
|
|
|
| - int num_uncleared_mips_;
|
| int num_npot_faces_;
|
|
|
| // The target. 0 if unset, otherwise GL_TEXTURE_2D or GL_TEXTURE_CUBE_MAP.
|
| @@ -649,27 +646,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 +672,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);
|
| @@ -739,10 +740,6 @@ class GPU_EXPORT TextureManager {
|
| return num_unsafe_textures_ > 0;
|
| }
|
|
|
| - bool HaveUnclearedMips() const {
|
| - return num_uncleared_mips_ > 0;
|
| - }
|
| -
|
| bool HaveImages() const {
|
| return num_images_ > 0;
|
| }
|
| @@ -862,7 +859,6 @@ class GPU_EXPORT TextureManager {
|
| void StopTracking(TextureRef* texture);
|
|
|
| void UpdateSafeToRenderFrom(int delta);
|
| - void UpdateUnclearedMips(int delta);
|
| void UpdateCanRenderCondition(Texture::CanRenderCondition old_condition,
|
| Texture::CanRenderCondition new_condition);
|
| void UpdateNumImages(int delta);
|
| @@ -894,7 +890,6 @@ class GPU_EXPORT TextureManager {
|
|
|
| int num_unrenderable_textures_;
|
| int num_unsafe_textures_;
|
| - int num_uncleared_mips_;
|
| int num_images_;
|
|
|
| // Counts the number of Textures allocated with 'this' as its manager.
|
|
|