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

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

Issue 289993002: Remove shm versions of immediate commands from command buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@functions-with-extension-flag
Patch Set: try to avoid compiler warning on buffer overflow and template specialization linker problem with tw… Created 6 years, 6 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/service/gles2_cmd_decoder_unittest_programs.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 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"
(...skipping 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1197 init.gl_version = "3.0"; 1197 init.gl_version = "3.0";
1198 InitDecoder(init); 1198 InitDecoder(init);
1199 1199
1200 { 1200 {
1201 BindTexture cmd1; 1201 BindTexture cmd1;
1202 cmd1.Init(GL_TEXTURE_2D, 0); 1202 cmd1.Init(GL_TEXTURE_2D, 0);
1203 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); 1203 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0));
1204 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); 1204 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1));
1205 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1205 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1206 1206
1207 TexParameterfv cmd2; 1207 GLfloat data = GL_NEAREST;
1208 TexParameterfvImmediate& cmd2 =
1209 *GetImmediateAs<TexParameterfvImmediate>();
1208 cmd2.Init(GL_TEXTURE_2D, 1210 cmd2.Init(GL_TEXTURE_2D,
1209 GL_TEXTURE_MAG_FILTER, 1211 GL_TEXTURE_MAG_FILTER,
1210 shared_memory_id_, 1212 &data);
1211 shared_memory_offset_); 1213 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd2, sizeof(data)));
1212 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST;
1213 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
1214 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1214 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1215 } 1215 }
1216 1216
1217 { 1217 {
1218 BindTexture cmd1; 1218 BindTexture cmd1;
1219 cmd1.Init(GL_TEXTURE_CUBE_MAP, 0); 1219 cmd1.Init(GL_TEXTURE_CUBE_MAP, 0);
1220 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_CUBE_MAP, 0)); 1220 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_CUBE_MAP, 0));
1221 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); 1221 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1));
1222 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1222 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1223 1223
1224 TexParameterfv cmd2; 1224 GLfloat data = GL_NEAREST;
1225 TexParameterfvImmediate& cmd2 =
1226 *GetImmediateAs<TexParameterfvImmediate>();
1225 cmd2.Init(GL_TEXTURE_CUBE_MAP, 1227 cmd2.Init(GL_TEXTURE_CUBE_MAP,
1226 GL_TEXTURE_MAG_FILTER, 1228 GL_TEXTURE_MAG_FILTER,
1227 shared_memory_id_, 1229 &data);
1228 shared_memory_offset_); 1230 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd2, sizeof(data)));
1229 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST;
1230 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
1231 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1231 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1232 } 1232 }
1233 } 1233 }
1234 1234
1235 TEST_P(GLES2DecoderManualInitTest, NoDefaultTexParameteriv) { 1235 TEST_P(GLES2DecoderManualInitTest, NoDefaultTexParameteriv) {
1236 InitState init; 1236 InitState init;
1237 init.gl_version = "3.0"; 1237 init.gl_version = "3.0";
1238 InitDecoder(init); 1238 InitDecoder(init);
1239 1239
1240 { 1240 {
1241 BindTexture cmd1; 1241 BindTexture cmd1;
1242 cmd1.Init(GL_TEXTURE_2D, 0); 1242 cmd1.Init(GL_TEXTURE_2D, 0);
1243 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); 1243 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0));
1244 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); 1244 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1));
1245 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1245 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1246 1246
1247 TexParameteriv cmd2; 1247 GLfloat data = GL_NEAREST;
1248 TexParameterfvImmediate& cmd2 =
1249 *GetImmediateAs<TexParameterfvImmediate>();
1248 cmd2.Init(GL_TEXTURE_2D, 1250 cmd2.Init(GL_TEXTURE_2D,
1249 GL_TEXTURE_MAG_FILTER, 1251 GL_TEXTURE_MAG_FILTER,
1250 shared_memory_id_, 1252 &data);
1251 shared_memory_offset_); 1253 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd2, sizeof(data)));
1252 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST;
1253 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
1254 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1254 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1255 } 1255 }
1256 1256
1257 { 1257 {
1258 BindTexture cmd1; 1258 BindTexture cmd1;
1259 cmd1.Init(GL_TEXTURE_CUBE_MAP, 0); 1259 cmd1.Init(GL_TEXTURE_CUBE_MAP, 0);
1260 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_CUBE_MAP, 0)); 1260 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_CUBE_MAP, 0));
1261 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); 1261 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1));
1262 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1262 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1263 1263
1264 TexParameteriv cmd2; 1264 GLfloat data = GL_NEAREST;
1265 TexParameterfvImmediate& cmd2 =
1266 *GetImmediateAs<TexParameterfvImmediate>();
1265 cmd2.Init(GL_TEXTURE_CUBE_MAP, 1267 cmd2.Init(GL_TEXTURE_CUBE_MAP,
1266 GL_TEXTURE_MAG_FILTER, 1268 GL_TEXTURE_MAG_FILTER,
1267 shared_memory_id_, 1269 &data);
1268 shared_memory_offset_); 1270 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd2, sizeof(data)));
1269 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST;
1270 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
1271 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1271 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1272 } 1272 }
1273 } 1273 }
1274 1274
1275 TEST_P(GLES2DecoderManualInitTest, NoDefaultTexImage2D) { 1275 TEST_P(GLES2DecoderManualInitTest, NoDefaultTexImage2D) {
1276 InitState init; 1276 InitState init;
1277 init.gl_version = "3.0"; 1277 init.gl_version = "3.0";
1278 InitDecoder(init); 1278 InitDecoder(init);
1279 1279
1280 BindTexture cmd1; 1280 BindTexture cmd1;
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after
1845 TexParameteri cmd; 1845 TexParameteri cmd;
1846 cmd.Init( 1846 cmd.Init(
1847 GL_TEXTURE_2D, GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE); 1847 GL_TEXTURE_2D, GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE);
1848 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1848 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1849 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1849 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1850 } 1850 }
1851 1851
1852 TEST_P(GLES2DecoderTest, ProduceAndConsumeTextureCHROMIUM) { 1852 TEST_P(GLES2DecoderTest, ProduceAndConsumeTextureCHROMIUM) {
1853 Mailbox mailbox = Mailbox::Generate(); 1853 Mailbox mailbox = Mailbox::Generate();
1854 1854
1855 memcpy(shared_memory_address_, mailbox.name, sizeof(mailbox.name));
1856
1857 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 1855 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
1858 DoTexImage2D( 1856 DoTexImage2D(
1859 GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); 1857 GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0);
1860 DoTexImage2D( 1858 DoTexImage2D(
1861 GL_TEXTURE_2D, 1, GL_RGBA, 2, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); 1859 GL_TEXTURE_2D, 1, GL_RGBA, 2, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0);
1862 TextureRef* texture_ref = 1860 TextureRef* texture_ref =
1863 group().texture_manager()->GetTexture(client_texture_id_); 1861 group().texture_manager()->GetTexture(client_texture_id_);
1864 ASSERT_TRUE(texture_ref != NULL); 1862 ASSERT_TRUE(texture_ref != NULL);
1865 Texture* texture = texture_ref->texture(); 1863 Texture* texture = texture_ref->texture();
1866 EXPECT_EQ(kServiceTextureId, texture->service_id()); 1864 EXPECT_EQ(kServiceTextureId, texture->service_id());
1867 1865
1868 ProduceTextureCHROMIUM produce_cmd; 1866 ProduceTextureCHROMIUMImmediate& produce_cmd =
1869 produce_cmd.Init(GL_TEXTURE_2D, kSharedMemoryId, kSharedMemoryOffset); 1867 *GetImmediateAs<ProduceTextureCHROMIUMImmediate>();
1870 EXPECT_EQ(error::kNoError, ExecuteCmd(produce_cmd)); 1868 produce_cmd.Init(GL_TEXTURE_2D, mailbox.name);
1869 EXPECT_EQ(error::kNoError,
1870 ExecuteImmediateCmd(produce_cmd, sizeof(mailbox.name)));
1871 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1871 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1872 1872
1873 // Texture didn't change. 1873 // Texture didn't change.
1874 GLsizei width; 1874 GLsizei width;
1875 GLsizei height; 1875 GLsizei height;
1876 GLenum type; 1876 GLenum type;
1877 GLenum internal_format; 1877 GLenum internal_format;
1878 1878
1879 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 1879 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
1880 EXPECT_EQ(3, width); 1880 EXPECT_EQ(3, width);
(...skipping 17 matching lines...) Expand all
1898 .WillOnce(SetArgumentPointee<1>(kNewServiceId)) 1898 .WillOnce(SetArgumentPointee<1>(kNewServiceId))
1899 .RetiresOnSaturation(); 1899 .RetiresOnSaturation();
1900 DoBindTexture(GL_TEXTURE_2D, kNewClientId, kNewServiceId); 1900 DoBindTexture(GL_TEXTURE_2D, kNewClientId, kNewServiceId);
1901 1901
1902 // Assigns and binds original service size texture ID. 1902 // Assigns and binds original service size texture ID.
1903 EXPECT_CALL(*gl_, DeleteTextures(1, _)).Times(1).RetiresOnSaturation(); 1903 EXPECT_CALL(*gl_, DeleteTextures(1, _)).Times(1).RetiresOnSaturation();
1904 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kServiceTextureId)) 1904 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kServiceTextureId))
1905 .Times(1) 1905 .Times(1)
1906 .RetiresOnSaturation(); 1906 .RetiresOnSaturation();
1907 1907
1908 memcpy(shared_memory_address_, mailbox.name, sizeof(mailbox.name)); 1908 ConsumeTextureCHROMIUMImmediate& consume_cmd =
1909 ConsumeTextureCHROMIUM consume_cmd; 1909 *GetImmediateAs<ConsumeTextureCHROMIUMImmediate>();
1910 consume_cmd.Init(GL_TEXTURE_2D, kSharedMemoryId, kSharedMemoryOffset); 1910 consume_cmd.Init(GL_TEXTURE_2D, mailbox.name);
1911 EXPECT_EQ(error::kNoError, ExecuteCmd(consume_cmd)); 1911 EXPECT_EQ(error::kNoError,
1912 ExecuteImmediateCmd(consume_cmd, sizeof(mailbox.name)));
1912 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1913 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1913 1914
1914 // Texture is redefined. 1915 // Texture is redefined.
1915 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 1916 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
1916 EXPECT_EQ(3, width); 1917 EXPECT_EQ(3, width);
1917 EXPECT_EQ(1, height); 1918 EXPECT_EQ(1, height);
1918 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format)); 1919 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &internal_format));
1919 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format); 1920 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format);
1920 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); 1921 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
1921 1922
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after
2721 // TODO(gman): CompressedTexSubImage2DImmediate 2722 // TODO(gman): CompressedTexSubImage2DImmediate
2722 2723
2723 // TODO(gman): TexImage2D 2724 // TODO(gman): TexImage2D
2724 2725
2725 // TODO(gman): TexImage2DImmediate 2726 // TODO(gman): TexImage2DImmediate
2726 2727
2727 // TODO(gman): TexSubImage2DImmediate 2728 // TODO(gman): TexSubImage2DImmediate
2728 2729
2729 } // namespace gles2 2730 } // namespace gles2
2730 } // namespace gpu 2731 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698