| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 using ::testing::_; | 37 using ::testing::_; |
| 38 using ::testing::DoAll; | 38 using ::testing::DoAll; |
| 39 using ::testing::InSequence; | 39 using ::testing::InSequence; |
| 40 using ::testing::Invoke; | 40 using ::testing::Invoke; |
| 41 using ::testing::MatcherCast; | 41 using ::testing::MatcherCast; |
| 42 using ::testing::Mock; | 42 using ::testing::Mock; |
| 43 using ::testing::Pointee; | 43 using ::testing::Pointee; |
| 44 using ::testing::Return; | 44 using ::testing::Return; |
| 45 using ::testing::SaveArg; | 45 using ::testing::SaveArg; |
| 46 using ::testing::SetArrayArgument; | 46 using ::testing::SetArrayArgument; |
| 47 using ::testing::SetArgumentPointee; | 47 using ::testing::SetArgPointee; |
| 48 using ::testing::SetArgPointee; | 48 using ::testing::SetArgPointee; |
| 49 using ::testing::StrEq; | 49 using ::testing::StrEq; |
| 50 using ::testing::StrictMock; | 50 using ::testing::StrictMock; |
| 51 | 51 |
| 52 namespace { | 52 namespace { |
| 53 class EmulatingRGBImageStub : public gl::GLImageStub { | 53 class EmulatingRGBImageStub : public gl::GLImageStub { |
| 54 protected: | 54 protected: |
| 55 ~EmulatingRGBImageStub() override {} | 55 ~EmulatingRGBImageStub() override {} |
| 56 bool EmulatingRGB() const override { | 56 bool EmulatingRGB() const override { |
| 57 return true; | 57 return true; |
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 760 GL_LUMINANCE_ALPHA, | 760 GL_LUMINANCE_ALPHA, |
| 761 GL_SRGB, | 761 GL_SRGB, |
| 762 GL_SRGB_ALPHA, | 762 GL_SRGB_ALPHA, |
| 763 }; | 763 }; |
| 764 GLenum target = GL_TEXTURE_2D; | 764 GLenum target = GL_TEXTURE_2D; |
| 765 GLint level = 0; | 765 GLint level = 0; |
| 766 GLsizei width = 2; | 766 GLsizei width = 2; |
| 767 GLsizei height = 4; | 767 GLsizei height = 4; |
| 768 GLint border = 0; | 768 GLint border = 0; |
| 769 EXPECT_CALL(*gl_, GenTextures(_, _)) | 769 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 770 .WillOnce(SetArgumentPointee<1>(kNewServiceId)) | 770 .WillOnce(SetArgPointee<1>(kNewServiceId)) |
| 771 .RetiresOnSaturation(); | 771 .RetiresOnSaturation(); |
| 772 GenHelper<GenTexturesImmediate>(kNewClientId); | 772 GenHelper<GenTexturesImmediate>(kNewClientId); |
| 773 | 773 |
| 774 TextureManager* manager = group().texture_manager(); | 774 TextureManager* manager = group().texture_manager(); |
| 775 | 775 |
| 776 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR)); | 776 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR)); |
| 777 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)) | 777 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)) |
| 778 .WillRepeatedly(Return(GL_FRAMEBUFFER_COMPLETE)); | 778 .WillRepeatedly(Return(GL_FRAMEBUFFER_COMPLETE)); |
| 779 for (size_t i = 0; i < arraysize(kUnsizedInternalFormats); ++i) { | 779 for (size_t i = 0; i < arraysize(kUnsizedInternalFormats); ++i) { |
| 780 // Copy from main framebuffer to texture, using the unsized internal format. | 780 // Copy from main framebuffer to texture, using the unsized internal format. |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 850 {GL_BGRA_EXT, GL_RGBA8}, | 850 {GL_BGRA_EXT, GL_RGBA8}, |
| 851 {GL_LUMINANCE, GL_RGB8}, | 851 {GL_LUMINANCE, GL_RGB8}, |
| 852 {GL_LUMINANCE_ALPHA, GL_RGBA8}, | 852 {GL_LUMINANCE_ALPHA, GL_RGBA8}, |
| 853 }; | 853 }; |
| 854 GLenum target = GL_TEXTURE_2D; | 854 GLenum target = GL_TEXTURE_2D; |
| 855 GLint level = 0; | 855 GLint level = 0; |
| 856 GLsizei width = 2; | 856 GLsizei width = 2; |
| 857 GLsizei height = 4; | 857 GLsizei height = 4; |
| 858 GLint border = 0; | 858 GLint border = 0; |
| 859 EXPECT_CALL(*gl_, GenTextures(_, _)) | 859 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 860 .WillOnce(SetArgumentPointee<1>(kNewServiceId)) | 860 .WillOnce(SetArgPointee<1>(kNewServiceId)) |
| 861 .RetiresOnSaturation(); | 861 .RetiresOnSaturation(); |
| 862 GenHelper<GenTexturesImmediate>(kNewClientId); | 862 GenHelper<GenTexturesImmediate>(kNewClientId); |
| 863 | 863 |
| 864 TextureManager* manager = group().texture_manager(); | 864 TextureManager* manager = group().texture_manager(); |
| 865 | 865 |
| 866 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR)); | 866 EXPECT_CALL(*gl_, GetError()).WillRepeatedly(Return(GL_NO_ERROR)); |
| 867 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)) | 867 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)) |
| 868 .WillRepeatedly(Return(GL_FRAMEBUFFER_COMPLETE)); | 868 .WillRepeatedly(Return(GL_FRAMEBUFFER_COMPLETE)); |
| 869 for (size_t i = 0; i < arraysize(kUnsizedInternalFormats); ++i) { | 869 for (size_t i = 0; i < arraysize(kUnsizedInternalFormats); ++i) { |
| 870 // Copy from main framebuffer to texture, using the unsized internal format. | 870 // Copy from main framebuffer to texture, using the unsized internal format. |
| (...skipping 1335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2206 | 2206 |
| 2207 | 2207 |
| 2208 TEST_P(GLES2DecoderManualInitTest, EGLImageExternalBindTexture) { | 2208 TEST_P(GLES2DecoderManualInitTest, EGLImageExternalBindTexture) { |
| 2209 InitState init; | 2209 InitState init; |
| 2210 init.extensions = "GL_OES_EGL_image_external"; | 2210 init.extensions = "GL_OES_EGL_image_external"; |
| 2211 init.gl_version = "opengl es 2.0"; | 2211 init.gl_version = "opengl es 2.0"; |
| 2212 init.bind_generates_resource = true; | 2212 init.bind_generates_resource = true; |
| 2213 InitDecoder(init); | 2213 InitDecoder(init); |
| 2214 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_EXTERNAL_OES, kNewServiceId)); | 2214 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_EXTERNAL_OES, kNewServiceId)); |
| 2215 EXPECT_CALL(*gl_, GenTextures(1, _)) | 2215 EXPECT_CALL(*gl_, GenTextures(1, _)) |
| 2216 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 2216 .WillOnce(SetArgPointee<1>(kNewServiceId)); |
| 2217 BindTexture cmd; | 2217 BindTexture cmd; |
| 2218 cmd.Init(GL_TEXTURE_EXTERNAL_OES, kNewClientId); | 2218 cmd.Init(GL_TEXTURE_EXTERNAL_OES, kNewClientId); |
| 2219 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2219 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2220 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2220 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2221 TextureRef* texture_ref = GetTexture(kNewClientId); | 2221 TextureRef* texture_ref = GetTexture(kNewClientId); |
| 2222 EXPECT_TRUE(texture_ref != NULL); | 2222 EXPECT_TRUE(texture_ref != NULL); |
| 2223 EXPECT_TRUE(texture_ref->texture()->target() == GL_TEXTURE_EXTERNAL_OES); | 2223 EXPECT_TRUE(texture_ref->texture()->target() == GL_TEXTURE_EXTERNAL_OES); |
| 2224 } | 2224 } |
| 2225 | 2225 |
| 2226 TEST_P(GLES2DecoderManualInitTest, EGLImageExternalGetBinding) { | 2226 TEST_P(GLES2DecoderManualInitTest, EGLImageExternalGetBinding) { |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2611 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 2611 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 2612 } | 2612 } |
| 2613 | 2613 |
| 2614 TEST_P(GLES2DecoderManualInitTest, ARBTextureRectangleBindTexture) { | 2614 TEST_P(GLES2DecoderManualInitTest, ARBTextureRectangleBindTexture) { |
| 2615 InitState init; | 2615 InitState init; |
| 2616 init.extensions = "GL_ARB_texture_rectangle"; | 2616 init.extensions = "GL_ARB_texture_rectangle"; |
| 2617 init.bind_generates_resource = true; | 2617 init.bind_generates_resource = true; |
| 2618 InitDecoder(init); | 2618 InitDecoder(init); |
| 2619 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_RECTANGLE_ARB, kNewServiceId)); | 2619 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_RECTANGLE_ARB, kNewServiceId)); |
| 2620 EXPECT_CALL(*gl_, GenTextures(1, _)) | 2620 EXPECT_CALL(*gl_, GenTextures(1, _)) |
| 2621 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 2621 .WillOnce(SetArgPointee<1>(kNewServiceId)); |
| 2622 BindTexture cmd; | 2622 BindTexture cmd; |
| 2623 cmd.Init(GL_TEXTURE_RECTANGLE_ARB, kNewClientId); | 2623 cmd.Init(GL_TEXTURE_RECTANGLE_ARB, kNewClientId); |
| 2624 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2624 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2625 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2625 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2626 Texture* texture = GetTexture(kNewClientId)->texture(); | 2626 Texture* texture = GetTexture(kNewClientId)->texture(); |
| 2627 EXPECT_TRUE(texture != NULL); | 2627 EXPECT_TRUE(texture != NULL); |
| 2628 EXPECT_TRUE(texture->target() == GL_TEXTURE_RECTANGLE_ARB); | 2628 EXPECT_TRUE(texture->target() == GL_TEXTURE_RECTANGLE_ARB); |
| 2629 } | 2629 } |
| 2630 | 2630 |
| 2631 TEST_P(GLES2DecoderManualInitTest, ARBTextureRectangleGetBinding) { | 2631 TEST_P(GLES2DecoderManualInitTest, ARBTextureRectangleGetBinding) { |
| (...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3219 EXPECT_EQ(4, height); | 3219 EXPECT_EQ(4, height); |
| 3220 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 1, &type, &internal_format)); | 3220 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 1, &type, &internal_format)); |
| 3221 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format); | 3221 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format); |
| 3222 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); | 3222 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); |
| 3223 | 3223 |
| 3224 // Service ID has not changed. | 3224 // Service ID has not changed. |
| 3225 EXPECT_EQ(kServiceTextureId, texture->service_id()); | 3225 EXPECT_EQ(kServiceTextureId, texture->service_id()); |
| 3226 | 3226 |
| 3227 // Create new texture for consume. | 3227 // Create new texture for consume. |
| 3228 EXPECT_CALL(*gl_, GenTextures(_, _)) | 3228 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 3229 .WillOnce(SetArgumentPointee<1>(kNewServiceId)) | 3229 .WillOnce(SetArgPointee<1>(kNewServiceId)) |
| 3230 .RetiresOnSaturation(); | 3230 .RetiresOnSaturation(); |
| 3231 DoBindTexture(GL_TEXTURE_2D, kNewClientId, kNewServiceId); | 3231 DoBindTexture(GL_TEXTURE_2D, kNewClientId, kNewServiceId); |
| 3232 | 3232 |
| 3233 // Assigns and binds original service size texture ID. | 3233 // Assigns and binds original service size texture ID. |
| 3234 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)) | 3234 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)) |
| 3235 .Times(1) | 3235 .Times(1) |
| 3236 .RetiresOnSaturation(); | 3236 .RetiresOnSaturation(); |
| 3237 EXPECT_CALL(*gl_, DeleteTextures(1, _)).Times(1).RetiresOnSaturation(); | 3237 EXPECT_CALL(*gl_, DeleteTextures(1, _)).Times(1).RetiresOnSaturation(); |
| 3238 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kServiceTextureId)) | 3238 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kServiceTextureId)) |
| 3239 .Times(1) | 3239 .Times(1) |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3402 // ProduceTexture should fail it the texture and produce targets don't match. | 3402 // ProduceTexture should fail it the texture and produce targets don't match. |
| 3403 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 3403 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 3404 } | 3404 } |
| 3405 | 3405 |
| 3406 TEST_P(GLES2DecoderTest, CreateAndConsumeTextureCHROMIUMInvalidMailbox) { | 3406 TEST_P(GLES2DecoderTest, CreateAndConsumeTextureCHROMIUMInvalidMailbox) { |
| 3407 // Attempt to consume the mailbox when no texture has been produced with it. | 3407 // Attempt to consume the mailbox when no texture has been produced with it. |
| 3408 Mailbox mailbox = Mailbox::Generate(); | 3408 Mailbox mailbox = Mailbox::Generate(); |
| 3409 GLuint new_texture_id = kNewClientId; | 3409 GLuint new_texture_id = kNewClientId; |
| 3410 | 3410 |
| 3411 EXPECT_CALL(*gl_, GenTextures(1, _)) | 3411 EXPECT_CALL(*gl_, GenTextures(1, _)) |
| 3412 .WillOnce(SetArgumentPointee<1>(kNewServiceId)) | 3412 .WillOnce(SetArgPointee<1>(kNewServiceId)) |
| 3413 .RetiresOnSaturation(); | 3413 .RetiresOnSaturation(); |
| 3414 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, _)) | 3414 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, _)) |
| 3415 .Times(2) | 3415 .Times(2) |
| 3416 .RetiresOnSaturation(); | 3416 .RetiresOnSaturation(); |
| 3417 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE0)) | 3417 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE0)) |
| 3418 .Times(1) | 3418 .Times(1) |
| 3419 .RetiresOnSaturation(); | 3419 .RetiresOnSaturation(); |
| 3420 | 3420 |
| 3421 CreateAndConsumeTextureINTERNALImmediate& consume_cmd = | 3421 CreateAndConsumeTextureINTERNALImmediate& consume_cmd = |
| 3422 *GetImmediateAs<CreateAndConsumeTextureINTERNALImmediate>(); | 3422 *GetImmediateAs<CreateAndConsumeTextureINTERNALImmediate>(); |
| 3423 consume_cmd.Init(GL_TEXTURE_2D, new_texture_id, mailbox.name); | 3423 consume_cmd.Init(GL_TEXTURE_2D, new_texture_id, mailbox.name); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 3449 ASSERT_TRUE(texture_ref != NULL); | 3449 ASSERT_TRUE(texture_ref != NULL); |
| 3450 | 3450 |
| 3451 ProduceTextureDirectCHROMIUMImmediate& produce_cmd = | 3451 ProduceTextureDirectCHROMIUMImmediate& produce_cmd = |
| 3452 *GetImmediateAs<ProduceTextureDirectCHROMIUMImmediate>(); | 3452 *GetImmediateAs<ProduceTextureDirectCHROMIUMImmediate>(); |
| 3453 produce_cmd.Init(client_texture_id_, GL_TEXTURE_2D, mailbox.name); | 3453 produce_cmd.Init(client_texture_id_, GL_TEXTURE_2D, mailbox.name); |
| 3454 EXPECT_EQ(error::kNoError, | 3454 EXPECT_EQ(error::kNoError, |
| 3455 ExecuteImmediateCmd(produce_cmd, sizeof(mailbox.name))); | 3455 ExecuteImmediateCmd(produce_cmd, sizeof(mailbox.name))); |
| 3456 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3456 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3457 | 3457 |
| 3458 EXPECT_CALL(*gl_, GenTextures(1, _)) | 3458 EXPECT_CALL(*gl_, GenTextures(1, _)) |
| 3459 .WillOnce(SetArgumentPointee<1>(kNewServiceId)) | 3459 .WillOnce(SetArgPointee<1>(kNewServiceId)) |
| 3460 .RetiresOnSaturation(); | 3460 .RetiresOnSaturation(); |
| 3461 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_CUBE_MAP, _)) | 3461 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_CUBE_MAP, _)) |
| 3462 .Times(2) | 3462 .Times(2) |
| 3463 .RetiresOnSaturation(); | 3463 .RetiresOnSaturation(); |
| 3464 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE0)) | 3464 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE0)) |
| 3465 .Times(1) | 3465 .Times(1) |
| 3466 .RetiresOnSaturation(); | 3466 .RetiresOnSaturation(); |
| 3467 | 3467 |
| 3468 // Attempt to consume the mailbox with a different target. | 3468 // Attempt to consume the mailbox with a different target. |
| 3469 GLuint new_texture_id = kNewClientId; | 3469 GLuint new_texture_id = kNewClientId; |
| 3470 CreateAndConsumeTextureINTERNALImmediate& consume_cmd = | 3470 CreateAndConsumeTextureINTERNALImmediate& consume_cmd = |
| (...skipping 1291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4762 cmd.Init(GL_TEXTURE_2D, client_texture_id_); | 4762 cmd.Init(GL_TEXTURE_2D, client_texture_id_); |
| 4763 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4763 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4764 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4764 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4765 } | 4765 } |
| 4766 | 4766 |
| 4767 TEST_P(GLES2DecoderTest, BindTextureValidArgsNewId) { | 4767 TEST_P(GLES2DecoderTest, BindTextureValidArgsNewId) { |
| 4768 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kNewServiceId)) | 4768 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kNewServiceId)) |
| 4769 .Times(1) | 4769 .Times(1) |
| 4770 .RetiresOnSaturation(); | 4770 .RetiresOnSaturation(); |
| 4771 EXPECT_CALL(*gl_, GenTextures(1, _)) | 4771 EXPECT_CALL(*gl_, GenTextures(1, _)) |
| 4772 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 4772 .WillOnce(SetArgPointee<1>(kNewServiceId)); |
| 4773 if (!feature_info()->gl_version_info().BehavesLikeGLES() && | 4773 if (!feature_info()->gl_version_info().BehavesLikeGLES() && |
| 4774 feature_info()->gl_version_info().IsAtLeastGL(3, 2)) { | 4774 feature_info()->gl_version_info().IsAtLeastGL(3, 2)) { |
| 4775 EXPECT_CALL(*gl_, TexParameteri(GL_TEXTURE_2D, | 4775 EXPECT_CALL(*gl_, TexParameteri(GL_TEXTURE_2D, |
| 4776 GL_DEPTH_TEXTURE_MODE, | 4776 GL_DEPTH_TEXTURE_MODE, |
| 4777 GL_RED)) | 4777 GL_RED)) |
| 4778 .Times(1) | 4778 .Times(1) |
| 4779 .RetiresOnSaturation(); | 4779 .RetiresOnSaturation(); |
| 4780 } | 4780 } |
| 4781 BindTexture cmd; | 4781 BindTexture cmd; |
| 4782 cmd.Init(GL_TEXTURE_2D, kNewClientId); | 4782 cmd.Init(GL_TEXTURE_2D, kNewClientId); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4870 // TODO(gman): CompressedTexSubImage2DImmediate | 4870 // TODO(gman): CompressedTexSubImage2DImmediate |
| 4871 | 4871 |
| 4872 // TODO(gman): TexImage2D | 4872 // TODO(gman): TexImage2D |
| 4873 | 4873 |
| 4874 // TODO(gman): TexImage2DImmediate | 4874 // TODO(gman): TexImage2DImmediate |
| 4875 | 4875 |
| 4876 // TODO(gman): TexSubImage2DImmediate | 4876 // TODO(gman): TexSubImage2DImmediate |
| 4877 | 4877 |
| 4878 } // namespace gles2 | 4878 } // namespace gles2 |
| 4879 } // namespace gpu | 4879 } // namespace gpu |
| OLD | NEW |