| 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 "gpu/command_buffer/common/gles2_cmd_format.h" | 7 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
| 8 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 8 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
| 9 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" | 9 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" |
| 10 #include "gpu/command_buffer/service/cmd_buffer_engine.h" | 10 #include "gpu/command_buffer/service/cmd_buffer_engine.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 valid_uniform = accepts_apis & Program::kUniform1i; | 54 valid_uniform = accepts_apis & Program::kUniform1i; |
| 55 cmds::Uniform1i cmd; | 55 cmds::Uniform1i cmd; |
| 56 cmd.Init(1, 2); | 56 cmd.Init(1, 2); |
| 57 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 57 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 58 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 58 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 59 GetGLError()); | 59 GetGLError()); |
| 60 } | 60 } |
| 61 | 61 |
| 62 { | 62 { |
| 63 valid_uniform = accepts_apis & Program::kUniform1i; | 63 valid_uniform = accepts_apis & Program::kUniform1i; |
| 64 cmds::Uniform1iv cmd; | 64 cmds::Uniform1ivImmediate& cmd = |
| 65 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 65 *GetImmediateAs<cmds::Uniform1ivImmediate>(); |
| 66 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 66 GLint data[2][1] = {{0}}; |
| 67 cmd.Init(1, 2, &data[0][0]); |
| 68 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 67 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 69 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 68 GetGLError()); | 70 GetGLError()); |
| 69 } | 71 } |
| 70 | 72 |
| 71 { | 73 { |
| 72 valid_uniform = accepts_apis & Program::kUniform2i; | 74 valid_uniform = accepts_apis & Program::kUniform2i; |
| 73 cmds::Uniform2i cmd; | 75 cmds::Uniform2i cmd; |
| 74 cmd.Init(1, 2, 3); | 76 cmd.Init(1, 2, 3); |
| 75 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 77 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 76 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 78 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 77 GetGLError()); | 79 GetGLError()); |
| 78 } | 80 } |
| 79 | 81 |
| 80 { | 82 { |
| 81 valid_uniform = accepts_apis & Program::kUniform2i; | 83 valid_uniform = accepts_apis & Program::kUniform2i; |
| 82 cmds::Uniform2iv cmd; | 84 cmds::Uniform2ivImmediate& cmd = |
| 83 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 85 *GetImmediateAs<cmds::Uniform2ivImmediate>(); |
| 84 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 86 GLint data[2][2] = {{0}}; |
| 87 cmd.Init(1, 2, &data[0][0]); |
| 88 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 85 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 89 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 86 GetGLError()); | 90 GetGLError()); |
| 87 } | 91 } |
| 88 | 92 |
| 89 { | 93 { |
| 90 valid_uniform = accepts_apis & Program::kUniform3i; | 94 valid_uniform = accepts_apis & Program::kUniform3i; |
| 91 cmds::Uniform3i cmd; | 95 cmds::Uniform3i cmd; |
| 92 cmd.Init(1, 2, 3, 4); | 96 cmd.Init(1, 2, 3, 4); |
| 93 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 97 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 94 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 98 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 95 GetGLError()); | 99 GetGLError()); |
| 96 } | 100 } |
| 97 | 101 |
| 98 { | 102 { |
| 99 valid_uniform = accepts_apis & Program::kUniform3i; | 103 valid_uniform = accepts_apis & Program::kUniform3i; |
| 100 cmds::Uniform3iv cmd; | 104 cmds::Uniform3ivImmediate& cmd = |
| 101 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 105 *GetImmediateAs<cmds::Uniform3ivImmediate>(); |
| 102 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 106 GLint data[2][3] = {{0}}; |
| 107 cmd.Init(1, 2, &data[0][0]); |
| 108 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 103 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 109 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 104 GetGLError()); | 110 GetGLError()); |
| 105 } | 111 } |
| 106 | 112 |
| 107 { | 113 { |
| 108 valid_uniform = accepts_apis & Program::kUniform4i; | 114 valid_uniform = accepts_apis & Program::kUniform4i; |
| 109 cmds::Uniform4i cmd; | 115 cmds::Uniform4i cmd; |
| 110 cmd.Init(1, 2, 3, 4, 5); | 116 cmd.Init(1, 2, 3, 4, 5); |
| 111 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 117 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 112 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 118 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 113 GetGLError()); | 119 GetGLError()); |
| 114 } | 120 } |
| 115 | 121 |
| 116 { | 122 { |
| 117 valid_uniform = accepts_apis & Program::kUniform4i; | 123 valid_uniform = accepts_apis & Program::kUniform4i; |
| 118 cmds::Uniform4iv cmd; | 124 cmds::Uniform4ivImmediate& cmd = |
| 119 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 125 *GetImmediateAs<cmds::Uniform4ivImmediate>(); |
| 120 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 126 GLint data[2][4] = {{0}}; |
| 127 cmd.Init(1, 2, &data[0][0]); |
| 128 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 121 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 129 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 122 GetGLError()); | 130 GetGLError()); |
| 123 } | 131 } |
| 124 | 132 |
| 125 //////////////////// | 133 //////////////////// |
| 126 | 134 |
| 127 { | 135 { |
| 128 valid_uniform = accepts_apis & Program::kUniform1f; | 136 valid_uniform = accepts_apis & Program::kUniform1f; |
| 129 cmds::Uniform1f cmd; | 137 cmds::Uniform1f cmd; |
| 130 cmd.Init(1, 2); | 138 cmd.Init(1, 2); |
| 131 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 139 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 132 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 140 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 133 GetGLError()); | 141 GetGLError()); |
| 134 } | 142 } |
| 135 | 143 |
| 136 { | 144 { |
| 137 valid_uniform = accepts_apis & Program::kUniform1f; | 145 valid_uniform = accepts_apis & Program::kUniform1f; |
| 138 cmds::Uniform1fv cmd; | 146 cmds::Uniform1fvImmediate& cmd = |
| 139 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 147 *GetImmediateAs<cmds::Uniform1fvImmediate>(); |
| 140 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 148 GLfloat data[2][1] = {{0.0f}}; |
| 149 cmd.Init(1, 2, &data[0][0]); |
| 150 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 141 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 151 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 142 GetGLError()); | 152 GetGLError()); |
| 143 } | 153 } |
| 144 | 154 |
| 145 { | 155 { |
| 146 valid_uniform = accepts_apis & Program::kUniform2f; | 156 valid_uniform = accepts_apis & Program::kUniform2f; |
| 147 cmds::Uniform2f cmd; | 157 cmds::Uniform2f cmd; |
| 148 cmd.Init(1, 2, 3); | 158 cmd.Init(1, 2, 3); |
| 149 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 159 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 150 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 160 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 151 GetGLError()); | 161 GetGLError()); |
| 152 } | 162 } |
| 153 | 163 |
| 154 { | 164 { |
| 155 valid_uniform = accepts_apis & Program::kUniform2f; | 165 valid_uniform = accepts_apis & Program::kUniform2f; |
| 156 cmds::Uniform2fv cmd; | 166 cmds::Uniform2fvImmediate& cmd = |
| 157 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 167 *GetImmediateAs<cmds::Uniform2fvImmediate>(); |
| 158 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 168 GLfloat data[2][2] = {{0.0f}}; |
| 169 cmd.Init(1, 2, &data[0][0]); |
| 170 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 159 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 171 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 160 GetGLError()); | 172 GetGLError()); |
| 161 } | 173 } |
| 162 | 174 |
| 163 { | 175 { |
| 164 valid_uniform = accepts_apis & Program::kUniform3f; | 176 valid_uniform = accepts_apis & Program::kUniform3f; |
| 165 cmds::Uniform3f cmd; | 177 cmds::Uniform3f cmd; |
| 166 cmd.Init(1, 2, 3, 4); | 178 cmd.Init(1, 2, 3, 4); |
| 167 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 179 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 168 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 180 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 169 GetGLError()); | 181 GetGLError()); |
| 170 } | 182 } |
| 171 | 183 |
| 172 { | 184 { |
| 173 valid_uniform = accepts_apis & Program::kUniform3f; | 185 valid_uniform = accepts_apis & Program::kUniform3f; |
| 174 cmds::Uniform3fv cmd; | 186 cmds::Uniform3fvImmediate& cmd = |
| 175 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 187 *GetImmediateAs<cmds::Uniform3fvImmediate>(); |
| 176 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 188 GLfloat data[2][3] = {{0.0f}}; |
| 189 cmd.Init(1, 2, &data[0][0]); |
| 190 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 177 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 191 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 178 GetGLError()); | 192 GetGLError()); |
| 179 } | 193 } |
| 180 | 194 |
| 181 { | 195 { |
| 182 valid_uniform = accepts_apis & Program::kUniform4f; | 196 valid_uniform = accepts_apis & Program::kUniform4f; |
| 183 cmds::Uniform4f cmd; | 197 cmds::Uniform4f cmd; |
| 184 cmd.Init(1, 2, 3, 4, 5); | 198 cmd.Init(1, 2, 3, 4, 5); |
| 185 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 199 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 186 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 200 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 187 GetGLError()); | 201 GetGLError()); |
| 188 } | 202 } |
| 189 | 203 |
| 190 { | 204 { |
| 191 valid_uniform = accepts_apis & Program::kUniform4f; | 205 valid_uniform = accepts_apis & Program::kUniform4f; |
| 192 cmds::Uniform4fv cmd; | 206 cmds::Uniform4fvImmediate& cmd = |
| 193 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 207 *GetImmediateAs<cmds::Uniform4fvImmediate>(); |
| 194 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 208 GLfloat data[2][4] = {{0.0f}}; |
| 209 cmd.Init(1, 2, &data[0][0]); |
| 210 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 195 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 211 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 196 GetGLError()); | 212 GetGLError()); |
| 197 } | 213 } |
| 198 | 214 |
| 199 { | 215 { |
| 200 valid_uniform = accepts_apis & Program::kUniformMatrix2f; | 216 valid_uniform = accepts_apis & Program::kUniformMatrix2f; |
| 201 cmds::UniformMatrix2fv cmd; | 217 cmds::UniformMatrix2fvImmediate& cmd = |
| 202 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 218 *GetImmediateAs<cmds::UniformMatrix2fvImmediate>(); |
| 203 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 219 GLfloat data[2][2 * 2] = {{0.0f}}; |
| 220 |
| 221 cmd.Init(1, 2, &data[0][0]); |
| 222 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 204 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 223 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 205 GetGLError()); | 224 GetGLError()); |
| 206 } | 225 } |
| 207 | 226 |
| 208 { | 227 { |
| 209 valid_uniform = accepts_apis & Program::kUniformMatrix3f; | 228 valid_uniform = accepts_apis & Program::kUniformMatrix3f; |
| 210 cmds::UniformMatrix3fv cmd; | 229 cmds::UniformMatrix3fvImmediate& cmd = |
| 211 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 230 *GetImmediateAs<cmds::UniformMatrix3fvImmediate>(); |
| 212 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 231 GLfloat data[2][3 * 3] = {{0.0f}}; |
| 232 cmd.Init(1, 2, &data[0][0]); |
| 233 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 213 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 234 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 214 GetGLError()); | 235 GetGLError()); |
| 215 } | 236 } |
| 216 | 237 |
| 217 { | 238 { |
| 218 valid_uniform = accepts_apis & Program::kUniformMatrix4f; | 239 valid_uniform = accepts_apis & Program::kUniformMatrix4f; |
| 219 cmds::UniformMatrix4fv cmd; | 240 cmds::UniformMatrix4fvImmediate& cmd = |
| 220 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_); | 241 *GetImmediateAs<cmds::UniformMatrix4fvImmediate>(); |
| 221 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 242 GLfloat data[2][4 * 4] = {{0.0f}}; |
| 243 cmd.Init(1, 2, &data[0][0]); |
| 244 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(data))); |
| 222 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, | 245 EXPECT_EQ(valid_uniform ? GL_NO_ERROR : GL_INVALID_OPERATION, |
| 223 GetGLError()); | 246 GetGLError()); |
| 224 } | 247 } |
| 225 } | 248 } |
| 226 }; | 249 }; |
| 227 | 250 |
| 228 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderTest2, ::testing::Bool()); | 251 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderTest2, ::testing::Bool()); |
| 229 | 252 |
| 230 template <> | 253 template <> |
| 231 void GLES2DecoderTestBase::SpecializedSetup<cmds::GenQueriesEXT, 0>( | |
| 232 bool valid) { | |
| 233 if (!valid) { | |
| 234 // Make the client_query_id_ so that trying to make it again | |
| 235 // will fail. | |
| 236 GetSharedMemoryAs<GLuint*>()[0] = client_query_id_; | |
| 237 cmds::GenQueriesEXT cmd; | |
| 238 cmd.Init(1, shared_memory_id_, shared_memory_offset_); | |
| 239 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | |
| 240 } | |
| 241 }; | |
| 242 | |
| 243 template <> | |
| 244 void GLES2DecoderTestBase::SpecializedSetup<cmds::GenQueriesEXTImmediate, 0>( | 254 void GLES2DecoderTestBase::SpecializedSetup<cmds::GenQueriesEXTImmediate, 0>( |
| 245 bool valid) { | 255 bool valid) { |
| 246 if (!valid) { | 256 if (!valid) { |
| 247 // Make the client_query_id_ so that trying to make it again | 257 // Make the client_query_id_ so that trying to make it again |
| 248 // will fail. | 258 // will fail. |
| 249 GetSharedMemoryAs<GLuint*>()[0] = client_query_id_; | 259 cmds::GenQueriesEXTImmediate& cmd = |
| 250 cmds::GenQueriesEXT cmd; | 260 *GetImmediateAs<cmds::GenQueriesEXTImmediate>(); |
| 251 cmd.Init(1, shared_memory_id_, shared_memory_offset_); | 261 cmd.Init(1, &client_query_id_); |
| 252 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 262 EXPECT_EQ(error::kNoError, |
| 263 ExecuteImmediateCmd(cmd, sizeof(client_query_id_))); |
| 253 } | 264 } |
| 254 }; | 265 }; |
| 255 | 266 |
| 256 template <> | |
| 257 void GLES2DecoderTestBase::SpecializedSetup<cmds::DeleteQueriesEXT, 0>( | |
| 258 bool valid) { | |
| 259 if (valid) { | |
| 260 // Make the client_query_id_ so that trying to delete it will succeed. | |
| 261 GetSharedMemoryAs<GLuint*>()[0] = client_query_id_; | |
| 262 cmds::GenQueriesEXT cmd; | |
| 263 cmd.Init(1, shared_memory_id_, shared_memory_offset_); | |
| 264 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | |
| 265 } | |
| 266 }; | |
| 267 | |
| 268 template <> | 267 template <> |
| 269 void GLES2DecoderTestBase::SpecializedSetup<cmds::DeleteQueriesEXTImmediate, 0>( | 268 void GLES2DecoderTestBase::SpecializedSetup<cmds::DeleteQueriesEXTImmediate, 0>( |
| 270 bool valid) { | 269 bool valid) { |
| 271 if (valid) { | 270 if (valid) { |
| 272 // Make the client_query_id_ so that trying to delete it will succeed. | 271 // Make the client_query_id_ so that trying to delete it will succeed. |
| 273 GetSharedMemoryAs<GLuint*>()[0] = client_query_id_; | 272 cmds::GenQueriesEXTImmediate& cmd = |
| 274 cmds::GenQueriesEXT cmd; | 273 *GetImmediateAs<cmds::GenQueriesEXTImmediate>(); |
| 275 cmd.Init(1, shared_memory_id_, shared_memory_offset_); | 274 cmd.Init(1, &client_query_id_); |
| 276 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 275 EXPECT_EQ(error::kNoError, |
| 276 ExecuteImmediateCmd(cmd, sizeof(client_query_id_))); |
| 277 } | 277 } |
| 278 }; | 278 }; |
| 279 | 279 |
| 280 template <> | 280 template <> |
| 281 void GLES2DecoderTestBase::SpecializedSetup<cmds::LinkProgram, 0>( | 281 void GLES2DecoderTestBase::SpecializedSetup<cmds::LinkProgram, 0>( |
| 282 bool /* valid */) { | 282 bool /* valid */) { |
| 283 const GLuint kClientVertexShaderId = 5001; | 283 const GLuint kClientVertexShaderId = 5001; |
| 284 const GLuint kServiceVertexShaderId = 6001; | 284 const GLuint kServiceVertexShaderId = 6001; |
| 285 const GLuint kClientFragmentShaderId = 5002; | 285 const GLuint kClientFragmentShaderId = 5002; |
| 286 const GLuint kServiceFragmentShaderId = 6002; | 286 const GLuint kServiceFragmentShaderId = 6002; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 .RetiresOnSaturation(); | 363 .RetiresOnSaturation(); |
| 364 }; | 364 }; |
| 365 | 365 |
| 366 template <> | 366 template <> |
| 367 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform1f, 0>( | 367 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform1f, 0>( |
| 368 bool /* valid */) { | 368 bool /* valid */) { |
| 369 SetupShaderForUniform(GL_FLOAT); | 369 SetupShaderForUniform(GL_FLOAT); |
| 370 }; | 370 }; |
| 371 | 371 |
| 372 template <> | 372 template <> |
| 373 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform1fv, 0>( | |
| 374 bool /* valid */) { | |
| 375 SetupShaderForUniform(GL_FLOAT); | |
| 376 }; | |
| 377 | |
| 378 template <> | |
| 379 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform1fvImmediate, 0>( | 373 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform1fvImmediate, 0>( |
| 380 bool /* valid */) { | 374 bool /* valid */) { |
| 381 SetupShaderForUniform(GL_FLOAT); | 375 SetupShaderForUniform(GL_FLOAT); |
| 382 }; | 376 }; |
| 383 | 377 |
| 384 template <> | 378 template <> |
| 385 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform1iv, 0>( | |
| 386 bool /* valid */) { | |
| 387 SetupShaderForUniform(GL_INT); | |
| 388 }; | |
| 389 | |
| 390 template <> | |
| 391 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform1ivImmediate, 0>( | 379 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform1ivImmediate, 0>( |
| 392 bool /* valid */) { | 380 bool /* valid */) { |
| 393 SetupShaderForUniform(GL_INT); | 381 SetupShaderForUniform(GL_INT); |
| 394 }; | 382 }; |
| 395 | 383 |
| 396 template <> | 384 template <> |
| 397 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform2f, 0>( | 385 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform2f, 0>( |
| 398 bool /* valid */) { | 386 bool /* valid */) { |
| 399 SetupShaderForUniform(GL_FLOAT_VEC2); | 387 SetupShaderForUniform(GL_FLOAT_VEC2); |
| 400 }; | 388 }; |
| 401 | 389 |
| 402 template <> | 390 template <> |
| 403 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform2i, 0>( | 391 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform2i, 0>( |
| 404 bool /* valid */) { | 392 bool /* valid */) { |
| 405 SetupShaderForUniform(GL_INT_VEC2); | 393 SetupShaderForUniform(GL_INT_VEC2); |
| 406 }; | 394 }; |
| 407 | 395 |
| 408 template <> | 396 template <> |
| 409 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform2fv, 0>( | |
| 410 bool /* valid */) { | |
| 411 SetupShaderForUniform(GL_FLOAT_VEC2); | |
| 412 }; | |
| 413 | |
| 414 template <> | |
| 415 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform2iv, 0>( | |
| 416 bool /* valid */) { | |
| 417 SetupShaderForUniform(GL_INT_VEC2); | |
| 418 }; | |
| 419 | |
| 420 template <> | |
| 421 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform2fvImmediate, 0>( | 397 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform2fvImmediate, 0>( |
| 422 bool /* valid */) { | 398 bool /* valid */) { |
| 423 SetupShaderForUniform(GL_FLOAT_VEC2); | 399 SetupShaderForUniform(GL_FLOAT_VEC2); |
| 424 }; | 400 }; |
| 425 | 401 |
| 426 template <> | 402 template <> |
| 427 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform2ivImmediate, 0>( | 403 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform2ivImmediate, 0>( |
| 428 bool /* valid */) { | 404 bool /* valid */) { |
| 429 SetupShaderForUniform(GL_INT_VEC2); | 405 SetupShaderForUniform(GL_INT_VEC2); |
| 430 }; | 406 }; |
| 431 | 407 |
| 432 template <> | 408 template <> |
| 433 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform3f, 0>( | 409 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform3f, 0>( |
| 434 bool /* valid */) { | 410 bool /* valid */) { |
| 435 SetupShaderForUniform(GL_FLOAT_VEC3); | 411 SetupShaderForUniform(GL_FLOAT_VEC3); |
| 436 }; | 412 }; |
| 437 | 413 |
| 438 template <> | 414 template <> |
| 439 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform3i, 0>( | 415 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform3i, 0>( |
| 440 bool /* valid */) { | 416 bool /* valid */) { |
| 441 SetupShaderForUniform(GL_INT_VEC3); | 417 SetupShaderForUniform(GL_INT_VEC3); |
| 442 }; | 418 }; |
| 443 | 419 |
| 444 template <> | 420 template <> |
| 445 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform3fv, 0>( | |
| 446 bool /* valid */) { | |
| 447 SetupShaderForUniform(GL_FLOAT_VEC3); | |
| 448 }; | |
| 449 | |
| 450 template <> | |
| 451 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform3iv, 0>( | |
| 452 bool /* valid */) { | |
| 453 SetupShaderForUniform(GL_INT_VEC3); | |
| 454 }; | |
| 455 | |
| 456 template <> | |
| 457 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform3fvImmediate, 0>( | 421 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform3fvImmediate, 0>( |
| 458 bool /* valid */) { | 422 bool /* valid */) { |
| 459 SetupShaderForUniform(GL_FLOAT_VEC3); | 423 SetupShaderForUniform(GL_FLOAT_VEC3); |
| 460 }; | 424 }; |
| 461 | 425 |
| 462 template <> | 426 template <> |
| 463 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform3ivImmediate, 0>( | 427 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform3ivImmediate, 0>( |
| 464 bool /* valid */) { | 428 bool /* valid */) { |
| 465 SetupShaderForUniform(GL_INT_VEC3); | 429 SetupShaderForUniform(GL_INT_VEC3); |
| 466 }; | 430 }; |
| 467 | 431 |
| 468 template <> | 432 template <> |
| 469 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform4f, 0>( | 433 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform4f, 0>( |
| 470 bool /* valid */) { | 434 bool /* valid */) { |
| 471 SetupShaderForUniform(GL_FLOAT_VEC4); | 435 SetupShaderForUniform(GL_FLOAT_VEC4); |
| 472 }; | 436 }; |
| 473 | 437 |
| 474 template <> | 438 template <> |
| 475 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform4i, 0>( | 439 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform4i, 0>( |
| 476 bool /* valid */) { | 440 bool /* valid */) { |
| 477 SetupShaderForUniform(GL_INT_VEC4); | 441 SetupShaderForUniform(GL_INT_VEC4); |
| 478 }; | 442 }; |
| 479 | 443 |
| 480 template <> | 444 template <> |
| 481 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform4fv, 0>( | |
| 482 bool /* valid */) { | |
| 483 SetupShaderForUniform(GL_FLOAT_VEC4); | |
| 484 }; | |
| 485 | |
| 486 template <> | |
| 487 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform4iv, 0>( | |
| 488 bool /* valid */) { | |
| 489 SetupShaderForUniform(GL_INT_VEC4); | |
| 490 }; | |
| 491 | |
| 492 template <> | |
| 493 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform4fvImmediate, 0>( | 445 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform4fvImmediate, 0>( |
| 494 bool /* valid */) { | 446 bool /* valid */) { |
| 495 SetupShaderForUniform(GL_FLOAT_VEC4); | 447 SetupShaderForUniform(GL_FLOAT_VEC4); |
| 496 }; | 448 }; |
| 497 | 449 |
| 498 template <> | 450 template <> |
| 499 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform4ivImmediate, 0>( | 451 void GLES2DecoderTestBase::SpecializedSetup<cmds::Uniform4ivImmediate, 0>( |
| 500 bool /* valid */) { | 452 bool /* valid */) { |
| 501 SetupShaderForUniform(GL_INT_VEC4); | 453 SetupShaderForUniform(GL_INT_VEC4); |
| 502 }; | 454 }; |
| 503 | 455 |
| 504 template <> | 456 template <> |
| 505 void GLES2DecoderTestBase::SpecializedSetup<cmds::UniformMatrix2fv, 0>( | |
| 506 bool /* valid */) { | |
| 507 SetupShaderForUniform(GL_FLOAT_MAT2); | |
| 508 }; | |
| 509 | |
| 510 template <> | |
| 511 void GLES2DecoderTestBase::SpecializedSetup<cmds::UniformMatrix2fvImmediate, 0>( | 457 void GLES2DecoderTestBase::SpecializedSetup<cmds::UniformMatrix2fvImmediate, 0>( |
| 512 bool /* valid */) { | 458 bool /* valid */) { |
| 513 SetupShaderForUniform(GL_FLOAT_MAT2); | 459 SetupShaderForUniform(GL_FLOAT_MAT2); |
| 514 }; | 460 }; |
| 515 | 461 |
| 516 template <> | 462 template <> |
| 517 void GLES2DecoderTestBase::SpecializedSetup<cmds::UniformMatrix3fv, 0>( | |
| 518 bool /* valid */) { | |
| 519 SetupShaderForUniform(GL_FLOAT_MAT3); | |
| 520 }; | |
| 521 | |
| 522 template <> | |
| 523 void GLES2DecoderTestBase::SpecializedSetup<cmds::UniformMatrix3fvImmediate, 0>( | 463 void GLES2DecoderTestBase::SpecializedSetup<cmds::UniformMatrix3fvImmediate, 0>( |
| 524 bool /* valid */) { | 464 bool /* valid */) { |
| 525 SetupShaderForUniform(GL_FLOAT_MAT3); | 465 SetupShaderForUniform(GL_FLOAT_MAT3); |
| 526 }; | 466 }; |
| 527 | 467 |
| 528 template <> | 468 template <> |
| 529 void GLES2DecoderTestBase::SpecializedSetup<cmds::UniformMatrix4fv, 0>( | |
| 530 bool /* valid */) { | |
| 531 SetupShaderForUniform(GL_FLOAT_MAT4); | |
| 532 }; | |
| 533 | |
| 534 template <> | |
| 535 void GLES2DecoderTestBase::SpecializedSetup<cmds::UniformMatrix4fvImmediate, 0>( | 469 void GLES2DecoderTestBase::SpecializedSetup<cmds::UniformMatrix4fvImmediate, 0>( |
| 536 bool /* valid */) { | 470 bool /* valid */) { |
| 537 SetupShaderForUniform(GL_FLOAT_MAT4); | 471 SetupShaderForUniform(GL_FLOAT_MAT4); |
| 538 }; | 472 }; |
| 539 | 473 |
| 540 template <> | 474 template <> |
| 541 void GLES2DecoderTestBase::SpecializedSetup<cmds::RenderbufferStorage, 0>( | 475 void GLES2DecoderTestBase::SpecializedSetup<cmds::RenderbufferStorage, 0>( |
| 542 bool valid) { | 476 bool valid) { |
| 543 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 477 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 544 kServiceRenderbufferId); | 478 kServiceRenderbufferId); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 562 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 496 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 563 }; | 497 }; |
| 564 | 498 |
| 565 template <> | 499 template <> |
| 566 void GLES2DecoderTestBase::SpecializedSetup<cmds::TexParameteri, 0>( | 500 void GLES2DecoderTestBase::SpecializedSetup<cmds::TexParameteri, 0>( |
| 567 bool /* valid */) { | 501 bool /* valid */) { |
| 568 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 502 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 569 }; | 503 }; |
| 570 | 504 |
| 571 template <> | 505 template <> |
| 572 void GLES2DecoderTestBase::SpecializedSetup<cmds::TexParameterfv, 0>( | |
| 573 bool /* valid */) { | |
| 574 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | |
| 575 }; | |
| 576 | |
| 577 template <> | |
| 578 void GLES2DecoderTestBase::SpecializedSetup<cmds::TexParameterfvImmediate, 0>( | 506 void GLES2DecoderTestBase::SpecializedSetup<cmds::TexParameterfvImmediate, 0>( |
| 579 bool /* valid */) { | 507 bool /* valid */) { |
| 580 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 508 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 581 }; | 509 }; |
| 582 | 510 |
| 583 template <> | 511 template <> |
| 584 void GLES2DecoderTestBase::SpecializedSetup<cmds::TexParameteriv, 0>( | |
| 585 bool /* valid */) { | |
| 586 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | |
| 587 }; | |
| 588 | |
| 589 template <> | |
| 590 void GLES2DecoderTestBase::SpecializedSetup<cmds::TexParameterivImmediate, 0>( | 512 void GLES2DecoderTestBase::SpecializedSetup<cmds::TexParameterivImmediate, 0>( |
| 591 bool /* valid */) { | 513 bool /* valid */) { |
| 592 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 514 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 593 }; | 515 }; |
| 594 | 516 |
| 595 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h" | 517 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h" |
| 596 | 518 |
| 597 TEST_P(GLES2DecoderTest2, AcceptsUniform_GL_INT) { | 519 TEST_P(GLES2DecoderTest2, AcceptsUniform_GL_INT) { |
| 598 TestAcceptedUniform(GL_INT, Program::kUniform1i); | 520 TestAcceptedUniform(GL_INT, Program::kUniform1i); |
| 599 } | 521 } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 650 TestAcceptedUniform(GL_FLOAT_MAT3, Program::kUniformMatrix3f); | 572 TestAcceptedUniform(GL_FLOAT_MAT3, Program::kUniformMatrix3f); |
| 651 } | 573 } |
| 652 | 574 |
| 653 TEST_P(GLES2DecoderTest2, AcceptsUniform_GL_FLOAT_MAT4) { | 575 TEST_P(GLES2DecoderTest2, AcceptsUniform_GL_FLOAT_MAT4) { |
| 654 TestAcceptedUniform(GL_FLOAT_MAT4, Program::kUniformMatrix4f); | 576 TestAcceptedUniform(GL_FLOAT_MAT4, Program::kUniformMatrix4f); |
| 655 } | 577 } |
| 656 | 578 |
| 657 } // namespace gles2 | 579 } // namespace gles2 |
| 658 } // namespace gpu | 580 } // namespace gpu |
| 659 | 581 |
| OLD | NEW |