| OLD | NEW |
| 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2009 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 // A class to emluate GLES2 over command buffers. | 5 // A class to emluate GLES2 over command buffers. |
| 6 | 6 |
| 7 #include "gpu/command_buffer/client/gles2_implementation.h" | 7 #include "gpu/command_buffer/client/gles2_implementation.h" |
| 8 // TODO(gman): remove when all functions have been implemented. | 8 // TODO(gman): remove when all functions have been implemented. |
| 9 #include "gpu/command_buffer/client/gles2_implementation_gen.h" | 9 #include "gpu/command_buffer/client/gles2_implementation_gen.h" |
| 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
| 11 | 11 |
| 12 namespace command_buffer { | 12 namespace command_buffer { |
| 13 namespace gles2 { | 13 namespace gles2 { |
| 14 | 14 |
| 15 // A 32-bit and 64-bit compatible way of converting a pointer to a GLuint. |
| 16 static GLuint ToGLuint(const void* ptr) { |
| 17 return static_cast<GLuint>(reinterpret_cast<size_t>(ptr)); |
| 18 } |
| 19 |
| 15 GLES2Implementation::GLES2Implementation( | 20 GLES2Implementation::GLES2Implementation( |
| 16 GLES2CmdHelper* helper, | 21 GLES2CmdHelper* helper, |
| 17 size_t transfer_buffer_size, | 22 size_t transfer_buffer_size, |
| 18 void* transfer_buffer, | 23 void* transfer_buffer, |
| 19 int32 transfer_buffer_id) | 24 int32 transfer_buffer_id) |
| 20 : util_(0), // TODO(gman): Get real number of compressed texture formats. | 25 : util_(0), // TODO(gman): Get real number of compressed texture formats. |
| 21 helper_(helper), | 26 helper_(helper), |
| 22 transfer_buffer_(transfer_buffer_size, helper, transfer_buffer), | 27 transfer_buffer_(transfer_buffer_size, helper, transfer_buffer), |
| 23 transfer_buffer_id_(transfer_buffer_id), | 28 transfer_buffer_id_(transfer_buffer_id), |
| 24 pack_alignment_(4), | 29 pack_alignment_(4), |
| (...skipping 18 matching lines...) Expand all Loading... |
| 43 } | 48 } |
| 44 } | 49 } |
| 45 | 50 |
| 46 void GLES2Implementation::WaitForCmd() { | 51 void GLES2Implementation::WaitForCmd() { |
| 47 int32 token = helper_->InsertToken(); | 52 int32 token = helper_->InsertToken(); |
| 48 helper_->WaitForToken(token); | 53 helper_->WaitForToken(token); |
| 49 } | 54 } |
| 50 | 55 |
| 51 void GLES2Implementation::DrawElements( | 56 void GLES2Implementation::DrawElements( |
| 52 GLenum mode, GLsizei count, GLenum type, const void* indices) { | 57 GLenum mode, GLsizei count, GLenum type, const void* indices) { |
| 53 helper_->DrawElements(mode, count, type, reinterpret_cast<GLuint>(indices)); | 58 helper_->DrawElements(mode, count, type, ToGLuint(indices)); |
| 54 } | 59 } |
| 55 | 60 |
| 56 GLint GLES2Implementation::GetAttribLocation( | 61 GLint GLES2Implementation::GetAttribLocation( |
| 57 GLuint program, const char* name) { | 62 GLuint program, const char* name) { |
| 58 helper_->GetAttribLocationImmediate( | 63 helper_->GetAttribLocationImmediate( |
| 59 program, name, result_shm_id(), result_shm_offset()); | 64 program, name, result_shm_id(), result_shm_offset()); |
| 60 WaitForCmd(); | 65 WaitForCmd(); |
| 61 return GetResultAs<GLint>(); | 66 return GetResultAs<GLint>(); |
| 62 } | 67 } |
| 63 | 68 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 81 break; | 86 break; |
| 82 } | 87 } |
| 83 helper_->PixelStorei(pname, param); | 88 helper_->PixelStorei(pname, param); |
| 84 } | 89 } |
| 85 | 90 |
| 86 | 91 |
| 87 void GLES2Implementation::VertexAttribPointer( | 92 void GLES2Implementation::VertexAttribPointer( |
| 88 GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, | 93 GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, |
| 89 const void* ptr) { | 94 const void* ptr) { |
| 90 helper_->VertexAttribPointer(index, size, type, normalized, stride, | 95 helper_->VertexAttribPointer(index, size, type, normalized, stride, |
| 91 reinterpret_cast<GLuint>(ptr)); | 96 ToGLuint(ptr)); |
| 92 } | 97 } |
| 93 | 98 |
| 94 void GLES2Implementation::ShaderSource( | 99 void GLES2Implementation::ShaderSource( |
| 95 GLuint shader, GLsizei count, const char** source, const GLint* length) { | 100 GLuint shader, GLsizei count, const char** source, const GLint* length) { |
| 96 // TODO(gman): change to use buckets and check that there is enough room. | 101 // TODO(gman): change to use buckets and check that there is enough room. |
| 97 | 102 |
| 98 // Compute the total size. | 103 // Compute the total size. |
| 99 uint32 total_size = count * sizeof(total_size); | 104 uint32 total_size = count * sizeof(total_size); |
| 100 for (GLsizei ii = 0; ii < count; ++ii) { | 105 for (GLsizei ii = 0; ii < count; ++ii) { |
| 101 total_size += length ? length[ii] : strlen(source[ii]); | 106 total_size += length ? length[ii] : strlen(source[ii]); |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 } | 247 } |
| 243 ++yoffset; | 248 ++yoffset; |
| 244 source += padded_row_size; | 249 source += padded_row_size; |
| 245 } | 250 } |
| 246 } | 251 } |
| 247 } | 252 } |
| 248 | 253 |
| 249 | 254 |
| 250 } // namespace gles2 | 255 } // namespace gles2 |
| 251 } // namespace command_buffer | 256 } // namespace command_buffer |
| 252 | |
| 253 | |
| OLD | NEW |