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 #ifndef GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_H_ | 5 #ifndef GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_H_ |
6 #define GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_H_ | 6 #define GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_H_ |
7 | 7 |
8 #include <GLES2/gl2.h> | 8 #include <GLES2/gl2.h> |
9 | 9 |
10 #include <list> | 10 #include <list> |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 public: | 130 public: |
131 enum MappedMemoryLimit { | 131 enum MappedMemoryLimit { |
132 kNoLimit = MappedMemoryManager::kNoLimit, | 132 kNoLimit = MappedMemoryManager::kNoLimit, |
133 }; | 133 }; |
134 | 134 |
135 // Stores GL state that never changes. | 135 // Stores GL state that never changes. |
136 struct GLES2_IMPL_EXPORT GLStaticState { | 136 struct GLES2_IMPL_EXPORT GLStaticState { |
137 GLStaticState(); | 137 GLStaticState(); |
138 ~GLStaticState(); | 138 ~GLStaticState(); |
139 | 139 |
140 struct GLES2_IMPL_EXPORT IntState { | |
141 IntState(); | |
142 GLint max_combined_texture_image_units; | |
143 GLint max_cube_map_texture_size; | |
144 GLint max_fragment_uniform_vectors; | |
145 GLint max_renderbuffer_size; | |
146 GLint max_texture_image_units; | |
147 GLint max_texture_size; | |
148 GLint max_varying_vectors; | |
149 GLint max_vertex_attribs; | |
150 GLint max_vertex_texture_image_units; | |
151 GLint max_vertex_uniform_vectors; | |
152 GLint num_compressed_texture_formats; | |
153 GLint num_shader_binary_formats; | |
154 GLint bind_generates_resource_chromium; | |
155 }; | |
156 IntState int_state; | |
157 | |
158 typedef std::pair<GLenum, GLenum> ShaderPrecisionKey; | 140 typedef std::pair<GLenum, GLenum> ShaderPrecisionKey; |
159 typedef std::map<ShaderPrecisionKey, | 141 typedef std::map<ShaderPrecisionKey, |
160 cmds::GetShaderPrecisionFormat::Result> | 142 cmds::GetShaderPrecisionFormat::Result> |
161 ShaderPrecisionMap; | 143 ShaderPrecisionMap; |
162 ShaderPrecisionMap shader_precisions; | 144 ShaderPrecisionMap shader_precisions; |
163 }; | 145 }; |
164 | 146 |
165 // The maxiumum result size from simple GL get commands. | 147 // The maxiumum result size from simple GL get commands. |
166 static const size_t kMaxSizeOfSimpleResult = 16 * sizeof(uint32); // NOLINT. | 148 static const size_t kMaxSizeOfSimpleResult = 16 * sizeof(uint32); // NOLINT. |
167 | 149 |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 // Gets the value of the result. | 373 // Gets the value of the result. |
392 template <typename T> | 374 template <typename T> |
393 T GetResultAs() { | 375 T GetResultAs() { |
394 return static_cast<T>(GetResultBuffer()); | 376 return static_cast<T>(GetResultBuffer()); |
395 } | 377 } |
396 | 378 |
397 void* GetResultBuffer(); | 379 void* GetResultBuffer(); |
398 int32 GetResultShmId(); | 380 int32 GetResultShmId(); |
399 uint32 GetResultShmOffset(); | 381 uint32 GetResultShmOffset(); |
400 | 382 |
401 bool QueryAndCacheStaticState(); | |
402 | |
403 // Helpers used to batch synchronous GetIntergerv calls with other | |
404 // synchronous calls. | |
405 struct GetMultipleIntegervState { | |
406 GetMultipleIntegervState(const GLenum* pnames, GLuint pnames_count, | |
407 GLint* results, GLsizeiptr results_size) | |
408 : pnames(pnames), | |
409 pnames_count(pnames_count), | |
410 results(results), | |
411 results_size(results_size) | |
412 { } | |
413 // inputs | |
414 const GLenum* pnames; | |
415 GLuint pnames_count; | |
416 // outputs | |
417 GLint* results; | |
418 GLsizeiptr results_size; | |
419 // transfer buffer | |
420 int num_results; | |
421 int transfer_buffer_size_needed; | |
422 void* buffer; | |
423 void* results_buffer; | |
424 }; | |
425 bool GetMultipleIntegervSetup( | |
426 GetMultipleIntegervState* state); | |
427 void GetMultipleIntegervRequest( | |
428 GetMultipleIntegervState* state); | |
429 void GetMultipleIntegervOnCompleted( | |
430 GetMultipleIntegervState* state); | |
431 | |
432 // Helpers used to batch synchronous GetShaderPrecision calls with other | |
433 // synchronous calls. | |
434 struct GetAllShaderPrecisionFormatsState { | |
435 GetAllShaderPrecisionFormatsState( | |
436 const GLenum (*precision_params)[2], | |
437 int precision_params_count) | |
438 : precision_params(precision_params), | |
439 precision_params_count(precision_params_count) | |
440 { } | |
441 const GLenum (*precision_params)[2]; | |
442 int precision_params_count; | |
443 int transfer_buffer_size_needed; | |
444 void* results_buffer; | |
445 }; | |
446 void GetAllShaderPrecisionFormatsSetup( | |
447 GetAllShaderPrecisionFormatsState* state); | |
448 void GetAllShaderPrecisionFormatsRequest( | |
449 GetAllShaderPrecisionFormatsState* state); | |
450 void GetAllShaderPrecisionFormatsOnCompleted( | |
451 GetAllShaderPrecisionFormatsState* state); | |
452 | |
453 // Lazily determines if GL_ANGLE_pack_reverse_row_order is available | 383 // Lazily determines if GL_ANGLE_pack_reverse_row_order is available |
454 bool IsAnglePackReverseRowOrderAvailable(); | 384 bool IsAnglePackReverseRowOrderAvailable(); |
455 bool IsChromiumFramebufferMultisampleAvailable(); | 385 bool IsChromiumFramebufferMultisampleAvailable(); |
456 | 386 |
457 bool IsExtensionAvailableHelper( | 387 bool IsExtensionAvailableHelper( |
458 const char* extension, ExtensionStatus* status); | 388 const char* extension, ExtensionStatus* status); |
459 | 389 |
460 // Gets the GLError through our wrapper. | 390 // Gets the GLError through our wrapper. |
461 GLenum GetGLError(); | 391 GLenum GetGLError(); |
462 | 392 |
(...skipping 25 matching lines...) Expand all Loading... |
488 | 418 |
489 // Gets the contents of a bucket as a string. Returns false if there is no | 419 // Gets the contents of a bucket as a string. Returns false if there is no |
490 // string available which is a separate case from the empty string. | 420 // string available which is a separate case from the empty string. |
491 bool GetBucketAsString(uint32 bucket_id, std::string* str); | 421 bool GetBucketAsString(uint32 bucket_id, std::string* str); |
492 | 422 |
493 // Sets the contents of a bucket as a string. | 423 // Sets the contents of a bucket as a string. |
494 void SetBucketAsString(uint32 bucket_id, const std::string& str); | 424 void SetBucketAsString(uint32 bucket_id, const std::string& str); |
495 | 425 |
496 // Returns true if id is reserved. | 426 // Returns true if id is reserved. |
497 bool IsBufferReservedId(GLuint id); | 427 bool IsBufferReservedId(GLuint id); |
498 bool IsFramebufferReservedId(GLuint id) { return false; } | 428 bool IsFramebufferReservedId(GLuint id) { return false; } |
499 bool IsRenderbufferReservedId(GLuint id) { return false; } | 429 bool IsRenderbufferReservedId(GLuint id) { return false; } |
500 bool IsTextureReservedId(GLuint id) { return false; } | 430 bool IsTextureReservedId(GLuint id) { return false; } |
501 bool IsVertexArrayReservedId(GLuint id) { return false; } | 431 bool IsVertexArrayReservedId(GLuint id) { return false; } |
502 bool IsProgramReservedId(GLuint id) { return false; } | 432 bool IsProgramReservedId(GLuint id) { return false; } |
| 433 bool IsValuebufferReservedId(GLuint id) { return false; } |
503 | 434 |
504 bool BindBufferHelper(GLenum target, GLuint texture); | 435 bool BindBufferHelper(GLenum target, GLuint texture); |
505 bool BindFramebufferHelper(GLenum target, GLuint texture); | 436 bool BindFramebufferHelper(GLenum target, GLuint texture); |
506 bool BindRenderbufferHelper(GLenum target, GLuint texture); | 437 bool BindRenderbufferHelper(GLenum target, GLuint texture); |
507 bool BindTextureHelper(GLenum target, GLuint texture); | 438 bool BindTextureHelper(GLenum target, GLuint texture); |
508 bool BindVertexArrayOESHelper(GLuint array); | 439 bool BindVertexArrayOESHelper(GLuint array); |
| 440 bool BindValuebufferCHROMIUMHelper(GLenum target, GLuint valuebuffer); |
509 bool UseProgramHelper(GLuint program); | 441 bool UseProgramHelper(GLuint program); |
510 | 442 |
511 void GenBuffersHelper(GLsizei n, const GLuint* buffers); | 443 void GenBuffersHelper(GLsizei n, const GLuint* buffers); |
512 void GenFramebuffersHelper(GLsizei n, const GLuint* framebuffers); | 444 void GenFramebuffersHelper(GLsizei n, const GLuint* framebuffers); |
513 void GenRenderbuffersHelper(GLsizei n, const GLuint* renderbuffers); | 445 void GenRenderbuffersHelper(GLsizei n, const GLuint* renderbuffers); |
514 void GenTexturesHelper(GLsizei n, const GLuint* textures); | 446 void GenTexturesHelper(GLsizei n, const GLuint* textures); |
515 void GenVertexArraysOESHelper(GLsizei n, const GLuint* arrays); | 447 void GenVertexArraysOESHelper(GLsizei n, const GLuint* arrays); |
516 void GenQueriesEXTHelper(GLsizei n, const GLuint* queries); | 448 void GenQueriesEXTHelper(GLsizei n, const GLuint* queries); |
| 449 void GenValuebuffersCHROMIUMHelper(GLsizei n, const GLuint* valuebuffers); |
517 | 450 |
518 void DeleteBuffersHelper(GLsizei n, const GLuint* buffers); | 451 void DeleteBuffersHelper(GLsizei n, const GLuint* buffers); |
519 void DeleteFramebuffersHelper(GLsizei n, const GLuint* framebuffers); | 452 void DeleteFramebuffersHelper(GLsizei n, const GLuint* framebuffers); |
520 void DeleteRenderbuffersHelper(GLsizei n, const GLuint* renderbuffers); | 453 void DeleteRenderbuffersHelper(GLsizei n, const GLuint* renderbuffers); |
521 void DeleteTexturesHelper(GLsizei n, const GLuint* textures); | 454 void DeleteTexturesHelper(GLsizei n, const GLuint* textures); |
522 bool DeleteProgramHelper(GLuint program); | 455 bool DeleteProgramHelper(GLuint program); |
523 bool DeleteShaderHelper(GLuint shader); | 456 bool DeleteShaderHelper(GLuint shader); |
524 void DeleteQueriesEXTHelper(GLsizei n, const GLuint* queries); | 457 void DeleteQueriesEXTHelper(GLsizei n, const GLuint* queries); |
525 void DeleteVertexArraysOESHelper(GLsizei n, const GLuint* arrays); | 458 void DeleteVertexArraysOESHelper(GLsizei n, const GLuint* arrays); |
| 459 void DeleteValuebuffersCHROMIUMHelper(GLsizei n, const GLuint* valuebuffers); |
526 | 460 |
527 void DeleteBuffersStub(GLsizei n, const GLuint* buffers); | 461 void DeleteBuffersStub(GLsizei n, const GLuint* buffers); |
528 void DeleteFramebuffersStub(GLsizei n, const GLuint* framebuffers); | 462 void DeleteFramebuffersStub(GLsizei n, const GLuint* framebuffers); |
529 void DeleteRenderbuffersStub(GLsizei n, const GLuint* renderbuffers); | 463 void DeleteRenderbuffersStub(GLsizei n, const GLuint* renderbuffers); |
530 void DeleteTexturesStub(GLsizei n, const GLuint* textures); | 464 void DeleteTexturesStub(GLsizei n, const GLuint* textures); |
531 void DeleteProgramStub(GLsizei n, const GLuint* programs); | 465 void DeleteProgramStub(GLsizei n, const GLuint* programs); |
532 void DeleteShaderStub(GLsizei n, const GLuint* shaders); | 466 void DeleteShaderStub(GLsizei n, const GLuint* shaders); |
533 void DeleteVertexArraysOESStub(GLsizei n, const GLuint* arrays); | 467 void DeleteVertexArraysOESStub(GLsizei n, const GLuint* arrays); |
| 468 void DeleteValuebuffersCHROMIUMStub(GLsizei n, const GLuint* valuebuffers); |
534 | 469 |
535 void BufferDataHelper( | 470 void BufferDataHelper( |
536 GLenum target, GLsizeiptr size, const void* data, GLenum usage); | 471 GLenum target, GLsizeiptr size, const void* data, GLenum usage); |
537 void BufferSubDataHelper( | 472 void BufferSubDataHelper( |
538 GLenum target, GLintptr offset, GLsizeiptr size, const void* data); | 473 GLenum target, GLintptr offset, GLsizeiptr size, const void* data); |
539 void BufferSubDataHelperImpl( | 474 void BufferSubDataHelperImpl( |
540 GLenum target, GLintptr offset, GLsizeiptr size, const void* data, | 475 GLenum target, GLintptr offset, GLsizeiptr size, const void* data, |
541 ScopedTransferBufferPtr* buffer); | 476 ScopedTransferBufferPtr* buffer); |
542 | 477 |
543 GLuint CreateImageCHROMIUMHelper(ClientBuffer buffer, | 478 GLuint CreateImageCHROMIUMHelper(ClientBuffer buffer, |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 bool pack_reverse_row_order_; | 627 bool pack_reverse_row_order_; |
693 | 628 |
694 scoped_ptr<TextureUnit[]> texture_units_; | 629 scoped_ptr<TextureUnit[]> texture_units_; |
695 | 630 |
696 // 0 to gl_state_.max_combined_texture_image_units. | 631 // 0 to gl_state_.max_combined_texture_image_units. |
697 GLuint active_texture_unit_; | 632 GLuint active_texture_unit_; |
698 | 633 |
699 GLuint bound_framebuffer_; | 634 GLuint bound_framebuffer_; |
700 GLuint bound_read_framebuffer_; | 635 GLuint bound_read_framebuffer_; |
701 GLuint bound_renderbuffer_; | 636 GLuint bound_renderbuffer_; |
| 637 GLuint bound_valuebuffer_; |
702 | 638 |
703 // The program in use by glUseProgram | 639 // The program in use by glUseProgram |
704 GLuint current_program_; | 640 GLuint current_program_; |
705 | 641 |
706 // The currently bound array buffer. | 642 // The currently bound array buffer. |
707 GLuint bound_array_buffer_id_; | 643 GLuint bound_array_buffer_id_; |
708 | 644 |
709 // The currently bound pixel transfer buffers. | 645 // The currently bound pixel transfer buffers. |
710 GLuint bound_pixel_pack_transfer_buffer_id_; | 646 GLuint bound_pixel_pack_transfer_buffer_id_; |
711 GLuint bound_pixel_unpack_transfer_buffer_id_; | 647 GLuint bound_pixel_unpack_transfer_buffer_id_; |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
813 | 749 |
814 inline bool GLES2Implementation::GetTexParameterivHelper( | 750 inline bool GLES2Implementation::GetTexParameterivHelper( |
815 GLenum /* target */, GLenum /* pname */, GLint* /* params */) { | 751 GLenum /* target */, GLenum /* pname */, GLint* /* params */) { |
816 return false; | 752 return false; |
817 } | 753 } |
818 | 754 |
819 } // namespace gles2 | 755 } // namespace gles2 |
820 } // namespace gpu | 756 } // namespace gpu |
821 | 757 |
822 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_H_ | 758 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_H_ |
OLD | NEW |