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_BLINK_WEBGRAPHICSCONTEXT3D_IMPL_H_ | 5 #ifndef GPU_BLINK_WEBGRAPHICSCONTEXT3D_IMPL_H_ |
6 #define GPU_BLINK_WEBGRAPHICSCONTEXT3D_IMPL_H_ | 6 #define GPU_BLINK_WEBGRAPHICSCONTEXT3D_IMPL_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 19 matching lines...) Expand all Loading... |
30 using blink::WGC3Denum; | 30 using blink::WGC3Denum; |
31 using blink::WGC3Dboolean; | 31 using blink::WGC3Dboolean; |
32 using blink::WGC3Dbitfield; | 32 using blink::WGC3Dbitfield; |
33 using blink::WGC3Dint; | 33 using blink::WGC3Dint; |
34 using blink::WGC3Dsizei; | 34 using blink::WGC3Dsizei; |
35 using blink::WGC3Duint; | 35 using blink::WGC3Duint; |
36 using blink::WGC3Dfloat; | 36 using blink::WGC3Dfloat; |
37 using blink::WGC3Dclampf; | 37 using blink::WGC3Dclampf; |
38 using blink::WGC3Dintptr; | 38 using blink::WGC3Dintptr; |
39 using blink::WGC3Dsizeiptr; | 39 using blink::WGC3Dsizeiptr; |
| 40 using blink::WGC3Duint64; |
40 | 41 |
41 namespace gpu_blink { | 42 namespace gpu_blink { |
42 | 43 |
43 class WebGraphicsContext3DErrorMessageCallback; | 44 class WebGraphicsContext3DErrorMessageCallback; |
44 | 45 |
45 class GPU_BLINK_EXPORT WebGraphicsContext3DImpl | 46 class GPU_BLINK_EXPORT WebGraphicsContext3DImpl |
46 : public NON_EXPORTED_BASE(blink::WebGraphicsContext3D) { | 47 : public NON_EXPORTED_BASE(blink::WebGraphicsContext3D) { |
47 public: | 48 public: |
48 virtual ~WebGraphicsContext3DImpl(); | 49 virtual ~WebGraphicsContext3DImpl(); |
49 | 50 |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 virtual void vertexAttribPointer(WGC3Duint index, | 365 virtual void vertexAttribPointer(WGC3Duint index, |
365 WGC3Dint size, | 366 WGC3Dint size, |
366 WGC3Denum type, | 367 WGC3Denum type, |
367 WGC3Dboolean normalized, | 368 WGC3Dboolean normalized, |
368 WGC3Dsizei stride, | 369 WGC3Dsizei stride, |
369 WGC3Dintptr offset); | 370 WGC3Dintptr offset); |
370 | 371 |
371 virtual void viewport(WGC3Dint x, WGC3Dint y, | 372 virtual void viewport(WGC3Dint x, WGC3Dint y, |
372 WGC3Dsizei width, WGC3Dsizei height); | 373 WGC3Dsizei width, WGC3Dsizei height); |
373 | 374 |
374 // Support for buffer creation and deletion | |
375 virtual void genBuffers(WGC3Dsizei count, WebGLId* ids); | |
376 virtual void genFramebuffers(WGC3Dsizei count, WebGLId* ids); | |
377 virtual void genRenderbuffers(WGC3Dsizei count, WebGLId* ids); | |
378 virtual void genTextures(WGC3Dsizei count, WebGLId* ids); | |
379 | |
380 virtual void deleteBuffers(WGC3Dsizei count, WebGLId* ids); | |
381 virtual void deleteFramebuffers(WGC3Dsizei count, WebGLId* ids); | |
382 virtual void deleteRenderbuffers(WGC3Dsizei count, WebGLId* ids); | |
383 virtual void deleteTextures(WGC3Dsizei count, WebGLId* ids); | |
384 | |
385 virtual WebGLId createBuffer(); | 375 virtual WebGLId createBuffer(); |
386 virtual WebGLId createFramebuffer(); | 376 virtual WebGLId createFramebuffer(); |
387 virtual WebGLId createRenderbuffer(); | 377 virtual WebGLId createRenderbuffer(); |
388 virtual WebGLId createTexture(); | 378 virtual WebGLId createTexture(); |
389 | 379 |
390 virtual void deleteBuffer(WebGLId); | 380 virtual void deleteBuffer(WebGLId); |
391 virtual void deleteFramebuffer(WebGLId); | 381 virtual void deleteFramebuffer(WebGLId); |
392 virtual void deleteRenderbuffer(WebGLId); | 382 virtual void deleteRenderbuffer(WebGLId); |
393 virtual void deleteTexture(WebGLId); | 383 virtual void deleteTexture(WebGLId); |
394 | 384 |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 virtual void framebufferTexture2DMultisampleEXT(WGC3Denum target, | 549 virtual void framebufferTexture2DMultisampleEXT(WGC3Denum target, |
560 WGC3Denum attachment, | 550 WGC3Denum attachment, |
561 WGC3Denum textarget, | 551 WGC3Denum textarget, |
562 WebGLId texture, | 552 WebGLId texture, |
563 WGC3Dint level, | 553 WGC3Dint level, |
564 WGC3Dsizei samples); | 554 WGC3Dsizei samples); |
565 virtual void renderbufferStorageMultisampleEXT( | 555 virtual void renderbufferStorageMultisampleEXT( |
566 WGC3Denum target, WGC3Dsizei samples, WGC3Denum internalformat, | 556 WGC3Denum target, WGC3Dsizei samples, WGC3Denum internalformat, |
567 WGC3Dsizei width, WGC3Dsizei height); | 557 WGC3Dsizei width, WGC3Dsizei height); |
568 | 558 |
| 559 // OpenGL ES 3.0 functions not represented by pre-existing extensions |
| 560 virtual void beginTransformFeedback(WGC3Denum primitiveMode); |
| 561 virtual void bindBufferBase(WGC3Denum target, WGC3Duint index, |
| 562 WGC3Duint buffer); |
| 563 virtual void bindBufferRange(WGC3Denum target, WGC3Duint index, |
| 564 WGC3Duint buffer, WGC3Dintptr offset, WGC3Dsizeiptr size); |
| 565 virtual void bindSampler(WGC3Duint unit, WebGLId sampler); |
| 566 virtual void bindTransformFeedback(WGC3Denum target, |
| 567 WebGLId transformfeedback); |
| 568 virtual void clearBufferfi(WGC3Denum buffer, WGC3Dint drawbuffer, |
| 569 WGC3Dfloat depth, WGC3Dint stencil); |
| 570 virtual void clearBufferfv(WGC3Denum buffer, WGC3Dint drawbuffer, |
| 571 const WGC3Dfloat *value); |
| 572 virtual void clearBufferiv(WGC3Denum buffer, WGC3Dint drawbuffer, |
| 573 const WGC3Dint *value); |
| 574 virtual void clearBufferuiv(WGC3Denum buffer, WGC3Dint drawbuffer, |
| 575 const WGC3Duint *value); |
| 576 //virtual WGC3Denum clientWaitSync(WebGLId sync, WGC3Dbitfield flags, |
| 577 // WGC3Duint64 timeout); |
| 578 //virtual void compressedTexImage3D(WGC3Denum target, WGC3Dint level, |
| 579 // WGC3Denum internalformat, WGC3Dsizei width, WGC3Dsizei height, |
| 580 // WGC3Dsizei depth, WGC3Dint border, WGC3Dsizei imageSize, |
| 581 // const void *data); |
| 582 //virtual void compressedTexSubImage3D(WGC3Denum target, WGC3Dint level, |
| 583 // WGC3Dint xoffset, WGC3Dint yoffset, WGC3Dint zoffset, WGC3Dsizei width, |
| 584 // WGC3Dsizei height, WGC3Dsizei depth, WGC3Denum format, |
| 585 // WGC3Dsizei imageSize, const void *data); |
| 586 virtual void copyBufferSubData(WGC3Denum readTarget, WGC3Denum writeTarget, |
| 587 WGC3Dintptr readOffset, WGC3Dintptr writeOffset, WGC3Dsizeiptr size); |
| 588 virtual void copyTexSubImage3D(WGC3Denum target, WGC3Dint level, |
| 589 WGC3Dint xoffset, WGC3Dint yoffset, WGC3Dint zoffset, WGC3Dint x, |
| 590 WGC3Dint y, WGC3Dsizei width, WGC3Dsizei height); |
| 591 virtual WebGLId createSampler(); |
| 592 virtual WebGLId createTransformFeedback(); |
| 593 virtual void deleteSampler(WebGLId sampler); |
| 594 //virtual void deleteSync(WebGLId sync); |
| 595 virtual void deleteTransformFeedback(WebGLId transformfeedback); |
| 596 virtual void endTransformFeedback(void); |
| 597 //virtual WebGLId fenceSync(WGC3Denum condition, WGC3Dbitfield flags); |
| 598 virtual void framebufferTextureLayer(WGC3Denum target, WGC3Denum attachment, |
| 599 WGC3Duint texture, WGC3Dint level, WGC3Dint layer); |
| 600 virtual void getActiveUniformBlockName(WGC3Duint program, |
| 601 WGC3Duint uniformBlockIndex, WGC3Dsizei bufSize, WGC3Dsizei *length, |
| 602 WGC3Dchar *uniformBlockName); |
| 603 virtual void getActiveUniformBlockiv(WGC3Duint program, |
| 604 WGC3Duint uniformBlockIndex, WGC3Denum pname, WGC3Dint *params); |
| 605 //virtual void getActiveUniformsiv(WGC3Duint program, WGC3Dsizei uniformCount, |
| 606 // const WGC3Duint *uniformIndices, WGC3Denum pname, WGC3Dint *params); |
| 607 virtual WGC3Dint getFragDataLocation(WGC3Duint program, |
| 608 const WGC3Dchar *name); |
| 609 virtual void getInternalformativ(WGC3Denum target, WGC3Denum internalformat, |
| 610 WGC3Denum pname, WGC3Dsizei bufSize, WGC3Dint *params); |
| 611 virtual void getSamplerParameterfv(WGC3Duint sampler, WGC3Denum pname, |
| 612 WGC3Dfloat *params); |
| 613 virtual void getSamplerParameteriv(WGC3Duint sampler, WGC3Denum pname, |
| 614 WGC3Dint *params); |
| 615 //virtual void getTransformFeedbackVarying(WGC3Duint program, WGC3Duint index, |
| 616 // WGC3Dsizei bufSize, WGC3Dsizei *length, WGC3Dsizei *size, |
| 617 // WGC3Denum *type, WGC3Dchar *name); |
| 618 virtual WGC3Duint getUniformBlockIndex(WGC3Duint program, |
| 619 const WGC3Dchar *uniformBlockName); |
| 620 //virtual void getUniformIndices(WGC3Duint program, WGC3Dsizei uniformCount, |
| 621 // const WGC3Dchar *const*uniformNames, WGC3Duint *uniformIndices); |
| 622 //virtual void getUniformuiv(WGC3Duint program, WGC3Dint location, |
| 623 // WGC3Duint *params); |
| 624 //virtual void getVertexAttribIiv(WGC3Duint index, WGC3Denum pname, |
| 625 // WGC3Dint *params); |
| 626 //virtual void getVertexAttribIuiv(WGC3Duint index, WGC3Denum pname, |
| 627 // WGC3Duint *params); |
| 628 virtual void invalidateFramebuffer(WGC3Denum target, |
| 629 WGC3Dsizei numAttachments, const WGC3Denum *attachments); |
| 630 virtual void invalidateSubFramebuffer(WGC3Denum target, |
| 631 WGC3Dsizei numAttachments, const WGC3Denum *attachments, WGC3Dint x, |
| 632 WGC3Dint y, WGC3Dsizei width, WGC3Dsizei height); |
| 633 virtual WGC3Dboolean isSampler(WebGLId sampler); |
| 634 //virtual WGC3Dboolean isSync(WebGLId sync); |
| 635 virtual WGC3Dboolean isTransformFeedback(WGC3Duint id); |
| 636 virtual void pauseTransformFeedback(void); |
| 637 //virtual void programParameteri(WGC3Duint program, WGC3Denum pname, |
| 638 // WGC3Dint value); |
| 639 virtual void readBuffer(WGC3Denum src); |
| 640 virtual void resumeTransformFeedback(void); |
| 641 virtual void samplerParameterf(WGC3Duint sampler, WGC3Denum pname, |
| 642 WGC3Dfloat param); |
| 643 virtual void samplerParameterfv(WGC3Duint sampler, WGC3Denum pname, |
| 644 const WGC3Dfloat *param); |
| 645 virtual void samplerParameteri(WGC3Duint sampler, WGC3Denum pname, |
| 646 WGC3Dint param); |
| 647 virtual void samplerParameteriv(WGC3Duint sampler, WGC3Denum pname, |
| 648 const WGC3Dint *param); |
| 649 virtual void texImage3D(WGC3Denum target, WGC3Dint level, |
| 650 WGC3Dint internalformat, WGC3Dsizei width, WGC3Dsizei height, |
| 651 WGC3Dsizei depth, WGC3Dint border, WGC3Denum format, WGC3Denum type, |
| 652 const void *pixels); |
| 653 virtual void texStorage3D(WGC3Denum target, WGC3Dsizei levels, |
| 654 WGC3Denum internalformat, WGC3Dsizei width, WGC3Dsizei height, |
| 655 WGC3Dsizei depth); |
| 656 virtual void texSubImage3D(WGC3Denum target, WGC3Dint level, WGC3Dint xoffset, |
| 657 WGC3Dint yoffset, WGC3Dint zoffset, WGC3Dsizei width, WGC3Dsizei height, |
| 658 WGC3Dsizei depth, WGC3Denum format, WGC3Denum type, const void *pixels); |
| 659 virtual void transformFeedbackVaryings(WGC3Duint program, WGC3Dsizei count, |
| 660 const WGC3Dchar *const*varyings, WGC3Denum bufferMode); |
| 661 virtual void uniform1ui(WGC3Dint location, WGC3Duint x); |
| 662 virtual void uniform1uiv(WGC3Dint location, WGC3Dsizei count, |
| 663 const WGC3Duint *value); |
| 664 virtual void uniform2ui(WGC3Dint location, WGC3Duint x, WGC3Duint y); |
| 665 virtual void uniform2uiv(WGC3Dint location, WGC3Dsizei count, |
| 666 const WGC3Duint *value); |
| 667 virtual void uniform3ui(WGC3Dint location, WGC3Duint x, WGC3Duint y, |
| 668 WGC3Duint z); |
| 669 virtual void uniform3uiv(WGC3Dint location, WGC3Dsizei count, |
| 670 const WGC3Duint *value); |
| 671 virtual void uniform4ui(WGC3Dint location, WGC3Duint x, WGC3Duint y, |
| 672 WGC3Duint z, WGC3Duint w); |
| 673 virtual void uniform4uiv(WGC3Dint location, WGC3Dsizei count, |
| 674 const WGC3Duint *value); |
| 675 virtual void uniformBlockBinding(WGC3Duint program, |
| 676 WGC3Duint uniformBlockIndex, WGC3Duint uniformBlockBinding); |
| 677 virtual void uniformMatrix2x3fv(WGC3Dint location, WGC3Dsizei count, |
| 678 WGC3Dboolean transpose, const WGC3Dfloat* value); |
| 679 virtual void uniformMatrix2x4fv(WGC3Dint location, WGC3Dsizei count, |
| 680 WGC3Dboolean transpose, const WGC3Dfloat* value); |
| 681 virtual void uniformMatrix3x2fv(WGC3Dint location, WGC3Dsizei count, |
| 682 WGC3Dboolean transpose, const WGC3Dfloat* value); |
| 683 virtual void uniformMatrix3x4fv(WGC3Dint location, WGC3Dsizei count, |
| 684 WGC3Dboolean transpose, const WGC3Dfloat* value); |
| 685 virtual void uniformMatrix4x2fv(WGC3Dint location, WGC3Dsizei count, |
| 686 WGC3Dboolean transpose, const WGC3Dfloat* value); |
| 687 virtual void uniformMatrix4x3fv(WGC3Dint location, WGC3Dsizei count, |
| 688 WGC3Dboolean transpose, const WGC3Dfloat* value); |
| 689 virtual void vertexAttribI4i(WGC3Duint index, WGC3Dint x, WGC3Dint y, |
| 690 WGC3Dint z, WGC3Dint w); |
| 691 virtual void vertexAttribI4iv(WGC3Duint index, const WGC3Dint *v); |
| 692 virtual void vertexAttribI4ui(WGC3Duint index, WGC3Duint x, WGC3Duint y, |
| 693 WGC3Duint z, WGC3Duint w); |
| 694 virtual void vertexAttribI4uiv(WGC3Duint index, const WGC3Duint *v); |
| 695 virtual void vertexAttribIPointer(WGC3Duint index, WGC3Dint size, |
| 696 WGC3Denum type, WGC3Dsizei stride, WGC3Dintptr pointer); |
| 697 //virtual void waitSync(WebGLId sync, WGC3Dbitfield flags, |
| 698 // WGC3Duint64 timeout); |
| 699 |
569 virtual GrGLInterface* createGrGLInterface(); | 700 virtual GrGLInterface* createGrGLInterface(); |
570 | 701 |
571 ::gpu::gles2::GLES2Interface* GetGLInterface() { | 702 ::gpu::gles2::GLES2Interface* GetGLInterface() { |
572 return gl_; | 703 return gl_; |
573 } | 704 } |
574 | 705 |
575 // Convert WebGL context creation attributes into command buffer / EGL size | 706 // Convert WebGL context creation attributes into command buffer / EGL size |
576 // requests. | 707 // requests. |
577 static void ConvertAttributes( | 708 static void ConvertAttributes( |
578 const blink::WebGraphicsContext3D::Attributes& attributes, | 709 const blink::WebGraphicsContext3D::Attributes& attributes, |
(...skipping 27 matching lines...) Expand all Loading... |
606 std::vector<WGC3Denum> synthetic_errors_; | 737 std::vector<WGC3Denum> synthetic_errors_; |
607 | 738 |
608 ::gpu::gles2::GLES2Interface* gl_; | 739 ::gpu::gles2::GLES2Interface* gl_; |
609 bool lose_context_when_out_of_memory_; | 740 bool lose_context_when_out_of_memory_; |
610 uint32_t flush_id_; | 741 uint32_t flush_id_; |
611 }; | 742 }; |
612 | 743 |
613 } // namespace gpu_blink | 744 } // namespace gpu_blink |
614 | 745 |
615 #endif // GPU_BLINK_WEBGRAPHICSCONTEXT3D_IMPL_H_ | 746 #endif // GPU_BLINK_WEBGRAPHICSCONTEXT3D_IMPL_H_ |
OLD | NEW |