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

Side by Side Diff: gpu/command_buffer/client/gles2_implementation.h

Issue 7765013: Revert 98504 - Manually merging trunk revs 95836 and 96904 to 835 branch (second attempt) (Closed) Base URL: svn://svn.chromium.org/chrome/branches/835/src/
Patch Set: Created 9 years, 3 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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <map> 10 #include <map>
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION_ASSERT(ptr && \ 68 GPU_CLIENT_VALIDATE_DESTINATION_INITALIZATION_ASSERT(ptr && \
69 (ptr[0] == static_cast<type>(0) || ptr[0] == static_cast<type>(-1))); 69 (ptr[0] == static_cast<type>(0) || ptr[0] == static_cast<type>(-1)));
70 70
71 namespace gpu { 71 namespace gpu {
72 72
73 class MappedMemoryManager; 73 class MappedMemoryManager;
74 74
75 namespace gles2 { 75 namespace gles2 {
76 76
77 class ClientSideBufferHelper; 77 class ClientSideBufferHelper;
78 class ProgramInfoManager;
79 78
80 // Base class for IdHandlers 79 // Base class for IdHandlers
81 class IdHandlerInterface { 80 class IdHandlerInterface {
82 public: 81 public:
83 IdHandlerInterface() { } 82 IdHandlerInterface() { }
84 virtual ~IdHandlerInterface() { } 83 virtual ~IdHandlerInterface() { }
85 84
86 // Makes some ids at or above id_offset. 85 // Makes some ids at or above id_offset.
87 virtual void MakeIds(GLuint id_offset, GLsizei n, GLuint* ids) = 0; 86 virtual void MakeIds(GLuint id_offset, GLsizei n, GLuint* ids) = 0;
88 87
89 // Frees some ids. 88 // Frees some ids.
90 virtual bool FreeIds(GLsizei n, const GLuint* ids) = 0; 89 virtual void FreeIds(GLsizei n, const GLuint* ids) = 0;
91 90
92 // Marks an id as used for glBind functions. id = 0 does nothing. 91 // Marks an id as used for glBind functions. id = 0 does nothing.
93 virtual bool MarkAsUsedForBind(GLuint id) = 0; 92 virtual bool MarkAsUsedForBind(GLuint id) = 0;
94 }; 93 };
95 94
96 // This class emulates GLES2 over command buffers. It can be used by a client 95 // This class emulates GLES2 over command buffers. It can be used by a client
97 // program so that the program does not need deal with shared memory and command 96 // program so that the program does not need deal with shared memory and command
98 // buffer management. See gl2_lib.h. Note that there is a performance gain to 97 // buffer management. See gl2_lib.h. Note that there is a performance gain to
99 // be had by changing your code to use command buffers directly by using the 98 // be had by changing your code to use command buffers directly by using the
100 // GLES2CmdHelper but that entails changing your code to use and deal with 99 // GLES2CmdHelper but that entails changing your code to use and deal with
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 static const GLuint kClientSideElementArrayId = 0xFEDCBA99u; 148 static const GLuint kClientSideElementArrayId = 0xFEDCBA99u;
150 149
151 // Number of swap buffers allowed before waiting. 150 // Number of swap buffers allowed before waiting.
152 static const size_t kMaxSwapBuffers = 2; 151 static const size_t kMaxSwapBuffers = 2;
153 152
154 GLES2Implementation( 153 GLES2Implementation(
155 GLES2CmdHelper* helper, 154 GLES2CmdHelper* helper,
156 size_t transfer_buffer_size, 155 size_t transfer_buffer_size,
157 void* transfer_buffer, 156 void* transfer_buffer,
158 int32 transfer_buffer_id, 157 int32 transfer_buffer_id,
159 bool share_resources, 158 bool share_resources);
160 bool bind_generates_resource = true); // Will remove in 2 CLs!
161 159
162 ~GLES2Implementation(); 160 ~GLES2Implementation();
163 161
164 // The GLES2CmdHelper being used by this GLES2Implementation. You can use 162 // The GLES2CmdHelper being used by this GLES2Implementation. You can use
165 // this to issue cmds at a lower level for certain kinds of optimization. 163 // this to issue cmds at a lower level for certain kinds of optimization.
166 GLES2CmdHelper* helper() const { 164 GLES2CmdHelper* helper() const {
167 return helper_; 165 return helper_;
168 } 166 }
169 167
170 // Include the auto-generated part of this class. We split this because 168 // Include the auto-generated part of this class. We split this because
171 // it means we can easily edit the non-auto generated parts right here in 169 // it means we can easily edit the non-auto generated parts right here in
172 // this file instead of having to edit some template or the code generator. 170 // this file instead of having to edit some template or the code generator.
173 #include "../client/gles2_implementation_autogen.h" 171 #include "../client/gles2_implementation_autogen.h"
174 172
175 void DisableVertexAttribArray(GLuint index); 173 void DisableVertexAttribArray(GLuint index);
176 void EnableVertexAttribArray(GLuint index); 174 void EnableVertexAttribArray(GLuint index);
177 void GetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params); 175 void GetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params);
178 void GetVertexAttribiv(GLuint index, GLenum pname, GLint* params); 176 void GetVertexAttribiv(GLuint index, GLenum pname, GLint* params);
179 177
180 void GetProgramInfoCHROMIUMHelper(GLuint program, std::vector<int8>* result);
181 GLint GetAttribLocationHelper(GLuint program, const char* name);
182 GLint GetUniformLocationHelper(GLuint program, const char* name);
183 bool GetActiveAttribHelper(
184 GLuint program, GLuint index, GLsizei bufsize, GLsizei* length,
185 GLint* size, GLenum* type, char* name);
186 bool GetActiveUniformHelper(
187 GLuint program, GLuint index, GLsizei bufsize, GLsizei* length,
188 GLint* size, GLenum* type, char* name);
189
190 GLuint MakeTextureId() { 178 GLuint MakeTextureId() {
191 GLuint id; 179 GLuint id;
192 texture_id_handler_->MakeIds(0, 1, &id); 180 texture_id_handler_->MakeIds(0, 1, &id);
193 return id; 181 return id;
194 } 182 }
195 183
196 void FreeTextureId(GLuint id) { 184 void FreeTextureId(GLuint id) {
197 texture_id_handler_->FreeIds(1, &id); 185 texture_id_handler_->FreeIds(1, &id);
198 } 186 }
199 187
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 364
377 void BindBufferHelper(GLenum target, GLuint texture); 365 void BindBufferHelper(GLenum target, GLuint texture);
378 void BindFramebufferHelper(GLenum target, GLuint texture); 366 void BindFramebufferHelper(GLenum target, GLuint texture);
379 void BindRenderbufferHelper(GLenum target, GLuint texture); 367 void BindRenderbufferHelper(GLenum target, GLuint texture);
380 void BindTextureHelper(GLenum target, GLuint texture); 368 void BindTextureHelper(GLenum target, GLuint texture);
381 369
382 void DeleteBuffersHelper(GLsizei n, const GLuint* buffers); 370 void DeleteBuffersHelper(GLsizei n, const GLuint* buffers);
383 void DeleteFramebuffersHelper(GLsizei n, const GLuint* framebuffers); 371 void DeleteFramebuffersHelper(GLsizei n, const GLuint* framebuffers);
384 void DeleteRenderbuffersHelper(GLsizei n, const GLuint* renderbuffers); 372 void DeleteRenderbuffersHelper(GLsizei n, const GLuint* renderbuffers);
385 void DeleteTexturesHelper(GLsizei n, const GLuint* textures); 373 void DeleteTexturesHelper(GLsizei n, const GLuint* textures);
386 bool DeleteProgramHelper(GLuint program);
387 bool DeleteShaderHelper(GLuint shader);
388 374
389 // Helper for GetVertexAttrib 375 // Helper for GetVertexAttrib
390 bool GetVertexAttribHelper(GLuint index, GLenum pname, uint32* param); 376 bool GetVertexAttribHelper(GLuint index, GLenum pname, uint32* param);
391 377
392 // Asks the service for the max index in an element array buffer. 378 // Asks the service for the max index in an element array buffer.
393 GLsizei GetMaxIndexInElementArrayBuffer( 379 GLsizei GetMaxIndexInElementArrayBuffer(
394 GLuint buffer_id, GLsizei count, GLenum type, GLuint offset); 380 GLuint buffer_id, GLsizei count, GLenum type, GLuint offset);
395 381
396 bool CopyRectToBufferFlipped( 382 bool CopyRectToBufferFlipped(
397 const void* pixels, GLsizei width, GLsizei height, GLenum format, 383 const void* pixels, GLsizei width, GLsizei height, GLenum format,
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 455
470 // Current GL error bits. 456 // Current GL error bits.
471 uint32 error_bits_; 457 uint32 error_bits_;
472 458
473 // Whether or not to print debugging info. 459 // Whether or not to print debugging info.
474 bool debug_; 460 bool debug_;
475 461
476 // Whether or not this context is sharing resources. 462 // Whether or not this context is sharing resources.
477 bool sharing_resources_; 463 bool sharing_resources_;
478 464
479 bool bind_generates_resource_;
480
481 // Map of GLenum to Strings for glGetString. We need to cache these because 465 // Map of GLenum to Strings for glGetString. We need to cache these because
482 // the pointer passed back to the client has to remain valid for eternity. 466 // the pointer passed back to the client has to remain valid for eternity.
483 typedef std::map<uint32, std::set<std::string> > GLStringMap; 467 typedef std::map<uint32, std::set<std::string> > GLStringMap;
484 GLStringMap gl_strings_; 468 GLStringMap gl_strings_;
485 469
486 // Similar cache for glGetRequestableExtensionsCHROMIUM. We don't 470 // Similar cache for glGetRequestableExtensionsCHROMIUM. We don't
487 // have an enum for this so handle it separately. 471 // have an enum for this so handle it separately.
488 std::set<std::string> requestable_extensions_set_; 472 std::set<std::string> requestable_extensions_set_;
489 473
490 typedef std::map<const void*, MappedBuffer> MappedBufferMap; 474 typedef std::map<const void*, MappedBuffer> MappedBufferMap;
491 MappedBufferMap mapped_buffers_; 475 MappedBufferMap mapped_buffers_;
492 476
493 typedef std::map<const void*, MappedTexture> MappedTextureMap; 477 typedef std::map<const void*, MappedTexture> MappedTextureMap;
494 MappedTextureMap mapped_textures_; 478 MappedTextureMap mapped_textures_;
495 479
496 scoped_ptr<MappedMemoryManager> mapped_memory_; 480 scoped_ptr<MappedMemoryManager> mapped_memory_;
497 481
498 scoped_ptr<ProgramInfoManager> program_info_manager_;
499
500 DISALLOW_COPY_AND_ASSIGN(GLES2Implementation); 482 DISALLOW_COPY_AND_ASSIGN(GLES2Implementation);
501 }; 483 };
502 484
503 inline bool GLES2Implementation::GetBufferParameterivHelper( 485 inline bool GLES2Implementation::GetBufferParameterivHelper(
504 GLenum /* target */, GLenum /* pname */, GLint* /* params */) { 486 GLenum /* target */, GLenum /* pname */, GLint* /* params */) {
505 return false; 487 return false;
506 } 488 }
507 489
508 inline bool GLES2Implementation::GetFramebufferAttachmentParameterivHelper( 490 inline bool GLES2Implementation::GetFramebufferAttachmentParameterivHelper(
509 GLenum /* target */, 491 GLenum /* target */,
510 GLenum /* attachment */, 492 GLenum /* attachment */,
511 GLenum /* pname */, 493 GLenum /* pname */,
512 GLint* /* params */) { 494 GLint* /* params */) {
513 return false; 495 return false;
514 } 496 }
515 497
498 inline bool GLES2Implementation::GetProgramivHelper(
499 GLuint /* program */, GLenum /* pname */, GLint* /* params */) {
500 return false;
501 }
502
516 inline bool GLES2Implementation::GetRenderbufferParameterivHelper( 503 inline bool GLES2Implementation::GetRenderbufferParameterivHelper(
517 GLenum /* target */, GLenum /* pname */, GLint* /* params */) { 504 GLenum /* target */, GLenum /* pname */, GLint* /* params */) {
518 return false; 505 return false;
519 } 506 }
520 507
521 inline bool GLES2Implementation::GetShaderivHelper( 508 inline bool GLES2Implementation::GetShaderivHelper(
522 GLuint /* shader */, GLenum /* pname */, GLint* /* params */) { 509 GLuint /* shader */, GLenum /* pname */, GLint* /* params */) {
523 return false; 510 return false;
524 } 511 }
525 512
526 inline bool GLES2Implementation::GetTexParameterfvHelper( 513 inline bool GLES2Implementation::GetTexParameterfvHelper(
527 GLenum /* target */, GLenum /* pname */, GLfloat* /* params */) { 514 GLenum /* target */, GLenum /* pname */, GLfloat* /* params */) {
528 return false; 515 return false;
529 } 516 }
530 517
531 inline bool GLES2Implementation::GetTexParameterivHelper( 518 inline bool GLES2Implementation::GetTexParameterivHelper(
532 GLenum /* target */, GLenum /* pname */, GLint* /* params */) { 519 GLenum /* target */, GLenum /* pname */, GLint* /* params */) {
533 return false; 520 return false;
534 } 521 }
535 522
536 } // namespace gles2 523 } // namespace gles2
537 } // namespace gpu 524 } // namespace gpu
538 525
539 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_H_ 526 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/gles2_demo.cc ('k') | gpu/command_buffer/client/gles2_implementation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698