OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #include "gl/GrGLInterface.h" | 10 #include "gl/GrGLInterface.h" |
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 GrBufferObj, | 615 GrBufferObj, |
616 GrDebugGL::kBuffer_ObjTypes); | 616 GrDebugGL::kBuffer_ObjTypes); |
617 GrAlwaysAssert(buffer); | 617 GrAlwaysAssert(buffer); |
618 | 618 |
619 GrAlwaysAssert(!buffer->getDeleted()); | 619 GrAlwaysAssert(!buffer->getDeleted()); |
620 buffer->deleteAction(); | 620 buffer->deleteAction(); |
621 } | 621 } |
622 } | 622 } |
623 | 623 |
624 // map a buffer to the caller's address space | 624 // map a buffer to the caller's address space |
625 GrGLvoid* GR_GL_FUNCTION_TYPE debugGLMapBufferRange(GrGLenum target, GrGLintptr
offset, | 625 GrGLvoid* GR_GL_FUNCTION_TYPE debugGLMapBuffer(GrGLenum target, GrGLenum access)
{ |
626 GrGLsizeiptr length, GrGLbit
field access) { | 626 |
627 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || | 627 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || |
628 GR_GL_ELEMENT_ARRAY_BUFFER == target); | 628 GR_GL_ELEMENT_ARRAY_BUFFER == target); |
629 | 629 // GR_GL_READ_ONLY == access || || GR_GL_READ_WRIT == access); |
630 // We only expect read access and we expect that the buffer or range is alwa
ys invalidated. | 630 GrAlwaysAssert(GR_GL_WRITE_ONLY == access); |
631 GrAlwaysAssert(!SkToBool(GR_GL_MAP_READ_BIT & access)); | |
632 GrAlwaysAssert((GR_GL_MAP_INVALIDATE_BUFFER_BIT | GR_GL_MAP_INVALIDATE_RANGE
_BIT) & access); | |
633 | 631 |
634 GrBufferObj *buffer = NULL; | 632 GrBufferObj *buffer = NULL; |
635 switch (target) { | 633 switch (target) { |
636 case GR_GL_ARRAY_BUFFER: | 634 case GR_GL_ARRAY_BUFFER: |
637 buffer = GrDebugGL::getInstance()->getArrayBuffer(); | 635 buffer = GrDebugGL::getInstance()->getArrayBuffer(); |
638 break; | 636 break; |
639 case GR_GL_ELEMENT_ARRAY_BUFFER: | 637 case GR_GL_ELEMENT_ARRAY_BUFFER: |
640 buffer = GrDebugGL::getInstance()->getElementArrayBuffer(); | 638 buffer = GrDebugGL::getInstance()->getElementArrayBuffer(); |
641 break; | 639 break; |
642 default: | 640 default: |
643 SkFAIL("Unexpected target to glMapBufferRange"); | 641 SkFAIL("Unexpected target to glMapBuffer"); |
644 break; | 642 break; |
645 } | 643 } |
646 | 644 |
647 if (NULL != buffer) { | 645 if (buffer) { |
648 GrAlwaysAssert(offset >= 0 && offset + length <= buffer->getSize()); | |
649 GrAlwaysAssert(!buffer->getMapped()); | 646 GrAlwaysAssert(!buffer->getMapped()); |
650 buffer->setMapped(offset, length); | 647 buffer->setMapped(); |
651 return buffer->getDataPtr() + offset; | 648 return buffer->getDataPtr(); |
652 } | 649 } |
653 | 650 |
654 GrAlwaysAssert(false); | 651 GrAlwaysAssert(false); |
655 return NULL; // no buffer bound to the target | 652 return NULL; // no buffer bound to the target |
656 } | 653 } |
657 | 654 |
658 GrGLvoid* GR_GL_FUNCTION_TYPE debugGLMapBuffer(GrGLenum target, GrGLenum access)
{ | 655 // remove a buffer from the caller's address space |
659 GrAlwaysAssert(GR_GL_WRITE_ONLY == access); | 656 // TODO: check if the "access" method from "glMapBuffer" was honored |
| 657 GrGLboolean GR_GL_FUNCTION_TYPE debugGLUnmapBuffer(GrGLenum target) { |
| 658 |
| 659 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || |
| 660 GR_GL_ELEMENT_ARRAY_BUFFER == target); |
660 | 661 |
661 GrBufferObj *buffer = NULL; | 662 GrBufferObj *buffer = NULL; |
662 switch (target) { | 663 switch (target) { |
663 case GR_GL_ARRAY_BUFFER: | 664 case GR_GL_ARRAY_BUFFER: |
664 buffer = GrDebugGL::getInstance()->getArrayBuffer(); | 665 buffer = GrDebugGL::getInstance()->getArrayBuffer(); |
665 break; | 666 break; |
666 case GR_GL_ELEMENT_ARRAY_BUFFER: | 667 case GR_GL_ELEMENT_ARRAY_BUFFER: |
667 buffer = GrDebugGL::getInstance()->getElementArrayBuffer(); | 668 buffer = GrDebugGL::getInstance()->getElementArrayBuffer(); |
668 break; | 669 break; |
669 default: | 670 default: |
670 SkFAIL("Unexpected target to glMapBuffer"); | 671 SkFAIL("Unexpected target to glUnmapBuffer"); |
671 break; | 672 break; |
672 } | 673 } |
673 | 674 |
674 return debugGLMapBufferRange(target, 0, buffer->getSize(), | 675 if (buffer) { |
675 GR_GL_MAP_WRITE_BIT | GR_GL_MAP_INVALIDATE_BUFF
ER_BIT); | 676 GrAlwaysAssert(buffer->getMapped()); |
| 677 buffer->resetMapped(); |
| 678 return GR_GL_TRUE; |
| 679 } |
| 680 |
| 681 GrAlwaysAssert(false); |
| 682 return GR_GL_FALSE; // GR_GL_INVALID_OPERATION; |
676 } | 683 } |
677 | 684 |
678 // remove a buffer from the caller's address space | 685 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGetBufferParameteriv(GrGLenum target, |
679 // TODO: check if the "access" method from "glMapBuffer" was honored | 686 GrGLenum value, |
680 GrGLboolean GR_GL_FUNCTION_TYPE debugGLUnmapBuffer(GrGLenum target) { | 687 GrGLint* params) { |
681 | 688 |
682 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || | 689 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || |
683 GR_GL_ELEMENT_ARRAY_BUFFER == target); | 690 GR_GL_ELEMENT_ARRAY_BUFFER == target); |
| 691 GrAlwaysAssert(GR_GL_BUFFER_SIZE == value || |
| 692 GR_GL_BUFFER_USAGE == value); |
684 | 693 |
685 GrBufferObj *buffer = NULL; | 694 GrBufferObj *buffer = NULL; |
686 switch (target) { | 695 switch (target) { |
687 case GR_GL_ARRAY_BUFFER: | 696 case GR_GL_ARRAY_BUFFER: |
688 buffer = GrDebugGL::getInstance()->getArrayBuffer(); | 697 buffer = GrDebugGL::getInstance()->getArrayBuffer(); |
689 break; | 698 break; |
690 case GR_GL_ELEMENT_ARRAY_BUFFER: | 699 case GR_GL_ELEMENT_ARRAY_BUFFER: |
691 buffer = GrDebugGL::getInstance()->getElementArrayBuffer(); | 700 buffer = GrDebugGL::getInstance()->getElementArrayBuffer(); |
692 break; | 701 break; |
693 default: | |
694 SkFAIL("Unexpected target to glUnmapBuffer"); | |
695 break; | |
696 } | |
697 | |
698 if (NULL != buffer) { | |
699 GrAlwaysAssert(buffer->getMapped()); | |
700 buffer->resetMapped(); | |
701 return GR_GL_TRUE; | |
702 } | |
703 | |
704 GrAlwaysAssert(false); | |
705 return GR_GL_FALSE; // GR_GL_INVALID_OPERATION; | |
706 } | |
707 | |
708 GrGLvoid GR_GL_FUNCTION_TYPE debugGLFlushMappedBufferRange(GrGLenum target, | |
709 GrGLintptr offset, | |
710 GrGLsizeiptr length)
{ | |
711 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || | |
712 GR_GL_ELEMENT_ARRAY_BUFFER == target); | |
713 | |
714 GrBufferObj *buffer = NULL; | |
715 switch (target) { | |
716 case GR_GL_ARRAY_BUFFER: | |
717 buffer = GrDebugGL::getInstance()->getArrayBuffer(); | |
718 break; | |
719 case GR_GL_ELEMENT_ARRAY_BUFFER: | |
720 buffer = GrDebugGL::getInstance()->getElementArrayBuffer(); | |
721 break; | |
722 default: | |
723 SkFAIL("Unexpected target to glUnmapBuffer"); | |
724 break; | |
725 } | |
726 | |
727 if (NULL != buffer) { | |
728 GrAlwaysAssert(buffer->getMapped()); | |
729 GrAlwaysAssert(offset >= 0 && (offset + length) <= buffer->getMappedLeng
th()); | |
730 } else { | |
731 GrAlwaysAssert(false); | |
732 } | |
733 } | |
734 | |
735 | |
736 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGetBufferParameteriv(GrGLenum target, | |
737 GrGLenum value, | |
738 GrGLint* params) { | |
739 | |
740 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || | |
741 GR_GL_ELEMENT_ARRAY_BUFFER == target); | |
742 GrAlwaysAssert(GR_GL_BUFFER_SIZE == value || | |
743 GR_GL_BUFFER_USAGE == value); | |
744 | |
745 GrBufferObj *buffer = NULL; | |
746 switch (target) { | |
747 case GR_GL_ARRAY_BUFFER: | |
748 buffer = GrDebugGL::getInstance()->getArrayBuffer(); | |
749 break; | |
750 case GR_GL_ELEMENT_ARRAY_BUFFER: | |
751 buffer = GrDebugGL::getInstance()->getElementArrayBuffer(); | |
752 break; | |
753 } | 702 } |
754 | 703 |
755 GrAlwaysAssert(buffer); | 704 GrAlwaysAssert(buffer); |
756 | 705 |
757 switch (value) { | 706 switch (value) { |
758 case GR_GL_BUFFER_MAPPED: | 707 case GR_GL_BUFFER_MAPPED: |
759 *params = GR_GL_FALSE; | 708 *params = GR_GL_FALSE; |
760 if (NULL != buffer) | 709 if (buffer) |
761 *params = buffer->getMapped() ? GR_GL_TRUE : GR_GL_FALSE; | 710 *params = buffer->getMapped() ? GR_GL_TRUE : GR_GL_FALSE; |
762 break; | 711 break; |
763 case GR_GL_BUFFER_SIZE: | 712 case GR_GL_BUFFER_SIZE: |
764 *params = 0; | 713 *params = 0; |
765 if (NULL != buffer) | 714 if (buffer) |
766 *params = SkToInt(buffer->getSize()); | 715 *params = SkToInt(buffer->getSize()); |
767 break; | 716 break; |
768 case GR_GL_BUFFER_USAGE: | 717 case GR_GL_BUFFER_USAGE: |
769 *params = GR_GL_STATIC_DRAW; | 718 *params = GR_GL_STATIC_DRAW; |
770 if (NULL != buffer) | 719 if (buffer) |
771 *params = buffer->getUsage(); | 720 *params = buffer->getUsage(); |
772 break; | 721 break; |
773 default: | 722 default: |
774 SkFAIL("Unexpected value to glGetBufferParamateriv"); | 723 SkFAIL("Unexpected value to glGetBufferParamateriv"); |
775 break; | 724 break; |
776 } | 725 } |
777 }; | 726 }; |
778 } // end of namespace | 727 } // end of namespace |
779 | 728 |
780 //////////////////////////////////////////////////////////////////////////////// | 729 //////////////////////////////////////////////////////////////////////////////// |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
870 functions->fDisableVertexAttribArray = noOpGLDisableVertexAttribArray; | 819 functions->fDisableVertexAttribArray = noOpGLDisableVertexAttribArray; |
871 functions->fDrawArrays = noOpGLDrawArrays; | 820 functions->fDrawArrays = noOpGLDrawArrays; |
872 functions->fDrawBuffer = noOpGLDrawBuffer; | 821 functions->fDrawBuffer = noOpGLDrawBuffer; |
873 functions->fDrawBuffers = noOpGLDrawBuffers; | 822 functions->fDrawBuffers = noOpGLDrawBuffers; |
874 functions->fDrawElements = noOpGLDrawElements; | 823 functions->fDrawElements = noOpGLDrawElements; |
875 functions->fEnable = noOpGLEnable; | 824 functions->fEnable = noOpGLEnable; |
876 functions->fEnableVertexAttribArray = noOpGLEnableVertexAttribArray; | 825 functions->fEnableVertexAttribArray = noOpGLEnableVertexAttribArray; |
877 functions->fEndQuery = noOpGLEndQuery; | 826 functions->fEndQuery = noOpGLEndQuery; |
878 functions->fFinish = noOpGLFinish; | 827 functions->fFinish = noOpGLFinish; |
879 functions->fFlush = noOpGLFlush; | 828 functions->fFlush = noOpGLFlush; |
880 functions->fFlushMappedBufferRange = debugGLFlushMappedBufferRange; | |
881 functions->fFrontFace = noOpGLFrontFace; | 829 functions->fFrontFace = noOpGLFrontFace; |
882 functions->fGenerateMipmap = debugGLGenerateMipmap; | 830 functions->fGenerateMipmap = debugGLGenerateMipmap; |
883 functions->fGenBuffers = debugGLGenBuffers; | 831 functions->fGenBuffers = debugGLGenBuffers; |
884 functions->fGenQueries = noOpGLGenIds; | 832 functions->fGenQueries = noOpGLGenIds; |
885 functions->fGenTextures = debugGLGenTextures; | 833 functions->fGenTextures = debugGLGenTextures; |
886 functions->fGetBufferParameteriv = debugGLGetBufferParameteriv; | 834 functions->fGetBufferParameteriv = debugGLGetBufferParameteriv; |
887 functions->fGetError = noOpGLGetError; | 835 functions->fGetError = noOpGLGetError; |
888 functions->fGetIntegerv = noOpGLGetIntegerv; | 836 functions->fGetIntegerv = noOpGLGetIntegerv; |
889 functions->fGetQueryObjecti64v = noOpGLGetQueryObjecti64v; | 837 functions->fGetQueryObjecti64v = noOpGLGetQueryObjecti64v; |
890 functions->fGetQueryObjectiv = noOpGLGetQueryObjectiv; | 838 functions->fGetQueryObjectiv = noOpGLGetQueryObjectiv; |
891 functions->fGetQueryObjectui64v = noOpGLGetQueryObjectui64v; | 839 functions->fGetQueryObjectui64v = noOpGLGetQueryObjectui64v; |
892 functions->fGetQueryObjectuiv = noOpGLGetQueryObjectuiv; | 840 functions->fGetQueryObjectuiv = noOpGLGetQueryObjectuiv; |
893 functions->fGetQueryiv = noOpGLGetQueryiv; | 841 functions->fGetQueryiv = noOpGLGetQueryiv; |
894 functions->fGetProgramInfoLog = noOpGLGetInfoLog; | 842 functions->fGetProgramInfoLog = noOpGLGetInfoLog; |
895 functions->fGetProgramiv = noOpGLGetShaderOrProgramiv; | 843 functions->fGetProgramiv = noOpGLGetShaderOrProgramiv; |
896 functions->fGetShaderInfoLog = noOpGLGetInfoLog; | 844 functions->fGetShaderInfoLog = noOpGLGetInfoLog; |
897 functions->fGetShaderiv = noOpGLGetShaderOrProgramiv; | 845 functions->fGetShaderiv = noOpGLGetShaderOrProgramiv; |
898 functions->fGetString = noOpGLGetString; | 846 functions->fGetString = noOpGLGetString; |
899 functions->fGetStringi = noOpGLGetStringi; | 847 functions->fGetStringi = noOpGLGetStringi; |
900 functions->fGetTexLevelParameteriv = noOpGLGetTexLevelParameteriv; | 848 functions->fGetTexLevelParameteriv = noOpGLGetTexLevelParameteriv; |
901 functions->fGetUniformLocation = noOpGLGetUniformLocation; | 849 functions->fGetUniformLocation = noOpGLGetUniformLocation; |
902 functions->fGenVertexArrays = debugGLGenVertexArrays; | 850 functions->fGenVertexArrays = debugGLGenVertexArrays; |
903 functions->fLineWidth = noOpGLLineWidth; | 851 functions->fLineWidth = noOpGLLineWidth; |
904 functions->fLinkProgram = noOpGLLinkProgram; | 852 functions->fLinkProgram = noOpGLLinkProgram; |
905 functions->fMapBuffer = debugGLMapBuffer; | |
906 functions->fMapBufferRange = debugGLMapBufferRange; | |
907 functions->fPixelStorei = debugGLPixelStorei; | 853 functions->fPixelStorei = debugGLPixelStorei; |
908 functions->fQueryCounter = noOpGLQueryCounter; | 854 functions->fQueryCounter = noOpGLQueryCounter; |
909 functions->fReadBuffer = noOpGLReadBuffer; | 855 functions->fReadBuffer = noOpGLReadBuffer; |
910 functions->fReadPixels = debugGLReadPixels; | 856 functions->fReadPixels = debugGLReadPixels; |
911 functions->fScissor = noOpGLScissor; | 857 functions->fScissor = noOpGLScissor; |
912 functions->fShaderSource = noOpGLShaderSource; | 858 functions->fShaderSource = noOpGLShaderSource; |
913 functions->fStencilFunc = noOpGLStencilFunc; | 859 functions->fStencilFunc = noOpGLStencilFunc; |
914 functions->fStencilFuncSeparate = noOpGLStencilFuncSeparate; | 860 functions->fStencilFuncSeparate = noOpGLStencilFuncSeparate; |
915 functions->fStencilMask = noOpGLStencilMask; | 861 functions->fStencilMask = noOpGLStencilMask; |
916 functions->fStencilMaskSeparate = noOpGLStencilMaskSeparate; | 862 functions->fStencilMaskSeparate = noOpGLStencilMaskSeparate; |
(...skipping 17 matching lines...) Expand all Loading... |
934 functions->fUniform3i = noOpGLUniform3i; | 880 functions->fUniform3i = noOpGLUniform3i; |
935 functions->fUniform3fv = noOpGLUniform3fv; | 881 functions->fUniform3fv = noOpGLUniform3fv; |
936 functions->fUniform3iv = noOpGLUniform3iv; | 882 functions->fUniform3iv = noOpGLUniform3iv; |
937 functions->fUniform4f = noOpGLUniform4f; | 883 functions->fUniform4f = noOpGLUniform4f; |
938 functions->fUniform4i = noOpGLUniform4i; | 884 functions->fUniform4i = noOpGLUniform4i; |
939 functions->fUniform4fv = noOpGLUniform4fv; | 885 functions->fUniform4fv = noOpGLUniform4fv; |
940 functions->fUniform4iv = noOpGLUniform4iv; | 886 functions->fUniform4iv = noOpGLUniform4iv; |
941 functions->fUniformMatrix2fv = noOpGLUniformMatrix2fv; | 887 functions->fUniformMatrix2fv = noOpGLUniformMatrix2fv; |
942 functions->fUniformMatrix3fv = noOpGLUniformMatrix3fv; | 888 functions->fUniformMatrix3fv = noOpGLUniformMatrix3fv; |
943 functions->fUniformMatrix4fv = noOpGLUniformMatrix4fv; | 889 functions->fUniformMatrix4fv = noOpGLUniformMatrix4fv; |
944 functions->fUnmapBuffer = debugGLUnmapBuffer; | |
945 functions->fUseProgram = debugGLUseProgram; | 890 functions->fUseProgram = debugGLUseProgram; |
946 functions->fVertexAttrib4fv = noOpGLVertexAttrib4fv; | 891 functions->fVertexAttrib4fv = noOpGLVertexAttrib4fv; |
947 functions->fVertexAttribPointer = noOpGLVertexAttribPointer; | 892 functions->fVertexAttribPointer = noOpGLVertexAttribPointer; |
948 functions->fViewport = noOpGLViewport; | 893 functions->fViewport = noOpGLViewport; |
949 functions->fBindFramebuffer = debugGLBindFramebuffer; | 894 functions->fBindFramebuffer = debugGLBindFramebuffer; |
950 functions->fBindRenderbuffer = debugGLBindRenderbuffer; | 895 functions->fBindRenderbuffer = debugGLBindRenderbuffer; |
951 functions->fCheckFramebufferStatus = noOpGLCheckFramebufferStatus; | 896 functions->fCheckFramebufferStatus = noOpGLCheckFramebufferStatus; |
952 functions->fDeleteFramebuffers = debugGLDeleteFramebuffers; | 897 functions->fDeleteFramebuffers = debugGLDeleteFramebuffers; |
953 functions->fDeleteRenderbuffers = debugGLDeleteRenderbuffers; | 898 functions->fDeleteRenderbuffers = debugGLDeleteRenderbuffers; |
954 functions->fFramebufferRenderbuffer = debugGLFramebufferRenderbuffer; | 899 functions->fFramebufferRenderbuffer = debugGLFramebufferRenderbuffer; |
955 functions->fFramebufferTexture2D = debugGLFramebufferTexture2D; | 900 functions->fFramebufferTexture2D = debugGLFramebufferTexture2D; |
956 functions->fGenFramebuffers = debugGLGenFramebuffers; | 901 functions->fGenFramebuffers = debugGLGenFramebuffers; |
957 functions->fGenRenderbuffers = debugGLGenRenderbuffers; | 902 functions->fGenRenderbuffers = debugGLGenRenderbuffers; |
958 functions->fGetFramebufferAttachmentParameteriv = | 903 functions->fGetFramebufferAttachmentParameteriv = |
959 noOpGLGetFramebufferAttachmentParameteriv; | 904 noOpGLGetFramebufferAttachmentParameteriv; |
960 functions->fGetRenderbufferParameteriv = noOpGLGetRenderbufferParameteriv; | 905 functions->fGetRenderbufferParameteriv = noOpGLGetRenderbufferParameteriv; |
961 functions->fRenderbufferStorage = noOpGLRenderbufferStorage; | 906 functions->fRenderbufferStorage = noOpGLRenderbufferStorage; |
962 functions->fRenderbufferStorageMultisample = | 907 functions->fRenderbufferStorageMultisample = |
963 noOpGLRenderbufferStorageMultisample; | 908 noOpGLRenderbufferStorageMultisample; |
964 functions->fBlitFramebuffer = noOpGLBlitFramebuffer; | 909 functions->fBlitFramebuffer = noOpGLBlitFramebuffer; |
965 functions->fResolveMultisampleFramebuffer = | 910 functions->fResolveMultisampleFramebuffer = |
966 noOpGLResolveMultisampleFramebuffer; | 911 noOpGLResolveMultisampleFramebuffer; |
| 912 functions->fMapBuffer = debugGLMapBuffer; |
967 functions->fMatrixLoadf = noOpGLMatrixLoadf; | 913 functions->fMatrixLoadf = noOpGLMatrixLoadf; |
968 functions->fMatrixLoadIdentity = noOpGLMatrixLoadIdentity; | 914 functions->fMatrixLoadIdentity = noOpGLMatrixLoadIdentity; |
969 | 915 functions->fUnmapBuffer = debugGLUnmapBuffer; |
970 functions->fBindFragDataLocationIndexed = | 916 functions->fBindFragDataLocationIndexed = |
971 noOpGLBindFragDataLocationIndexed; | 917 noOpGLBindFragDataLocationIndexed; |
972 | 918 |
973 interface->fExtensions.init(kGL_GrGLStandard, functions->fGetString, functio
ns->fGetStringi, | 919 interface->fExtensions.init(kGL_GrGLStandard, functions->fGetString, functio
ns->fGetStringi, |
974 functions->fGetIntegerv); | 920 functions->fGetIntegerv); |
975 | 921 |
976 return interface; | 922 return interface; |
977 } | 923 } |
OLD | NEW |