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

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

Issue 864513004: gpu: introduce glCopySubTextureCHROMIUM (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <list> 10 #include <list>
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 74
75 #if defined(OS_WIN) 75 #if defined(OS_WIN)
76 #include "base/win/win_util.h" 76 #include "base/win/win_util.h"
77 #endif 77 #endif
78 78
79 namespace gpu { 79 namespace gpu {
80 namespace gles2 { 80 namespace gles2 {
81 81
82 namespace { 82 namespace {
83 83
84 static const char kOESDerivativeExtension[] = "GL_OES_standard_derivatives"; 84 const char kOESDerivativeExtension[] = "GL_OES_standard_derivatives";
85 static const char kEXTFragDepthExtension[] = "GL_EXT_frag_depth"; 85 const char kEXTFragDepthExtension[] = "GL_EXT_frag_depth";
86 static const char kEXTDrawBuffersExtension[] = "GL_EXT_draw_buffers"; 86 const char kEXTDrawBuffersExtension[] = "GL_EXT_draw_buffers";
87 static const char kEXTShaderTextureLodExtension[] = "GL_EXT_shader_texture_lod"; 87 const char kEXTShaderTextureLodExtension[] = "GL_EXT_shader_texture_lod";
88
89 GLfloat kIdentityMatrix[16] = {1.0f, 0.0f, 0.0f, 0.0f,
90 0.0f, 1.0f, 0.0f, 0.0f,
91 0.0f, 0.0f, 1.0f, 0.0f,
92 0.0f, 0.0f, 0.0f, 1.0f};
88 93
89 static bool PrecisionMeetsSpecForHighpFloat(GLint rangeMin, 94 static bool PrecisionMeetsSpecForHighpFloat(GLint rangeMin,
90 GLint rangeMax, 95 GLint rangeMax,
91 GLint precision) { 96 GLint precision) {
92 return (rangeMin >= 62) && (rangeMax >= 62) && (precision >= 16); 97 return (rangeMin >= 62) && (rangeMax >= 62) && (precision >= 16);
93 } 98 }
94 99
95 static void GetShaderPrecisionFormatImpl(GLenum shader_type, 100 static void GetShaderPrecisionFormatImpl(GLenum shader_type,
96 GLenum precision_type, 101 GLenum precision_type,
97 GLint *range, GLint *precision) { 102 GLint *range, GLint *precision) {
(...skipping 831 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 const void * data); 934 const void * data);
930 935
931 // Wrapper for TexImageIOSurface2DCHROMIUM. 936 // Wrapper for TexImageIOSurface2DCHROMIUM.
932 void DoTexImageIOSurface2DCHROMIUM( 937 void DoTexImageIOSurface2DCHROMIUM(
933 GLenum target, 938 GLenum target,
934 GLsizei width, 939 GLsizei width,
935 GLsizei height, 940 GLsizei height,
936 GLuint io_surface_id, 941 GLuint io_surface_id,
937 GLuint plane); 942 GLuint plane);
938 943
939 void DoCopyTextureCHROMIUM( 944 void DoCopyTextureCHROMIUM(GLenum target,
940 GLenum target, 945 GLuint source_id,
941 GLuint source_id, 946 GLuint dest_id,
942 GLuint target_id, 947 GLint level,
943 GLint level, 948 GLenum internal_format,
944 GLenum internal_format, 949 GLenum dest_type);
945 GLenum dest_type); 950
951 void DoCopySubTextureCHROMIUM(GLenum target,
952 GLuint source_id,
953 GLuint dest_id,
954 GLint level,
955 GLint xoffset,
956 GLint yoffset);
946 957
947 // Wrapper for TexStorage2DEXT. 958 // Wrapper for TexStorage2DEXT.
948 void DoTexStorage2DEXT( 959 void DoTexStorage2DEXT(
949 GLenum target, 960 GLenum target,
950 GLint levels, 961 GLint levels,
951 GLenum internal_format, 962 GLenum internal_format,
952 GLsizei width, 963 GLsizei width,
953 GLsizei height); 964 GLsizei height);
954 965
955 void DoProduceTextureCHROMIUM(GLenum target, const GLbyte* key); 966 void DoProduceTextureCHROMIUM(GLenum target, const GLbyte* key);
(...skipping 9572 matching lines...) Expand 10 before | Expand all | Expand 10 after
10528 GL_INVALID_VALUE, "glCopyTextureCHROMIUM", "unknown texture id"); 10539 GL_INVALID_VALUE, "glCopyTextureCHROMIUM", "unknown texture id");
10529 return; 10540 return;
10530 } 10541 }
10531 10542
10532 if (GL_TEXTURE_2D != target) { 10543 if (GL_TEXTURE_2D != target) {
10533 LOCAL_SET_GL_ERROR( 10544 LOCAL_SET_GL_ERROR(
10534 GL_INVALID_VALUE, "glCopyTextureCHROMIUM", "invalid texture target"); 10545 GL_INVALID_VALUE, "glCopyTextureCHROMIUM", "invalid texture target");
10535 return; 10546 return;
10536 } 10547 }
10537 10548
10549 if (level) {
10550 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopyTextureCHROMIUM",
10551 "level must be 0");
10552 return;
10553 }
piman 2015/01/21 00:01:32 Why do we disallow >0 levels?
dshwang 2015/01/21 13:36:38 CHROMIUM_copy_texture.txt defines like that. "
piman 2015/01/21 18:05:55 If we don't support level>0 we should remove level
10554
10555 if (source_texture_ref == dest_texture_ref) {
piman 2015/01/21 00:01:31 Actually what you want to check is if source_textu
10556 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glCopyTextureCHROMIUM",
10557 "source and destination textures are the same");
10558 return;
10559 }
10560
10538 Texture* source_texture = source_texture_ref->texture(); 10561 Texture* source_texture = source_texture_ref->texture();
10539 Texture* dest_texture = dest_texture_ref->texture(); 10562 Texture* dest_texture = dest_texture_ref->texture();
10540 if (dest_texture->target() != GL_TEXTURE_2D || 10563 if (dest_texture->target() != GL_TEXTURE_2D ||
10541 (source_texture->target() != GL_TEXTURE_2D && 10564 (source_texture->target() != GL_TEXTURE_2D &&
10542 source_texture->target() != GL_TEXTURE_RECTANGLE_ARB && 10565 source_texture->target() != GL_TEXTURE_RECTANGLE_ARB &&
10543 source_texture->target() != GL_TEXTURE_EXTERNAL_OES)) { 10566 source_texture->target() != GL_TEXTURE_EXTERNAL_OES)) {
10544 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, 10567 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE,
10545 "glCopyTextureCHROMIUM", 10568 "glCopyTextureCHROMIUM",
10546 "invalid texture target binding"); 10569 "invalid texture target binding");
10547 return; 10570 return;
10548 } 10571 }
10549 10572
10573 if (dest_texture->IsImmutable()) {
10574 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glCopyTextureCHROMIUM",
10575 "texture is immutable");
10576 return;
10577 }
10578
10550 int source_width, source_height, dest_width, dest_height; 10579 int source_width, source_height, dest_width, dest_height;
10551 10580
10552 gfx::GLImage* image = 10581 gfx::GLImage* image =
10553 source_texture->GetLevelImage(source_texture->target(), 0); 10582 source_texture->GetLevelImage(source_texture->target(), 0);
10554 if (image) { 10583 if (image) {
10555 gfx::Size size = image->GetSize(); 10584 gfx::Size size = image->GetSize();
10556 source_width = size.width(); 10585 source_width = size.width();
10557 source_height = size.height(); 10586 source_height = size.height();
10558 if (source_width <= 0 || source_height <= 0) { 10587 if (source_width <= 0 || source_height <= 0) {
10559 LOCAL_SET_GL_ERROR( 10588 LOCAL_SET_GL_ERROR(
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
10667 if (image->CopyTexImage(GL_TEXTURE_2D)) 10696 if (image->CopyTexImage(GL_TEXTURE_2D))
10668 return; 10697 return;
10669 } 10698 }
10670 10699
10671 DoWillUseTexImageIfNeeded(source_texture, source_texture->target()); 10700 DoWillUseTexImageIfNeeded(source_texture, source_texture->target());
10672 10701
10673 // GL_TEXTURE_EXTERNAL_OES texture requires apply a transform matrix 10702 // GL_TEXTURE_EXTERNAL_OES texture requires apply a transform matrix
10674 // before presenting. 10703 // before presenting.
10675 if (source_texture->target() == GL_TEXTURE_EXTERNAL_OES) { 10704 if (source_texture->target() == GL_TEXTURE_EXTERNAL_OES) {
10676 // TODO(hkuang): get the StreamTexture transform matrix in GPU process 10705 // TODO(hkuang): get the StreamTexture transform matrix in GPU process
10677 // instead of using default matrix crbug.com/226218. 10706 // instead of using kIdentityMatrix crbug.com/226218.
10678 const static GLfloat default_matrix[16] = {1.0f, 0.0f, 0.0f, 0.0f,
10679 0.0f, 1.0f, 0.0f, 0.0f,
10680 0.0f, 0.0f, 1.0f, 0.0f,
10681 0.0f, 0.0f, 0.0f, 1.0f};
10682 copy_texture_CHROMIUM_->DoCopyTextureWithTransform( 10707 copy_texture_CHROMIUM_->DoCopyTextureWithTransform(
10683 this, 10708 this, source_texture->target(), source_texture->service_id(),
10684 source_texture->target(), 10709 dest_texture->service_id(), level, source_width, source_height,
10685 source_texture->service_id(), 10710 unpack_flip_y_, unpack_premultiply_alpha_, unpack_unpremultiply_alpha_,
10686 dest_texture->service_id(), 10711 kIdentityMatrix);
10687 level,
10688 source_width,
10689 source_height,
10690 unpack_flip_y_,
10691 unpack_premultiply_alpha_,
10692 unpack_unpremultiply_alpha_,
10693 default_matrix);
10694 } else { 10712 } else {
10695 copy_texture_CHROMIUM_->DoCopyTexture(this, 10713 copy_texture_CHROMIUM_->DoCopyTexture(
10696 source_texture->target(), 10714 this, source_texture->target(), source_texture->service_id(),
10697 source_texture->service_id(), 10715 source_internal_format, dest_texture->service_id(), level,
10698 source_internal_format, 10716 internal_format, source_width, source_height, unpack_flip_y_,
10699 dest_texture->service_id(), 10717 unpack_premultiply_alpha_, unpack_unpremultiply_alpha_);
10700 level,
10701 internal_format,
10702 source_width,
10703 source_height,
10704 unpack_flip_y_,
10705 unpack_premultiply_alpha_,
10706 unpack_unpremultiply_alpha_);
10707 } 10718 }
10708 10719
10709 DoDidUseTexImageIfNeeded(source_texture, source_texture->target()); 10720 DoDidUseTexImageIfNeeded(source_texture, source_texture->target());
10721 }
10722
10723 void GLES2DecoderImpl::DoCopySubTextureCHROMIUM(GLenum target,
10724 GLuint source_id,
10725 GLuint dest_id,
10726 GLint level,
10727 GLint xoffset,
10728 GLint yoffset) {
10729 TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoCopySubTextureCHROMIUM");
10730
10731 TextureRef* dest_texture_ref = GetTexture(dest_id);
10732 TextureRef* source_texture_ref = GetTexture(source_id);
10733
10734 if (!source_texture_ref || !dest_texture_ref) {
10735 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopySubTextureCHROMIUM",
10736 "unknown texture id");
10737 return;
10738 }
10739
10740 if (GL_TEXTURE_2D != target) {
10741 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopySubTextureCHROMIUM",
10742 "invalid texture target");
10743 return;
10744 }
10745
10746 if (level) {
10747 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopySubTextureCHROMIUM",
10748 "level must be 0");
piman 2015/01/21 00:01:31 Why?
dshwang 2015/01/21 13:36:38 same reason to above.
10749 return;
10750 }
10751
10752 if (source_texture_ref == dest_texture_ref) {
piman 2015/01/21 00:01:32 Same as above.
dshwang 2015/01/21 13:36:38 Done.
10753 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glCopySubTextureCHROMIUM",
10754 "source and destination textures are the same");
10755 return;
10756 }
10757
10758 Texture* source_texture = source_texture_ref->texture();
10759 Texture* dest_texture = dest_texture_ref->texture();
10760 if (dest_texture->target() != GL_TEXTURE_2D ||
10761 (source_texture->target() != GL_TEXTURE_2D &&
10762 source_texture->target() != GL_TEXTURE_RECTANGLE_ARB &&
10763 source_texture->target() != GL_TEXTURE_EXTERNAL_OES)) {
10764 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopySubTextureCHROMIUM",
10765 "invalid texture target binding");
10766 return;
10767 }
10768
10769 int source_width, source_height;
piman 2015/01/21 00:01:31 nit: please initialize.
dshwang 2015/01/21 13:36:38 Done.
10770
10771 gfx::GLImage* image =
10772 source_texture->GetLevelImage(source_texture->target(), 0);
10773 if (image) {
10774 gfx::Size size = image->GetSize();
10775 source_width = size.width();
10776 source_height = size.height();
10777 if (source_width <= 0 || source_height <= 0) {
10778 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopySubTextureCHROMIUM",
10779 "invalid image size");
10780 return;
10781 }
10782 } else {
10783 if (!source_texture->GetLevelSize(source_texture->target(), 0,
10784 &source_width, &source_height)) {
10785 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopySubTextureCHROMIUM",
10786 "source texture has no level 0");
10787 return;
10788 }
10789
10790 // Check that this type of texture is allowed.
10791 if (!texture_manager()->ValidForTarget(source_texture->target(), level,
10792 source_width, source_height, 1)) {
10793 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopySubTextureCHROMIUM",
10794 "source texture bad dimensions");
10795 return;
10796 }
10797 }
10798
10799 // Clear the source texture if necessary.
10800 if (!texture_manager()->ClearTextureLevel(this, source_texture_ref,
10801 source_texture->target(), 0)) {
10802 LOCAL_SET_GL_ERROR(GL_OUT_OF_MEMORY, "glCopySubTextureCHROMIUM",
10803 "source texture dimensions too big");
10804 return;
10805 }
10806
10807 GLenum source_type = 0;
10808 GLenum source_internal_format = 0;
10809 source_texture->GetLevelType(source_texture->target(), 0, &source_type,
10810 &source_internal_format);
10811 GLenum dest_type = 0;
10812 GLenum dest_internal_format = 0;
10813 bool dest_level_defined = dest_texture->GetLevelType(
10814 dest_texture->target(), level, &dest_type, &dest_internal_format);
10815 if (!dest_level_defined) {
10816 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glCopySubTextureCHROMIUM",
10817 "destination texture is not defined");
10818 return;
10819 }
10820 if (!dest_texture->ValidForTexture(dest_texture->target(), level, xoffset,
10821 yoffset, source_width, source_height,
10822 dest_type)) {
10823 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glCopySubTextureCHROMIUM",
10824 "destination texture bad dimensions.");
10825 return;
10826 }
10827
10828 // The destination format should be GL_RGB, or GL_RGBA. GL_ALPHA,
10829 // GL_LUMINANCE, and GL_LUMINANCE_ALPHA are not supported because they are not
10830 // renderable on some platforms.
10831 bool valid_dest_format = dest_internal_format == GL_RGB ||
10832 dest_internal_format == GL_RGBA ||
10833 dest_internal_format == GL_BGRA_EXT;
10834 bool valid_source_format = source_internal_format == GL_ALPHA ||
10835 source_internal_format == GL_RGB ||
10836 source_internal_format == GL_RGBA ||
10837 source_internal_format == GL_LUMINANCE ||
10838 source_internal_format == GL_LUMINANCE_ALPHA ||
10839 source_internal_format == GL_BGRA_EXT;
piman 2015/01/21 00:01:31 nit: can this check be shared with the DoCopyTextu
dshwang 2015/01/21 13:36:38 Done.
10840 if (!valid_source_format || !valid_dest_format) {
10841 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glCopySubTextureCHROMIUM",
10842 "invalid internal format");
10843 return;
10844 }
10845
10846 // Defer initializing the CopyTextureCHROMIUMResourceManager until it is
10847 // needed because it takes 10s of milliseconds to initialize.
10848 if (!copy_texture_CHROMIUM_.get()) {
10849 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("glCopySubTextureCHROMIUM");
10850 copy_texture_CHROMIUM_.reset(new CopyTextureCHROMIUMResourceManager());
10851 copy_texture_CHROMIUM_->Initialize(this);
10852 RestoreCurrentFramebufferBindings();
10853 if (LOCAL_PEEK_GL_ERROR("glCopySubTextureCHROMIUM") != GL_NO_ERROR)
10854 return;
10855 }
10856
10857 int dest_width, dest_height;
10858 bool ok = dest_texture->GetLevelSize(GL_TEXTURE_2D, level, &dest_width,
10859 &dest_height);
10860 DCHECK(ok);
10861 if (xoffset != 0 || yoffset != 0 || source_width != dest_width ||
10862 source_height != dest_height) {
10863 if (!texture_manager()->ClearTextureLevel(this, dest_texture_ref, target,
10864 level)) {
10865 LOCAL_SET_GL_ERROR(GL_OUT_OF_MEMORY, "glCopySubTextureCHROMIUM",
10866 "destination texture dimensions too big");
10867 return;
10868 }
10869 } else {
10870 texture_manager()->SetLevelCleared(dest_texture_ref, GL_TEXTURE_2D, level,
10871 true);
10872 }
10873
10874 ScopedModifyPixels modify(dest_texture_ref);
10875
10876 DoWillUseTexImageIfNeeded(source_texture, source_texture->target());
10877
10878 // GL_TEXTURE_EXTERNAL_OES texture requires apply a transform matrix
10879 // before presenting.
10880 if (source_texture->target() == GL_TEXTURE_EXTERNAL_OES) {
10881 // TODO(hkuang): get the StreamTexture transform matrix in GPU process
10882 // instead of using kIdentityMatrix crbug.com/226218.
10883 copy_texture_CHROMIUM_->DoCopySubTextureWithTransform(
10884 this, source_texture->target(), source_texture->service_id(),
10885 dest_texture->service_id(), level, xoffset, yoffset, dest_width,
10886 dest_height, source_width, source_height, unpack_flip_y_,
10887 unpack_premultiply_alpha_, unpack_unpremultiply_alpha_,
10888 kIdentityMatrix);
10889 } else {
10890 copy_texture_CHROMIUM_->DoCopySubTexture(
10891 this, source_texture->target(), source_texture->service_id(),
10892 source_internal_format, dest_texture->service_id(), level,
10893 dest_internal_format, xoffset, yoffset, dest_width, dest_height,
10894 source_width, source_height, unpack_flip_y_, unpack_premultiply_alpha_,
10895 unpack_unpremultiply_alpha_);
10896 }
10897
10898 DoDidUseTexImageIfNeeded(source_texture, source_texture->target());
10710 } 10899 }
10711 10900
10712 static GLenum ExtractTypeFromStorageFormat(GLenum internalformat) { 10901 static GLenum ExtractTypeFromStorageFormat(GLenum internalformat) {
10713 switch (internalformat) { 10902 switch (internalformat) {
10714 case GL_RGB565: 10903 case GL_RGB565:
10715 return GL_UNSIGNED_SHORT_5_6_5; 10904 return GL_UNSIGNED_SHORT_5_6_5;
10716 case GL_RGBA4: 10905 case GL_RGBA4:
10717 return GL_UNSIGNED_SHORT_4_4_4_4; 10906 return GL_UNSIGNED_SHORT_4_4_4_4;
10718 case GL_RGB5_A1: 10907 case GL_RGB5_A1:
10719 return GL_UNSIGNED_SHORT_5_5_5_1; 10908 return GL_UNSIGNED_SHORT_5_5_5_1;
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after
11301 DCHECK(matrix_mode == GL_PATH_PROJECTION_CHROMIUM || 11490 DCHECK(matrix_mode == GL_PATH_PROJECTION_CHROMIUM ||
11302 matrix_mode == GL_PATH_MODELVIEW_CHROMIUM); 11491 matrix_mode == GL_PATH_MODELVIEW_CHROMIUM);
11303 11492
11304 if (!features().chromium_path_rendering) { 11493 if (!features().chromium_path_rendering) {
11305 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, 11494 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION,
11306 "glMatrixLoadIdentityCHROMIUM", 11495 "glMatrixLoadIdentityCHROMIUM",
11307 "function not available"); 11496 "function not available");
11308 return; 11497 return;
11309 } 11498 }
11310 11499
11311 static GLfloat kIdentityMatrix[16] = {1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
11312 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
11313 0.0f, 0.0f, 0.0f, 1.0f};
11314
11315 GLfloat* target_matrix = matrix_mode == GL_PATH_PROJECTION_CHROMIUM 11500 GLfloat* target_matrix = matrix_mode == GL_PATH_PROJECTION_CHROMIUM
11316 ? state_.projection_matrix 11501 ? state_.projection_matrix
11317 : state_.modelview_matrix; 11502 : state_.modelview_matrix;
11318 memcpy(target_matrix, kIdentityMatrix, sizeof(kIdentityMatrix)); 11503 memcpy(target_matrix, kIdentityMatrix, sizeof(kIdentityMatrix));
11319 // The matrix_mode is either GL_PATH_MODELVIEW_NV or GL_PATH_PROJECTION_NV 11504 // The matrix_mode is either GL_PATH_MODELVIEW_NV or GL_PATH_PROJECTION_NV
11320 // since the values of the _NV and _CHROMIUM tokens match. 11505 // since the values of the _NV and _CHROMIUM tokens match.
11321 glMatrixLoadIdentityEXT(matrix_mode); 11506 glMatrixLoadIdentityEXT(matrix_mode);
11322 } 11507 }
11323 11508
11324 bool GLES2DecoderImpl::ValidateAsyncTransfer( 11509 bool GLES2DecoderImpl::ValidateAsyncTransfer(
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
11643 } 11828 }
11644 } 11829 }
11645 11830
11646 // Include the auto-generated part of this file. We split this because it means 11831 // Include the auto-generated part of this file. We split this because it means
11647 // we can easily edit the non-auto generated parts right here in this file 11832 // we can easily edit the non-auto generated parts right here in this file
11648 // instead of having to edit some template or the code generator. 11833 // instead of having to edit some template or the code generator.
11649 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 11834 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
11650 11835
11651 } // namespace gles2 11836 } // namespace gles2
11652 } // namespace gpu 11837 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_copy_texture_chromium.cc ('k') | gpu/command_buffer/service/gles2_cmd_decoder_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698