OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |