Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Side by Side Diff: gpu/command_buffer/service/texture_manager.h

Issue 2814583002: Service/ClientDiscardableManager (Closed)
Patch Set: Feedback Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #ifndef GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 6 #define GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <algorithm> 11 #include <algorithm>
12 #include <list> 12 #include <list>
13 #include <memory> 13 #include <memory>
14 #include <set> 14 #include <set>
15 #include <string> 15 #include <string>
16 #include <vector> 16 #include <vector>
17 17
18 #include "base/containers/hash_tables.h" 18 #include "base/containers/hash_tables.h"
19 #include "base/macros.h" 19 #include "base/macros.h"
20 #include "base/memory/ref_counted.h" 20 #include "base/memory/ref_counted.h"
21 #include "gpu/command_buffer/service/feature_info.h" 21 #include "gpu/command_buffer/service/feature_info.h"
22 #include "gpu/command_buffer/service/gl_utils.h" 22 #include "gpu/command_buffer/service/gl_utils.h"
23 #include "gpu/command_buffer/service/memory_tracking.h" 23 #include "gpu/command_buffer/service/memory_tracking.h"
24 #include "gpu/command_buffer/service/sampler_manager.h" 24 #include "gpu/command_buffer/service/sampler_manager.h"
25 #include "gpu/gpu_export.h" 25 #include "gpu/gpu_export.h"
26 #include "ui/gfx/geometry/rect.h" 26 #include "ui/gfx/geometry/rect.h"
27 #include "ui/gl/gl_image.h" 27 #include "ui/gl/gl_image.h"
28 28
29 namespace gpu { 29 namespace gpu {
30 class ServiceDiscardableManager;
31
30 namespace gles2 { 32 namespace gles2 {
31
32 class GLES2Decoder; 33 class GLES2Decoder;
33 class GLStreamTextureImage; 34 class GLStreamTextureImage;
34 struct ContextState; 35 struct ContextState;
35 struct DecoderFramebufferState; 36 struct DecoderFramebufferState;
36 class ErrorState; 37 class ErrorState;
37 class FeatureInfo; 38 class FeatureInfo;
38 class FramebufferManager; 39 class FramebufferManager;
39 class MailboxManager; 40 class MailboxManager;
40 class ProgressReporter; 41 class ProgressReporter;
41 class Texture; 42 class Texture;
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 }; 753 };
753 754
754 TextureManager(MemoryTracker* memory_tracker, 755 TextureManager(MemoryTracker* memory_tracker,
755 FeatureInfo* feature_info, 756 FeatureInfo* feature_info,
756 GLsizei max_texture_size, 757 GLsizei max_texture_size,
757 GLsizei max_cube_map_texture_size, 758 GLsizei max_cube_map_texture_size,
758 GLsizei max_rectangle_texture_size, 759 GLsizei max_rectangle_texture_size,
759 GLsizei max_3d_texture_size, 760 GLsizei max_3d_texture_size,
760 GLsizei max_array_texture_layers, 761 GLsizei max_array_texture_layers,
761 bool use_default_textures, 762 bool use_default_textures,
762 ProgressReporter* progress_reporter); 763 ProgressReporter* progress_reporter,
764 ServiceDiscardableManager* discardable_manager);
763 ~TextureManager() override; 765 ~TextureManager() override;
764 766
765 void set_framebuffer_manager(FramebufferManager* manager) { 767 void set_framebuffer_manager(FramebufferManager* manager) {
766 framebuffer_manager_ = manager; 768 framebuffer_manager_ = manager;
767 } 769 }
768 770
769 // Init the texture manager. 771 // Init the texture manager.
770 bool Initialize(); 772 bool Initialize();
771 773
772 // Must call before destruction. 774 // Must call before destruction.
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 // Clear a specific level. 897 // Clear a specific level.
896 bool ClearTextureLevel( 898 bool ClearTextureLevel(
897 GLES2Decoder* decoder, TextureRef* ref, GLenum target, GLint level); 899 GLES2Decoder* decoder, TextureRef* ref, GLenum target, GLint level);
898 900
899 // Creates a new texture info. 901 // Creates a new texture info.
900 TextureRef* CreateTexture(GLuint client_id, GLuint service_id); 902 TextureRef* CreateTexture(GLuint client_id, GLuint service_id);
901 903
902 // Gets the texture info for the given texture. 904 // Gets the texture info for the given texture.
903 TextureRef* GetTexture(GLuint client_id) const; 905 TextureRef* GetTexture(GLuint client_id) const;
904 906
907 // Takes the TextureRef for the given texture out of the texture manager.
908 scoped_refptr<TextureRef> TakeTexture(GLuint client_id);
909
910 // Returns a TextureRef to the texture manager.
911 void ReturnTexture(scoped_refptr<TextureRef> texture_ref);
912
905 // Removes a texture info. 913 // Removes a texture info.
906 void RemoveTexture(GLuint client_id); 914 void RemoveTexture(GLuint client_id);
907 915
908 // Gets a Texture for a given service id (note: it assumes the texture object 916 // Gets a Texture for a given service id (note: it assumes the texture object
909 // is still mapped in this TextureManager). 917 // is still mapped in this TextureManager).
910 Texture* GetTextureForServiceId(GLuint service_id) const; 918 Texture* GetTextureForServiceId(GLuint service_id) const;
911 919
912 TextureRef* GetDefaultTextureInfo(GLenum target) { 920 TextureRef* GetDefaultTextureInfo(GLenum target) {
913 switch (target) { 921 switch (target) {
914 case GL_TEXTURE_2D: 922 case GL_TEXTURE_2D:
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
1233 1241
1234 std::vector<DestructionObserver*> destruction_observers_; 1242 std::vector<DestructionObserver*> destruction_observers_;
1235 1243
1236 uint32_t current_service_id_generation_; 1244 uint32_t current_service_id_generation_;
1237 1245
1238 // Used to notify the watchdog thread of progress during destruction, 1246 // Used to notify the watchdog thread of progress during destruction,
1239 // preventing time-outs when destruction takes a long time. May be null when 1247 // preventing time-outs when destruction takes a long time. May be null when
1240 // using in-process command buffer. 1248 // using in-process command buffer.
1241 ProgressReporter* progress_reporter_; 1249 ProgressReporter* progress_reporter_;
1242 1250
1251 ServiceDiscardableManager* discardable_manager_;
1252
1243 DISALLOW_COPY_AND_ASSIGN(TextureManager); 1253 DISALLOW_COPY_AND_ASSIGN(TextureManager);
1244 }; 1254 };
1245 1255
1246 // This class records texture upload time when in scope. 1256 // This class records texture upload time when in scope.
1247 class ScopedTextureUploadTimer { 1257 class ScopedTextureUploadTimer {
1248 public: 1258 public:
1249 explicit ScopedTextureUploadTimer(DecoderTextureState* texture_state); 1259 explicit ScopedTextureUploadTimer(DecoderTextureState* texture_state);
1250 ~ScopedTextureUploadTimer(); 1260 ~ScopedTextureUploadTimer();
1251 1261
1252 private: 1262 private:
1253 DecoderTextureState* texture_state_; 1263 DecoderTextureState* texture_state_;
1254 base::TimeTicks begin_time_; 1264 base::TimeTicks begin_time_;
1255 DISALLOW_COPY_AND_ASSIGN(ScopedTextureUploadTimer); 1265 DISALLOW_COPY_AND_ASSIGN(ScopedTextureUploadTimer);
1256 }; 1266 };
1257 1267
1258 } // namespace gles2 1268 } // namespace gles2
1259 } // namespace gpu 1269 } // namespace gpu
1260 1270
1261 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_ 1271 #endif // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698