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

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

Issue 413953002: Reuse GLES2Util code instead of defining new function in TextureManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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
« no previous file with comments | « gpu/command_buffer/common/gles2_cmd_utils.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "gpu/command_buffer/service/texture_manager.h" 5 #include "gpu/command_buffer/service/texture_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bits.h" 10 #include "base/bits.h"
11 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
12 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 12 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
13 #include "gpu/command_buffer/service/context_state.h" 13 #include "gpu/command_buffer/service/context_state.h"
14 #include "gpu/command_buffer/service/error_state.h" 14 #include "gpu/command_buffer/service/error_state.h"
15 #include "gpu/command_buffer/service/feature_info.h" 15 #include "gpu/command_buffer/service/feature_info.h"
16 #include "gpu/command_buffer/service/framebuffer_manager.h" 16 #include "gpu/command_buffer/service/framebuffer_manager.h"
17 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 17 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
18 #include "gpu/command_buffer/service/mailbox_manager.h" 18 #include "gpu/command_buffer/service/mailbox_manager.h"
19 #include "gpu/command_buffer/service/memory_tracking.h" 19 #include "gpu/command_buffer/service/memory_tracking.h"
20 20
21 namespace gpu { 21 namespace gpu {
22 namespace gles2 { 22 namespace gles2 {
23 23
24 static size_t GLTargetToFaceIndex(GLenum target) {
25 switch (target) {
26 case GL_TEXTURE_2D:
27 case GL_TEXTURE_EXTERNAL_OES:
28 case GL_TEXTURE_RECTANGLE_ARB:
29 return 0;
30 case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
31 return 0;
32 case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
33 return 1;
34 case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
35 return 2;
36 case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
37 return 3;
38 case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
39 return 4;
40 case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
41 return 5;
42 default:
43 NOTREACHED();
44 return 0;
45 }
46 }
47
48 static size_t FaceIndexToGLTarget(size_t index) {
49 switch (index) {
50 case 0:
51 return GL_TEXTURE_CUBE_MAP_POSITIVE_X;
52 case 1:
53 return GL_TEXTURE_CUBE_MAP_NEGATIVE_X;
54 case 2:
55 return GL_TEXTURE_CUBE_MAP_POSITIVE_Y;
56 case 3:
57 return GL_TEXTURE_CUBE_MAP_NEGATIVE_Y;
58 case 4:
59 return GL_TEXTURE_CUBE_MAP_POSITIVE_Z;
60 case 5:
61 return GL_TEXTURE_CUBE_MAP_NEGATIVE_Z;
62 default:
63 NOTREACHED();
64 return 0;
65 }
66 }
67
68 TextureManager::DestructionObserver::DestructionObserver() {} 24 TextureManager::DestructionObserver::DestructionObserver() {}
69 25
70 TextureManager::DestructionObserver::~DestructionObserver() {} 26 TextureManager::DestructionObserver::~DestructionObserver() {}
71 27
72 TextureManager::~TextureManager() { 28 TextureManager::~TextureManager() {
73 for (unsigned int i = 0; i < destruction_observers_.size(); i++) 29 for (unsigned int i = 0; i < destruction_observers_.size(); i++)
74 destruction_observers_[i]->OnTextureManagerDestroying(this); 30 destruction_observers_[i]->OnTextureManagerDestroying(this);
75 31
76 DCHECK(textures_.empty()); 32 DCHECK(textures_.empty());
77 33
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 } 206 }
251 207
252 void Texture::AddToSignature( 208 void Texture::AddToSignature(
253 const FeatureInfo* feature_info, 209 const FeatureInfo* feature_info,
254 GLenum target, 210 GLenum target,
255 GLint level, 211 GLint level,
256 std::string* signature) const { 212 std::string* signature) const {
257 DCHECK(feature_info); 213 DCHECK(feature_info);
258 DCHECK(signature); 214 DCHECK(signature);
259 DCHECK_GE(level, 0); 215 DCHECK_GE(level, 0);
260 DCHECK_LT(static_cast<size_t>(GLTargetToFaceIndex(target)), 216 size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
217 DCHECK_LT(static_cast<size_t>(face_index),
261 level_infos_.size()); 218 level_infos_.size());
262 DCHECK_LT(static_cast<size_t>(level), 219 DCHECK_LT(static_cast<size_t>(level),
263 level_infos_[GLTargetToFaceIndex(target)].size()); 220 level_infos_[face_index].size());
264 const Texture::LevelInfo& info = 221 const Texture::LevelInfo& info =
265 level_infos_[GLTargetToFaceIndex(target)][level]; 222 level_infos_[face_index][level];
266 *signature += base::StringPrintf( 223 *signature += base::StringPrintf(
267 "|Texture|target=%04x|level=%d|internal_format=%04x" 224 "|Texture|target=%04x|level=%d|internal_format=%04x"
268 "|width=%d|height=%d|depth=%d|border=%d|format=%04x|type=%04x" 225 "|width=%d|height=%d|depth=%d|border=%d|format=%04x|type=%04x"
269 "|image=%d|canrender=%d|canrenderto=%d|npot_=%d" 226 "|image=%d|canrender=%d|canrenderto=%d|npot_=%d"
270 "|min_filter=%04x|mag_filter=%04x|wrap_s=%04x|wrap_t=%04x" 227 "|min_filter=%04x|mag_filter=%04x|wrap_s=%04x|wrap_t=%04x"
271 "|usage=%04x", 228 "|usage=%04x",
272 target, level, info.internal_format, 229 target, level, info.internal_format,
273 info.width, info.height, info.depth, info.border, 230 info.width, info.height, info.depth, info.border,
274 info.format, info.type, info.image.get() != NULL, 231 info.format, info.type, info.image.get() != NULL,
275 CanRender(feature_info), CanRenderTo(), npot_, 232 CanRender(feature_info), CanRenderTo(), npot_,
(...skipping 10 matching lines...) Expand all
286 const FeatureInfo* feature_info) { 243 const FeatureInfo* feature_info) {
287 if (!CanGenerateMipmaps(feature_info)) { 244 if (!CanGenerateMipmaps(feature_info)) {
288 return false; 245 return false;
289 } 246 }
290 for (size_t ii = 0; ii < level_infos_.size(); ++ii) { 247 for (size_t ii = 0; ii < level_infos_.size(); ++ii) {
291 const Texture::LevelInfo& info1 = level_infos_[ii][0]; 248 const Texture::LevelInfo& info1 = level_infos_[ii][0];
292 GLsizei width = info1.width; 249 GLsizei width = info1.width;
293 GLsizei height = info1.height; 250 GLsizei height = info1.height;
294 GLsizei depth = info1.depth; 251 GLsizei depth = info1.depth;
295 GLenum target = target_ == GL_TEXTURE_2D ? GL_TEXTURE_2D : 252 GLenum target = target_ == GL_TEXTURE_2D ? GL_TEXTURE_2D :
296 FaceIndexToGLTarget(ii); 253 GLES2Util::IndexToGLFaceTarget(ii);
297 int num_mips = 254 int num_mips =
298 TextureManager::ComputeMipMapCount(target_, width, height, depth); 255 TextureManager::ComputeMipMapCount(target_, width, height, depth);
299 for (int level = 1; level < num_mips; ++level) { 256 for (int level = 1; level < num_mips; ++level) {
300 width = std::max(1, width >> 1); 257 width = std::max(1, width >> 1);
301 height = std::max(1, height >> 1); 258 height = std::max(1, height >> 1);
302 depth = std::max(1, depth >> 1); 259 depth = std::max(1, depth >> 1);
303 SetLevelInfo(feature_info, 260 SetLevelInfo(feature_info,
304 target, 261 target,
305 level, 262 level,
306 info1.internal_format, 263 info1.internal_format,
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 info.internal_format) || 324 info.internal_format) ||
368 info.image.get()) { 325 info.image.get()) {
369 return false; 326 return false;
370 } 327 }
371 } 328 }
372 return true; 329 return true;
373 } 330 }
374 331
375 void Texture::SetLevelCleared(GLenum target, GLint level, bool cleared) { 332 void Texture::SetLevelCleared(GLenum target, GLint level, bool cleared) {
376 DCHECK_GE(level, 0); 333 DCHECK_GE(level, 0);
377 DCHECK_LT(static_cast<size_t>(GLTargetToFaceIndex(target)), 334 size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
335 DCHECK_LT(static_cast<size_t>(face_index),
378 level_infos_.size()); 336 level_infos_.size());
379 DCHECK_LT(static_cast<size_t>(level), 337 DCHECK_LT(static_cast<size_t>(level),
380 level_infos_[GLTargetToFaceIndex(target)].size()); 338 level_infos_[face_index].size());
381 Texture::LevelInfo& info = 339 Texture::LevelInfo& info =
382 level_infos_[GLTargetToFaceIndex(target)][level]; 340 level_infos_[face_index][level];
383 UpdateMipCleared(&info, cleared); 341 UpdateMipCleared(&info, cleared);
384 UpdateCleared(); 342 UpdateCleared();
385 } 343 }
386 344
387 void Texture::UpdateCleared() { 345 void Texture::UpdateCleared() {
388 if (level_infos_.empty()) { 346 if (level_infos_.empty()) {
389 return; 347 return;
390 } 348 }
391 349
392 const Texture::LevelInfo& first_face = level_infos_[0][0]; 350 const Texture::LevelInfo& first_face = level_infos_[0][0];
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 GLint level, 434 GLint level,
477 GLenum internal_format, 435 GLenum internal_format,
478 GLsizei width, 436 GLsizei width,
479 GLsizei height, 437 GLsizei height,
480 GLsizei depth, 438 GLsizei depth,
481 GLint border, 439 GLint border,
482 GLenum format, 440 GLenum format,
483 GLenum type, 441 GLenum type,
484 bool cleared) { 442 bool cleared) {
485 DCHECK_GE(level, 0); 443 DCHECK_GE(level, 0);
486 DCHECK_LT(static_cast<size_t>(GLTargetToFaceIndex(target)), 444 size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
445 DCHECK_LT(static_cast<size_t>(face_index),
487 level_infos_.size()); 446 level_infos_.size());
488 DCHECK_LT(static_cast<size_t>(level), 447 DCHECK_LT(static_cast<size_t>(level),
489 level_infos_[GLTargetToFaceIndex(target)].size()); 448 level_infos_[face_index].size());
490 DCHECK_GE(width, 0); 449 DCHECK_GE(width, 0);
491 DCHECK_GE(height, 0); 450 DCHECK_GE(height, 0);
492 DCHECK_GE(depth, 0); 451 DCHECK_GE(depth, 0);
493 Texture::LevelInfo& info = 452 Texture::LevelInfo& info =
494 level_infos_[GLTargetToFaceIndex(target)][level]; 453 level_infos_[face_index][level];
495 info.target = target; 454 info.target = target;
496 info.level = level; 455 info.level = level;
497 info.internal_format = internal_format; 456 info.internal_format = internal_format;
498 info.width = width; 457 info.width = width;
499 info.height = height; 458 info.height = height;
500 info.depth = depth; 459 info.depth = depth;
501 info.border = border; 460 info.border = border;
502 info.format = format; 461 info.format = format;
503 info.type = type; 462 info.type = type;
504 info.image = 0; 463 info.image = 0;
(...skipping 17 matching lines...) Expand all
522 } 481 }
523 482
524 bool Texture::ValidForTexture( 483 bool Texture::ValidForTexture(
525 GLint target, 484 GLint target,
526 GLint level, 485 GLint level,
527 GLint xoffset, 486 GLint xoffset,
528 GLint yoffset, 487 GLint yoffset,
529 GLsizei width, 488 GLsizei width,
530 GLsizei height, 489 GLsizei height,
531 GLenum type) const { 490 GLenum type) const {
532 size_t face_index = GLTargetToFaceIndex(target); 491 size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
533 if (level >= 0 && face_index < level_infos_.size() && 492 if (level >= 0 && face_index < level_infos_.size() &&
534 static_cast<size_t>(level) < level_infos_[face_index].size()) { 493 static_cast<size_t>(level) < level_infos_[face_index].size()) {
535 const LevelInfo& info = level_infos_[GLTargetToFaceIndex(target)][level]; 494 const LevelInfo& info = level_infos_[face_index][level];
536 int32 right; 495 int32 right;
537 int32 top; 496 int32 top;
538 return SafeAddInt32(xoffset, width, &right) && 497 return SafeAddInt32(xoffset, width, &right) &&
539 SafeAddInt32(yoffset, height, &top) && 498 SafeAddInt32(yoffset, height, &top) &&
540 xoffset >= 0 && 499 xoffset >= 0 &&
541 yoffset >= 0 && 500 yoffset >= 0 &&
542 right <= info.width && 501 right <= info.width &&
543 top <= info.height && 502 top <= info.height &&
544 type == info.type; 503 type == info.type;
545 } 504 }
546 return false; 505 return false;
547 } 506 }
548 507
549 bool Texture::GetLevelSize( 508 bool Texture::GetLevelSize(
550 GLint target, GLint level, GLsizei* width, GLsizei* height) const { 509 GLint target, GLint level, GLsizei* width, GLsizei* height) const {
551 DCHECK(width); 510 DCHECK(width);
552 DCHECK(height); 511 DCHECK(height);
553 size_t face_index = GLTargetToFaceIndex(target); 512 size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
554 if (level >= 0 && face_index < level_infos_.size() && 513 if (level >= 0 && face_index < level_infos_.size() &&
555 static_cast<size_t>(level) < level_infos_[face_index].size()) { 514 static_cast<size_t>(level) < level_infos_[face_index].size()) {
556 const LevelInfo& info = level_infos_[GLTargetToFaceIndex(target)][level]; 515 const LevelInfo& info = level_infos_[face_index][level];
557 if (info.target != 0) { 516 if (info.target != 0) {
558 *width = info.width; 517 *width = info.width;
559 *height = info.height; 518 *height = info.height;
560 return true; 519 return true;
561 } 520 }
562 } 521 }
563 return false; 522 return false;
564 } 523 }
565 524
566 bool Texture::GetLevelType( 525 bool Texture::GetLevelType(
567 GLint target, GLint level, GLenum* type, GLenum* internal_format) const { 526 GLint target, GLint level, GLenum* type, GLenum* internal_format) const {
568 DCHECK(type); 527 DCHECK(type);
569 DCHECK(internal_format); 528 DCHECK(internal_format);
570 size_t face_index = GLTargetToFaceIndex(target); 529 size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
571 if (level >= 0 && face_index < level_infos_.size() && 530 if (level >= 0 && face_index < level_infos_.size() &&
572 static_cast<size_t>(level) < level_infos_[face_index].size()) { 531 static_cast<size_t>(level) < level_infos_[face_index].size()) {
573 const LevelInfo& info = level_infos_[GLTargetToFaceIndex(target)][level]; 532 const LevelInfo& info = level_infos_[face_index][level];
574 if (info.target != 0) { 533 if (info.target != 0) {
575 *type = info.type; 534 *type = info.type;
576 *internal_format = info.internal_format; 535 *internal_format = info.internal_format;
577 return true; 536 return true;
578 } 537 }
579 } 538 }
580 return false; 539 return false;
581 } 540 }
582 541
583 GLenum Texture::SetParameteri( 542 GLenum Texture::SetParameteri(
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
773 return false; 732 return false;
774 } 733 }
775 } 734 }
776 } 735 }
777 } 736 }
778 UpdateSafeToRenderFrom(true); 737 UpdateSafeToRenderFrom(true);
779 return true; 738 return true;
780 } 739 }
781 740
782 bool Texture::IsLevelCleared(GLenum target, GLint level) const { 741 bool Texture::IsLevelCleared(GLenum target, GLint level) const {
783 size_t face_index = GLTargetToFaceIndex(target); 742 size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
784 if (face_index >= level_infos_.size() || 743 if (face_index >= level_infos_.size() ||
785 level >= static_cast<GLint>(level_infos_[face_index].size())) { 744 level >= static_cast<GLint>(level_infos_[face_index].size())) {
786 return true; 745 return true;
787 } 746 }
788 747
789 const Texture::LevelInfo& info = level_infos_[face_index][level]; 748 const Texture::LevelInfo& info = level_infos_[face_index][level];
790 749
791 return info.cleared; 750 return info.cleared;
792 } 751 }
793 752
794 void Texture::InitTextureMaxAnisotropyIfNeeded(GLenum target) { 753 void Texture::InitTextureMaxAnisotropyIfNeeded(GLenum target) {
795 if (texture_max_anisotropy_initialized_) 754 if (texture_max_anisotropy_initialized_)
796 return; 755 return;
797 texture_max_anisotropy_initialized_ = true; 756 texture_max_anisotropy_initialized_ = true;
798 GLfloat params[] = { 1.0f }; 757 GLfloat params[] = { 1.0f };
799 glTexParameterfv(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, params); 758 glTexParameterfv(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, params);
800 } 759 }
801 760
802 bool Texture::ClearLevel( 761 bool Texture::ClearLevel(
803 GLES2Decoder* decoder, GLenum target, GLint level) { 762 GLES2Decoder* decoder, GLenum target, GLint level) {
804 DCHECK(decoder); 763 DCHECK(decoder);
805 size_t face_index = GLTargetToFaceIndex(target); 764 size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
806 if (face_index >= level_infos_.size() || 765 if (face_index >= level_infos_.size() ||
807 level >= static_cast<GLint>(level_infos_[face_index].size())) { 766 level >= static_cast<GLint>(level_infos_[face_index].size())) {
808 return true; 767 return true;
809 } 768 }
810 769
811 Texture::LevelInfo& info = level_infos_[face_index][level]; 770 Texture::LevelInfo& info = level_infos_[face_index][level];
812 771
813 DCHECK(target == info.target); 772 DCHECK(target == info.target);
814 773
815 if (info.target == 0 || 774 if (info.target == 0 ||
(...skipping 13 matching lines...) Expand all
829 UpdateMipCleared(&info, cleared); 788 UpdateMipCleared(&info, cleared);
830 return info.cleared; 789 return info.cleared;
831 } 790 }
832 791
833 void Texture::SetLevelImage( 792 void Texture::SetLevelImage(
834 const FeatureInfo* feature_info, 793 const FeatureInfo* feature_info,
835 GLenum target, 794 GLenum target,
836 GLint level, 795 GLint level,
837 gfx::GLImage* image) { 796 gfx::GLImage* image) {
838 DCHECK_GE(level, 0); 797 DCHECK_GE(level, 0);
839 DCHECK_LT(static_cast<size_t>(GLTargetToFaceIndex(target)), 798 size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
799 DCHECK_LT(static_cast<size_t>(face_index),
840 level_infos_.size()); 800 level_infos_.size());
841 DCHECK_LT(static_cast<size_t>(level), 801 DCHECK_LT(static_cast<size_t>(level),
842 level_infos_[GLTargetToFaceIndex(target)].size()); 802 level_infos_[face_index].size());
843 Texture::LevelInfo& info = 803 Texture::LevelInfo& info =
844 level_infos_[GLTargetToFaceIndex(target)][level]; 804 level_infos_[face_index][level];
845 DCHECK_EQ(info.target, target); 805 DCHECK_EQ(info.target, target);
846 DCHECK_EQ(info.level, level); 806 DCHECK_EQ(info.level, level);
847 info.image = image; 807 info.image = image;
848 UpdateCanRenderCondition(); 808 UpdateCanRenderCondition();
849 UpdateHasImages(); 809 UpdateHasImages();
850 } 810 }
851 811
852 gfx::GLImage* Texture::GetLevelImage(GLint target, GLint level) const { 812 gfx::GLImage* Texture::GetLevelImage(GLint target, GLint level) const {
853 if (target != GL_TEXTURE_2D && target != GL_TEXTURE_EXTERNAL_OES && 813 if (target != GL_TEXTURE_2D && target != GL_TEXTURE_EXTERNAL_OES &&
854 target != GL_TEXTURE_RECTANGLE_ARB) { 814 target != GL_TEXTURE_RECTANGLE_ARB) {
855 return NULL; 815 return NULL;
856 } 816 }
857 817
858 size_t face_index = GLTargetToFaceIndex(target); 818 size_t face_index = GLES2Util::GLTargetToFaceIndex(target);
859 if (level >= 0 && face_index < level_infos_.size() && 819 if (level >= 0 && face_index < level_infos_.size() &&
860 static_cast<size_t>(level) < level_infos_[face_index].size()) { 820 static_cast<size_t>(level) < level_infos_[face_index].size()) {
861 const LevelInfo& info = level_infos_[GLTargetToFaceIndex(target)][level]; 821 const LevelInfo& info = level_infos_[face_index][level];
862 if (info.target != 0) { 822 if (info.target != 0) {
863 return info.image.get(); 823 return info.image.get();
864 } 824 }
865 } 825 }
866 return 0; 826 return NULL;
867 } 827 }
868 828
869 void Texture::OnWillModifyPixels() { 829 void Texture::OnWillModifyPixels() {
870 gfx::GLImage* image = GetLevelImage(target(), 0); 830 gfx::GLImage* image = GetLevelImage(target(), 0);
871 if (image) 831 if (image)
872 image->WillModifyTexImage(); 832 image->WillModifyTexImage();
873 } 833 }
874 834
875 void Texture::OnDidModifyPixels() { 835 void Texture::OnDidModifyPixels() {
876 gfx::GLImage* image = GetLevelImage(target(), 0); 836 gfx::GLImage* image = GetLevelImage(target(), 0);
(...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after
1583 } 1543 }
1584 1544
1585 ScopedTextureUploadTimer::~ScopedTextureUploadTimer() { 1545 ScopedTextureUploadTimer::~ScopedTextureUploadTimer() {
1586 texture_state_->texture_upload_count++; 1546 texture_state_->texture_upload_count++;
1587 texture_state_->total_texture_upload_time += 1547 texture_state_->total_texture_upload_time +=
1588 base::TimeTicks::HighResNow() - begin_time_; 1548 base::TimeTicks::HighResNow() - begin_time_;
1589 } 1549 }
1590 1550
1591 } // namespace gles2 1551 } // namespace gles2
1592 } // namespace gpu 1552 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/common/gles2_cmd_utils.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698