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

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

Issue 331723003: gpu: Remove Create/DeleteImage IPC by adding an X11_PIXMAP_BUFFER GpuMemoryBuffer type. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
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 "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "gpu/command_buffer/common/gles2_cmd_format.h" 9 #include "gpu/command_buffer/common/gles2_cmd_format.h"
10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
11 #include "gpu/command_buffer/common/id_allocator.h" 11 #include "gpu/command_buffer/common/id_allocator.h"
12 #include "gpu/command_buffer/service/async_pixel_transfer_delegate_mock.h" 12 #include "gpu/command_buffer/service/async_pixel_transfer_delegate_mock.h"
13 #include "gpu/command_buffer/service/async_pixel_transfer_manager.h" 13 #include "gpu/command_buffer/service/async_pixel_transfer_manager.h"
14 #include "gpu/command_buffer/service/async_pixel_transfer_manager_mock.h" 14 #include "gpu/command_buffer/service/async_pixel_transfer_manager_mock.h"
15 #include "gpu/command_buffer/service/cmd_buffer_engine.h" 15 #include "gpu/command_buffer/service/cmd_buffer_engine.h"
16 #include "gpu/command_buffer/service/context_group.h" 16 #include "gpu/command_buffer/service/context_group.h"
17 #include "gpu/command_buffer/service/context_state.h" 17 #include "gpu/command_buffer/service/context_state.h"
18 #include "gpu/command_buffer/service/gl_surface_mock.h" 18 #include "gpu/command_buffer/service/gl_surface_mock.h"
19 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest.h" 19 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest.h"
20 20
21 #include "gpu/command_buffer/service/gpu_switches.h" 21 #include "gpu/command_buffer/service/gpu_switches.h"
22 #include "gpu/command_buffer/service/image_manager.h" 22 #include "gpu/command_buffer/service/image_manager.h"
23 #include "gpu/command_buffer/service/mailbox_manager.h" 23 #include "gpu/command_buffer/service/mailbox_manager.h"
24 #include "gpu/command_buffer/service/mocks.h" 24 #include "gpu/command_buffer/service/mocks.h"
25 #include "gpu/command_buffer/service/program_manager.h" 25 #include "gpu/command_buffer/service/program_manager.h"
26 #include "gpu/command_buffer/service/test_helper.h" 26 #include "gpu/command_buffer/service/test_helper.h"
27 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
28 #include "ui/gl/gl_image_stub.h"
28 #include "ui/gl/gl_implementation.h" 29 #include "ui/gl/gl_implementation.h"
29 #include "ui/gl/gl_mock.h" 30 #include "ui/gl/gl_mock.h"
30 #include "ui/gl/gl_surface_stub.h" 31 #include "ui/gl/gl_surface_stub.h"
31 32
32 #if !defined(GL_DEPTH24_STENCIL8) 33 #if !defined(GL_DEPTH24_STENCIL8)
33 #define GL_DEPTH24_STENCIL8 0x88F0 34 #define GL_DEPTH24_STENCIL8 0x88F0
34 #endif 35 #endif
35 36
36 using ::gfx::MockGLInterface; 37 using ::gfx::MockGLInterface;
37 using ::testing::_; 38 using ::testing::_;
(...skipping 2102 matching lines...) Expand 10 before | Expand all | Expand 10 after
2140 TEST_P(GLES2DecoderTest, BindTexImage2DCHROMIUM) { 2141 TEST_P(GLES2DecoderTest, BindTexImage2DCHROMIUM) {
2141 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 2142 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
2142 DoTexImage2D( 2143 DoTexImage2D(
2143 GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); 2144 GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0);
2144 TextureRef* texture_ref = 2145 TextureRef* texture_ref =
2145 group().texture_manager()->GetTexture(client_texture_id_); 2146 group().texture_manager()->GetTexture(client_texture_id_);
2146 ASSERT_TRUE(texture_ref != NULL); 2147 ASSERT_TRUE(texture_ref != NULL);
2147 Texture* texture = texture_ref->texture(); 2148 Texture* texture = texture_ref->texture();
2148 EXPECT_EQ(kServiceTextureId, texture->service_id()); 2149 EXPECT_EQ(kServiceTextureId, texture->service_id());
2149 2150
2150 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); 2151 scoped_refptr<gfx::GLImage> image(new gfx::GLImageStub);
2151 EXPECT_FALSE(group().image_manager()->LookupImage(1) == NULL); 2152 GetImageManager()->AddImage(image.get(), 1);
2153 EXPECT_FALSE(GetImageManager()->LookupImage(1) == NULL);
2152 2154
2153 GLsizei width; 2155 GLsizei width;
2154 GLsizei height; 2156 GLsizei height;
2155 GLenum type; 2157 GLenum type;
2156 GLenum internal_format; 2158 GLenum internal_format;
2157 2159
2158 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 2160 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
2159 EXPECT_EQ(3, width); 2161 EXPECT_EQ(3, width);
2160 EXPECT_EQ(1, height); 2162 EXPECT_EQ(1, height);
2161 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format)); 2163 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format));
(...skipping 16 matching lines...) Expand all
2178 2180
2179 // Define new texture image. 2181 // Define new texture image.
2180 DoTexImage2D( 2182 DoTexImage2D(
2181 GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); 2183 GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0);
2182 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 2184 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
2183 // Image should no longer be set. 2185 // Image should no longer be set.
2184 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); 2186 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL);
2185 } 2187 }
2186 2188
2187 TEST_P(GLES2DecoderTest, BindTexImage2DCHROMIUMCubeMapNotAllowed) { 2189 TEST_P(GLES2DecoderTest, BindTexImage2DCHROMIUMCubeMapNotAllowed) {
2188 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); 2190 scoped_refptr<gfx::GLImage> image(new gfx::GLImageStub);
2191 GetImageManager()->AddImage(image.get(), 1);
2189 DoBindTexture(GL_TEXTURE_CUBE_MAP, client_texture_id_, kServiceTextureId); 2192 DoBindTexture(GL_TEXTURE_CUBE_MAP, client_texture_id_, kServiceTextureId);
2190 2193
2191 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd; 2194 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd;
2192 bind_tex_image_2d_cmd.Init(GL_TEXTURE_CUBE_MAP, 1); 2195 bind_tex_image_2d_cmd.Init(GL_TEXTURE_CUBE_MAP, 1);
2193 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd)); 2196 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd));
2194 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 2197 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
2195 } 2198 }
2196 2199
2197 TEST_P(GLES2DecoderTest, OrphanGLImageWithTexImage2D) { 2200 TEST_P(GLES2DecoderTest, OrphanGLImageWithTexImage2D) {
2198 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); 2201 scoped_refptr<gfx::GLImage> image(new gfx::GLImageStub);
2202 GetImageManager()->AddImage(image.get(), 1);
2199 DoBindTexture(GL_TEXTURE_CUBE_MAP, client_texture_id_, kServiceTextureId); 2203 DoBindTexture(GL_TEXTURE_CUBE_MAP, client_texture_id_, kServiceTextureId);
2200 2204
2201 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd; 2205 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd;
2202 bind_tex_image_2d_cmd.Init(GL_TEXTURE_CUBE_MAP, 1); 2206 bind_tex_image_2d_cmd.Init(GL_TEXTURE_CUBE_MAP, 1);
2203 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd)); 2207 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd));
2204 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 2208 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
2205 2209
2206 DoTexImage2D( 2210 DoTexImage2D(
2207 GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); 2211 GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0);
2208 TextureRef* texture_ref = 2212 TextureRef* texture_ref =
2209 group().texture_manager()->GetTexture(client_texture_id_); 2213 group().texture_manager()->GetTexture(client_texture_id_);
2210 ASSERT_TRUE(texture_ref != NULL); 2214 ASSERT_TRUE(texture_ref != NULL);
2211 Texture* texture = texture_ref->texture(); 2215 Texture* texture = texture_ref->texture();
2212 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); 2216 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL);
2213 } 2217 }
2214 2218
2215 TEST_P(GLES2DecoderTest, ReleaseTexImage2DCHROMIUM) { 2219 TEST_P(GLES2DecoderTest, ReleaseTexImage2DCHROMIUM) {
2216 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 2220 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
2217 DoTexImage2D( 2221 DoTexImage2D(
2218 GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); 2222 GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0);
2219 TextureRef* texture_ref = 2223 TextureRef* texture_ref =
2220 group().texture_manager()->GetTexture(client_texture_id_); 2224 group().texture_manager()->GetTexture(client_texture_id_);
2221 ASSERT_TRUE(texture_ref != NULL); 2225 ASSERT_TRUE(texture_ref != NULL);
2222 Texture* texture = texture_ref->texture(); 2226 Texture* texture = texture_ref->texture();
2223 EXPECT_EQ(kServiceTextureId, texture->service_id()); 2227 EXPECT_EQ(kServiceTextureId, texture->service_id());
2224 2228
2225 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); 2229 scoped_refptr<gfx::GLImage> image(new gfx::GLImageStub);
2226 EXPECT_FALSE(group().image_manager()->LookupImage(1) == NULL); 2230 GetImageManager()->AddImage(image.get(), 1);
2231 EXPECT_FALSE(GetImageManager()->LookupImage(1) == NULL);
2227 2232
2228 GLsizei width; 2233 GLsizei width;
2229 GLsizei height; 2234 GLsizei height;
2230 GLenum type; 2235 GLenum type;
2231 GLenum internal_format; 2236 GLenum internal_format;
2232 2237
2233 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 2238 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
2234 EXPECT_EQ(3, width); 2239 EXPECT_EQ(3, width);
2235 EXPECT_EQ(1, height); 2240 EXPECT_EQ(1, height);
2236 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format)); 2241 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2297 kSharedMemoryOffset); 2302 kSharedMemoryOffset);
2298 2303
2299 TextureRef* texture_ref = 2304 TextureRef* texture_ref =
2300 group().texture_manager()->GetTexture(client_texture_id_); 2305 group().texture_manager()->GetTexture(client_texture_id_);
2301 ASSERT_TRUE(texture_ref != NULL); 2306 ASSERT_TRUE(texture_ref != NULL);
2302 Texture* texture = texture_ref->texture(); 2307 Texture* texture = texture_ref->texture();
2303 EXPECT_EQ(kServiceTextureId, texture->service_id()); 2308 EXPECT_EQ(kServiceTextureId, texture->service_id());
2304 2309
2305 const int32 kImageId = 1; 2310 const int32 kImageId = 1;
2306 scoped_refptr<MockGLImage> image(new MockGLImage); 2311 scoped_refptr<MockGLImage> image(new MockGLImage);
2307 group().image_manager()->AddImage(image.get(), kImageId); 2312 GetImageManager()->AddImage(image.get(), kImageId);
2308 2313
2309 // Bind image to texture. 2314 // Bind image to texture.
2310 EXPECT_CALL(*image, BindTexImage(GL_TEXTURE_2D)) 2315 EXPECT_CALL(*image, BindTexImage(GL_TEXTURE_2D))
2311 .Times(1) 2316 .Times(1)
2312 .WillOnce(Return(true)) 2317 .WillOnce(Return(true))
2313 .RetiresOnSaturation(); 2318 .RetiresOnSaturation();
2314 EXPECT_CALL(*image, GetSize()) 2319 EXPECT_CALL(*image, GetSize())
2315 .Times(1) 2320 .Times(1)
2316 .WillOnce(Return(gfx::Size(1, 1))) 2321 .WillOnce(Return(gfx::Size(1, 1)))
2317 .RetiresOnSaturation(); 2322 .RetiresOnSaturation();
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
2822 // TODO(gman): CompressedTexSubImage2DImmediate 2827 // TODO(gman): CompressedTexSubImage2DImmediate
2823 2828
2824 // TODO(gman): TexImage2D 2829 // TODO(gman): TexImage2D
2825 2830
2826 // TODO(gman): TexImage2DImmediate 2831 // TODO(gman): TexImage2DImmediate
2827 2832
2828 // TODO(gman): TexSubImage2DImmediate 2833 // TODO(gman): TexSubImage2DImmediate
2829 2834
2830 } // namespace gles2 2835 } // namespace gles2
2831 } // namespace gpu 2836 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc ('k') | gpu/command_buffer/service/gpu_control_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698