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" |
11 #include "GrDebugGL.h" | 11 #include "GrDebugGL.h" |
12 #include "GrShaderObj.h" | 12 #include "GrShaderObj.h" |
13 #include "GrProgramObj.h" | 13 #include "GrProgramObj.h" |
14 #include "GrBufferObj.h" | 14 #include "GrBufferObj.h" |
15 #include "GrTextureUnitObj.h" | 15 #include "GrTextureUnitObj.h" |
16 #include "GrTextureObj.h" | 16 #include "GrTextureObj.h" |
17 #include "GrFrameBufferObj.h" | 17 #include "GrFrameBufferObj.h" |
18 #include "GrRenderBufferObj.h" | 18 #include "GrRenderBufferObj.h" |
| 19 #include "GrVertexArrayObj.h" |
19 #include "SkFloatingPoint.h" | 20 #include "SkFloatingPoint.h" |
20 #include "../GrGLNoOpInterface.h" | 21 #include "../GrGLNoOpInterface.h" |
21 | 22 |
22 namespace { // suppress no previous prototype warning | 23 namespace { // suppress no previous prototype warning |
23 | 24 |
24 //////////////////////////////////////////////////////////////////////////////// | 25 //////////////////////////////////////////////////////////////////////////////// |
25 GrGLvoid GR_GL_FUNCTION_TYPE debugGLActiveTexture(GrGLenum texture) { | 26 GrGLvoid GR_GL_FUNCTION_TYPE debugGLActiveTexture(GrGLenum texture) { |
26 | 27 |
27 // Ganesh offsets the texture unit indices | 28 // Ganesh offsets the texture unit indices |
28 texture -= GR_GL_TEXTURE0; | 29 texture -= GR_GL_TEXTURE0; |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 | 206 |
206 // a frameBufferID of 0 is acceptable - it binds to the default | 207 // a frameBufferID of 0 is acceptable - it binds to the default |
207 // frame buffer | 208 // frame buffer |
208 GrFrameBufferObj *frameBuffer = GR_FIND(frameBufferID, | 209 GrFrameBufferObj *frameBuffer = GR_FIND(frameBufferID, |
209 GrFrameBufferObj, | 210 GrFrameBufferObj, |
210 GrDebugGL::kFrameBuffer_ObjTypes); | 211 GrDebugGL::kFrameBuffer_ObjTypes); |
211 | 212 |
212 GrDebugGL::getInstance()->setFrameBuffer(frameBuffer); | 213 GrDebugGL::getInstance()->setFrameBuffer(frameBuffer); |
213 } | 214 } |
214 | 215 |
215 GrGLvoid GR_GL_FUNCTION_TYPE debugGLBindRenderbuffer(GrGLenum target, | 216 GrGLvoid GR_GL_FUNCTION_TYPE debugGLBindRenderbuffer(GrGLenum target, GrGLuint
renderBufferID) { |
216 GrGLuint renderBufferID) { | |
217 | 217 |
218 GrAlwaysAssert(GR_GL_RENDERBUFFER == target); | 218 GrAlwaysAssert(GR_GL_RENDERBUFFER == target); |
219 | 219 |
220 // a renderBufferID of 0 is acceptable - it unbinds the bound render buffer | 220 // a renderBufferID of 0 is acceptable - it unbinds the bound render buffer |
221 GrRenderBufferObj *renderBuffer = GR_FIND(renderBufferID, | 221 GrRenderBufferObj *renderBuffer = GR_FIND(renderBufferID, |
222 GrRenderBufferObj, | 222 GrRenderBufferObj, |
223 GrDebugGL::kRenderBuffer_ObjTypes
); | 223 GrDebugGL::kRenderBuffer_ObjTypes
); |
224 | 224 |
225 GrDebugGL::getInstance()->setRenderBuffer(renderBuffer); | 225 GrDebugGL::getInstance()->setRenderBuffer(renderBuffer); |
226 } | 226 } |
227 | 227 |
228 GrGLvoid GR_GL_FUNCTION_TYPE debugGLDeleteTextures(GrGLsizei n, | 228 GrGLvoid GR_GL_FUNCTION_TYPE debugGLDeleteTextures(GrGLsizei n, const GrGLuint*
textures) { |
229 const GrGLuint* textures) { | |
230 | 229 |
231 // first potentially unbind the texture | 230 // first potentially unbind the texture |
232 // TODO: move this into GrDebugGL as unBindTexture? | 231 // TODO: move this into GrDebugGL as unBindTexture? |
233 for (unsigned int i = 0; | 232 for (unsigned int i = 0; |
234 i < GrDebugGL::getInstance()->getMaxTextureUnits(); | 233 i < GrDebugGL::getInstance()->getMaxTextureUnits(); |
235 ++i) { | 234 ++i) { |
236 GrTextureUnitObj *pTU = GrDebugGL::getInstance()->getTextureUnit(i); | 235 GrTextureUnitObj *pTU = GrDebugGL::getInstance()->getTextureUnit(i); |
237 | 236 |
238 if (pTU->getTexture()) { | 237 if (pTU->getTexture()) { |
239 for (int j = 0; j < n; ++j) { | 238 for (int j = 0; j < n; ++j) { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 // OpenGL gives no guarantees if a texture is deleted while attached to | 279 // OpenGL gives no guarantees if a texture is deleted while attached to |
281 // something other than the currently bound frame buffer | 280 // something other than the currently bound frame buffer |
282 GrAlwaysAssert(!buffer->getBound()); | 281 GrAlwaysAssert(!buffer->getBound()); |
283 | 282 |
284 GrAlwaysAssert(!buffer->getDeleted()); | 283 GrAlwaysAssert(!buffer->getDeleted()); |
285 buffer->deleteAction(); | 284 buffer->deleteAction(); |
286 } | 285 } |
287 | 286 |
288 } | 287 } |
289 | 288 |
290 | |
291 GrGLvoid GR_GL_FUNCTION_TYPE debugGLDeleteFramebuffers(GrGLsizei n, | 289 GrGLvoid GR_GL_FUNCTION_TYPE debugGLDeleteFramebuffers(GrGLsizei n, |
292 const GrGLuint *frameBuf
fers) { | 290 const GrGLuint *frameBuf
fers) { |
293 | 291 |
294 // first potentially unbind the buffers | 292 // first potentially unbind the buffers |
295 if (GrDebugGL::getInstance()->getFrameBuffer()) { | 293 if (GrDebugGL::getInstance()->getFrameBuffer()) { |
296 for (int i = 0; i < n; ++i) { | 294 for (int i = 0; i < n; ++i) { |
297 | 295 |
298 if (frameBuffers[i] == | 296 if (frameBuffers[i] == |
299 GrDebugGL::getInstance()->getFrameBuffer()->getID()) { | 297 GrDebugGL::getInstance()->getFrameBuffer()->getID()) { |
300 // this ID is the current frame buffer - rebind to the default | 298 // this ID is the current frame buffer - rebind to the default |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
511 GrGLuint* ids) { | 509 GrGLuint* ids) { |
512 | 510 |
513 for (int i = 0; i < n; ++i) { | 511 for (int i = 0; i < n; ++i) { |
514 GrFakeRefObj *obj = GrDebugGL::getInstance()->createObj(type); | 512 GrFakeRefObj *obj = GrDebugGL::getInstance()->createObj(type); |
515 GrAlwaysAssert(obj); | 513 GrAlwaysAssert(obj); |
516 ids[i] = obj->getID(); | 514 ids[i] = obj->getID(); |
517 } | 515 } |
518 } | 516 } |
519 | 517 |
520 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGenBuffers(GrGLsizei n, GrGLuint* ids) { | 518 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGenBuffers(GrGLsizei n, GrGLuint* ids) { |
521 | |
522 debugGenObjs(GrDebugGL::kBuffer_ObjTypes, n, ids); | 519 debugGenObjs(GrDebugGL::kBuffer_ObjTypes, n, ids); |
523 } | 520 } |
524 | 521 |
525 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGenFramebuffers(GrGLsizei n, | 522 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGenFramebuffers(GrGLsizei n, |
526 GrGLuint* ids) { | 523 GrGLuint* ids) { |
527 | |
528 debugGenObjs(GrDebugGL::kFrameBuffer_ObjTypes, n, ids); | 524 debugGenObjs(GrDebugGL::kFrameBuffer_ObjTypes, n, ids); |
529 } | 525 } |
530 | 526 |
531 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGenRenderbuffers(GrGLsizei n, | 527 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGenRenderbuffers(GrGLsizei n, |
532 GrGLuint* ids) { | 528 GrGLuint* ids) { |
533 | |
534 debugGenObjs(GrDebugGL::kRenderBuffer_ObjTypes, n, ids); | 529 debugGenObjs(GrDebugGL::kRenderBuffer_ObjTypes, n, ids); |
535 } | 530 } |
536 | 531 |
537 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGenTextures(GrGLsizei n, GrGLuint* ids) { | 532 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGenTextures(GrGLsizei n, GrGLuint* ids) { |
538 | |
539 debugGenObjs(GrDebugGL::kTexture_ObjTypes, n, ids); | 533 debugGenObjs(GrDebugGL::kTexture_ObjTypes, n, ids); |
540 } | 534 } |
541 | 535 |
542 GrGLvoid GR_GL_FUNCTION_TYPE debugGLBindBuffer(GrGLenum target, | 536 GrGLvoid GR_GL_FUNCTION_TYPE debugGLGenVertexArrays(GrGLsizei n, GrGLuint* ids)
{ |
543 GrGLuint bufferID) { | 537 debugGenObjs(GrDebugGL::kVertexArray_ObjTypes, n, ids); |
| 538 } |
544 | 539 |
545 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || | 540 GrGLvoid GR_GL_FUNCTION_TYPE debugGLDeleteVertexArrays(GrGLsizei n, const GrGLui
nt* ids) { |
546 GR_GL_ELEMENT_ARRAY_BUFFER == target); | 541 for (GrGLsizei i = 0; i < n; ++i) { |
| 542 GrVertexArrayObj* array = |
| 543 GR_FIND(ids[i], GrVertexArrayObj, GrDebugGL::kVertexArray_ObjTypes); |
| 544 GrAlwaysAssert(array); |
| 545 |
| 546 // Deleting the current vertex array binds object 0 |
| 547 if (GrDebugGL::getInstance()->getVertexArray() == array) { |
| 548 GrDebugGL::getInstance()->setVertexArray(NULL); |
| 549 } |
| 550 |
| 551 if (array->getRefCount()) { |
| 552 // someone is still using this vertex array so we can't delete it he
re |
| 553 array->setMarkedForDeletion(); |
| 554 } else { |
| 555 array->deleteAction(); |
| 556 } |
| 557 } |
| 558 } |
| 559 |
| 560 GrGLvoid GR_GL_FUNCTION_TYPE debugGLBindVertexArray(GrGLuint id) { |
| 561 GrVertexArrayObj* array = GR_FIND(id, GrVertexArrayObj, GrDebugGL::kVertexAr
ray_ObjTypes); |
| 562 GrAlwaysAssert(array); |
| 563 GrDebugGL::getInstance()->setVertexArray(array); |
| 564 } |
| 565 |
| 566 GrGLvoid GR_GL_FUNCTION_TYPE debugGLBindBuffer(GrGLenum target, GrGLuint bufferI
D) { |
| 567 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || GR_GL_ELEMENT_ARRAY_BUFFER ==
target); |
547 | 568 |
548 GrBufferObj *buffer = GR_FIND(bufferID, | 569 GrBufferObj *buffer = GR_FIND(bufferID, |
549 GrBufferObj, | 570 GrBufferObj, |
550 GrDebugGL::kBuffer_ObjTypes); | 571 GrDebugGL::kBuffer_ObjTypes); |
551 // 0 is a permissible bufferID - it unbinds the current buffer | 572 // 0 is a permissible bufferID - it unbinds the current buffer |
552 | 573 |
553 switch (target) { | 574 switch (target) { |
554 case GR_GL_ARRAY_BUFFER: | 575 case GR_GL_ARRAY_BUFFER: |
555 GrDebugGL::getInstance()->setArrayBuffer(buffer); | 576 GrDebugGL::getInstance()->setArrayBuffer(buffer); |
556 break; | 577 break; |
557 case GR_GL_ELEMENT_ARRAY_BUFFER: | 578 case GR_GL_ELEMENT_ARRAY_BUFFER: |
558 GrDebugGL::getInstance()->setElementArrayBuffer(buffer); | 579 GrDebugGL::getInstance()->setElementArrayBuffer(buffer); |
559 break; | 580 break; |
560 default: | 581 default: |
561 GrCrash("Unexpected target to glBindBuffer"); | 582 GrCrash("Unexpected target to glBindBuffer"); |
562 break; | 583 break; |
563 } | 584 } |
564 } | 585 } |
565 | 586 |
566 // deleting a bound buffer has the side effect of binding 0 | 587 // deleting a bound buffer has the side effect of binding 0 |
567 GrGLvoid GR_GL_FUNCTION_TYPE debugGLDeleteBuffers(GrGLsizei n, | 588 GrGLvoid GR_GL_FUNCTION_TYPE debugGLDeleteBuffers(GrGLsizei n, const GrGLuint* i
ds) { |
568 const GrGLuint* ids) { | |
569 // first potentially unbind the buffers | 589 // first potentially unbind the buffers |
570 for (int i = 0; i < n; ++i) { | 590 for (int i = 0; i < n; ++i) { |
571 | 591 |
572 if (GrDebugGL::getInstance()->getArrayBuffer() && | 592 if (GrDebugGL::getInstance()->getArrayBuffer() && |
573 ids[i] == GrDebugGL::getInstance()->getArrayBuffer()->getID()) { | 593 ids[i] == GrDebugGL::getInstance()->getArrayBuffer()->getID()) { |
574 // this ID is the current array buffer | 594 // this ID is the current array buffer |
575 GrDebugGL::getInstance()->setArrayBuffer(NULL); | 595 GrDebugGL::getInstance()->setArrayBuffer(NULL); |
576 } | 596 } |
577 if (GrDebugGL::getInstance()->getElementArrayBuffer() && | 597 if (GrDebugGL::getInstance()->getElementArrayBuffer() && |
578 ids[i] == | 598 ids[i] == |
579 GrDebugGL::getInstance()->getElementArrayBuffer()->getID()) { | 599 GrDebugGL::getInstance()->getElementArrayBuffer()->getID()) { |
580 // this ID is the current element array buffer | 600 // this ID is the current element array buffer |
581 GrDebugGL::getInstance()->setElementArrayBuffer(NULL); | 601 GrDebugGL::getInstance()->setElementArrayBuffer(NULL); |
582 } | 602 } |
583 } | 603 } |
584 | 604 |
585 // then actually "delete" the buffers | 605 // then actually "delete" the buffers |
586 for (int i = 0; i < n; ++i) { | 606 for (int i = 0; i < n; ++i) { |
587 GrBufferObj *buffer = GR_FIND(ids[i], | 607 GrBufferObj *buffer = GR_FIND(ids[i], |
588 GrBufferObj, | 608 GrBufferObj, |
589 GrDebugGL::kBuffer_ObjTypes); | 609 GrDebugGL::kBuffer_ObjTypes); |
590 GrAlwaysAssert(buffer); | 610 GrAlwaysAssert(buffer); |
591 | 611 |
592 GrAlwaysAssert(!buffer->getDeleted()); | 612 GrAlwaysAssert(!buffer->getDeleted()); |
593 buffer->deleteAction(); | 613 buffer->deleteAction(); |
594 } | 614 } |
595 } | 615 } |
596 | 616 |
597 // map a buffer to the caller's address space | 617 // map a buffer to the caller's address space |
598 GrGLvoid* GR_GL_FUNCTION_TYPE debugGLMapBuffer(GrGLenum target, | 618 GrGLvoid* GR_GL_FUNCTION_TYPE debugGLMapBuffer(GrGLenum target, GrGLenum access)
{ |
599 GrGLenum access) { | |
600 | 619 |
601 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || | 620 GrAlwaysAssert(GR_GL_ARRAY_BUFFER == target || |
602 GR_GL_ELEMENT_ARRAY_BUFFER == target); | 621 GR_GL_ELEMENT_ARRAY_BUFFER == target); |
603 // GR_GL_READ_ONLY == access || || GR_GL_READ_WRIT == access); | 622 // GR_GL_READ_ONLY == access || || GR_GL_READ_WRIT == access); |
604 GrAlwaysAssert(GR_GL_WRITE_ONLY == access); | 623 GrAlwaysAssert(GR_GL_WRITE_ONLY == access); |
605 | 624 |
606 GrBufferObj *buffer = NULL; | 625 GrBufferObj *buffer = NULL; |
607 switch (target) { | 626 switch (target) { |
608 case GR_GL_ARRAY_BUFFER: | 627 case GR_GL_ARRAY_BUFFER: |
609 buffer = GrDebugGL::getInstance()->getArrayBuffer(); | 628 buffer = GrDebugGL::getInstance()->getArrayBuffer(); |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
760 GrGLInterface* interface = SkNEW(GrDebugGLInterface); | 779 GrGLInterface* interface = SkNEW(GrDebugGLInterface); |
761 | 780 |
762 interface->fBindingsExported = kDesktop_GrGLBinding; | 781 interface->fBindingsExported = kDesktop_GrGLBinding; |
763 interface->fActiveTexture = debugGLActiveTexture; | 782 interface->fActiveTexture = debugGLActiveTexture; |
764 interface->fAttachShader = debugGLAttachShader; | 783 interface->fAttachShader = debugGLAttachShader; |
765 interface->fBeginQuery = debugGLBeginQuery; | 784 interface->fBeginQuery = debugGLBeginQuery; |
766 interface->fBindAttribLocation = debugGLBindAttribLocation; | 785 interface->fBindAttribLocation = debugGLBindAttribLocation; |
767 interface->fBindBuffer = debugGLBindBuffer; | 786 interface->fBindBuffer = debugGLBindBuffer; |
768 interface->fBindFragDataLocation = noOpGLBindFragDataLocation; | 787 interface->fBindFragDataLocation = noOpGLBindFragDataLocation; |
769 interface->fBindTexture = debugGLBindTexture; | 788 interface->fBindTexture = debugGLBindTexture; |
| 789 interface->fBindVertexArray = debugGLBindVertexArray; |
770 interface->fBlendColor = noOpGLBlendColor; | 790 interface->fBlendColor = noOpGLBlendColor; |
771 interface->fBlendFunc = noOpGLBlendFunc; | 791 interface->fBlendFunc = noOpGLBlendFunc; |
772 interface->fBufferData = debugGLBufferData; | 792 interface->fBufferData = debugGLBufferData; |
773 interface->fBufferSubData = noOpGLBufferSubData; | 793 interface->fBufferSubData = noOpGLBufferSubData; |
774 interface->fClear = noOpGLClear; | 794 interface->fClear = noOpGLClear; |
775 interface->fClearColor = noOpGLClearColor; | 795 interface->fClearColor = noOpGLClearColor; |
776 interface->fClearStencil = noOpGLClearStencil; | 796 interface->fClearStencil = noOpGLClearStencil; |
777 interface->fColorMask = noOpGLColorMask; | 797 interface->fColorMask = noOpGLColorMask; |
778 interface->fCompileShader = noOpGLCompileShader; | 798 interface->fCompileShader = noOpGLCompileShader; |
779 interface->fCompressedTexImage2D = noOpGLCompressedTexImage2D; | 799 interface->fCompressedTexImage2D = noOpGLCompressedTexImage2D; |
780 interface->fCreateProgram = debugGLCreateProgram; | 800 interface->fCreateProgram = debugGLCreateProgram; |
781 interface->fCreateShader = debugGLCreateShader; | 801 interface->fCreateShader = debugGLCreateShader; |
782 interface->fCullFace = noOpGLCullFace; | 802 interface->fCullFace = noOpGLCullFace; |
783 interface->fDeleteBuffers = debugGLDeleteBuffers; | 803 interface->fDeleteBuffers = debugGLDeleteBuffers; |
784 interface->fDeleteProgram = debugGLDeleteProgram; | 804 interface->fDeleteProgram = debugGLDeleteProgram; |
785 interface->fDeleteQueries = noOpGLDeleteIds; | 805 interface->fDeleteQueries = noOpGLDeleteIds; |
786 interface->fDeleteShader = debugGLDeleteShader; | 806 interface->fDeleteShader = debugGLDeleteShader; |
787 interface->fDeleteTextures = debugGLDeleteTextures; | 807 interface->fDeleteTextures = debugGLDeleteTextures; |
| 808 interface->fDeleteVertexArrays = debugGLDeleteVertexArrays; |
788 interface->fDepthMask = noOpGLDepthMask; | 809 interface->fDepthMask = noOpGLDepthMask; |
789 interface->fDisable = noOpGLDisable; | 810 interface->fDisable = noOpGLDisable; |
790 interface->fDisableVertexAttribArray = noOpGLDisableVertexAttribArray; | 811 interface->fDisableVertexAttribArray = noOpGLDisableVertexAttribArray; |
791 interface->fDrawArrays = noOpGLDrawArrays; | 812 interface->fDrawArrays = noOpGLDrawArrays; |
792 interface->fDrawBuffer = noOpGLDrawBuffer; | 813 interface->fDrawBuffer = noOpGLDrawBuffer; |
793 interface->fDrawBuffers = noOpGLDrawBuffers; | 814 interface->fDrawBuffers = noOpGLDrawBuffers; |
794 interface->fDrawElements = noOpGLDrawElements; | 815 interface->fDrawElements = noOpGLDrawElements; |
795 interface->fEnable = noOpGLEnable; | 816 interface->fEnable = noOpGLEnable; |
796 interface->fEnableVertexAttribArray = noOpGLEnableVertexAttribArray; | 817 interface->fEnableVertexAttribArray = noOpGLEnableVertexAttribArray; |
797 interface->fEndQuery = noOpGLEndQuery; | 818 interface->fEndQuery = noOpGLEndQuery; |
(...skipping 12 matching lines...) Expand all Loading... |
810 interface->fGetQueryObjectuiv = noOpGLGetQueryObjectuiv; | 831 interface->fGetQueryObjectuiv = noOpGLGetQueryObjectuiv; |
811 interface->fGetQueryiv = noOpGLGetQueryiv; | 832 interface->fGetQueryiv = noOpGLGetQueryiv; |
812 interface->fGetProgramInfoLog = noOpGLGetInfoLog; | 833 interface->fGetProgramInfoLog = noOpGLGetInfoLog; |
813 interface->fGetProgramiv = noOpGLGetShaderOrProgramiv; | 834 interface->fGetProgramiv = noOpGLGetShaderOrProgramiv; |
814 interface->fGetShaderInfoLog = noOpGLGetInfoLog; | 835 interface->fGetShaderInfoLog = noOpGLGetInfoLog; |
815 interface->fGetShaderiv = noOpGLGetShaderOrProgramiv; | 836 interface->fGetShaderiv = noOpGLGetShaderOrProgramiv; |
816 interface->fGetString = noOpGLGetString; | 837 interface->fGetString = noOpGLGetString; |
817 interface->fGetStringi = noOpGLGetStringi; | 838 interface->fGetStringi = noOpGLGetStringi; |
818 interface->fGetTexLevelParameteriv = noOpGLGetTexLevelParameteriv; | 839 interface->fGetTexLevelParameteriv = noOpGLGetTexLevelParameteriv; |
819 interface->fGetUniformLocation = noOpGLGetUniformLocation; | 840 interface->fGetUniformLocation = noOpGLGetUniformLocation; |
| 841 interface->fGenVertexArrays = debugGLGenVertexArrays; |
820 interface->fLineWidth = noOpGLLineWidth; | 842 interface->fLineWidth = noOpGLLineWidth; |
821 interface->fLinkProgram = noOpGLLinkProgram; | 843 interface->fLinkProgram = noOpGLLinkProgram; |
822 interface->fPixelStorei = debugGLPixelStorei; | 844 interface->fPixelStorei = debugGLPixelStorei; |
823 interface->fQueryCounter = noOpGLQueryCounter; | 845 interface->fQueryCounter = noOpGLQueryCounter; |
824 interface->fReadBuffer = noOpGLReadBuffer; | 846 interface->fReadBuffer = noOpGLReadBuffer; |
825 interface->fReadPixels = debugGLReadPixels; | 847 interface->fReadPixels = debugGLReadPixels; |
826 interface->fScissor = noOpGLScissor; | 848 interface->fScissor = noOpGLScissor; |
827 interface->fShaderSource = noOpGLShaderSource; | 849 interface->fShaderSource = noOpGLShaderSource; |
828 interface->fStencilFunc = noOpGLStencilFunc; | 850 interface->fStencilFunc = noOpGLStencilFunc; |
829 interface->fStencilFuncSeparate = noOpGLStencilFuncSeparate; | 851 interface->fStencilFuncSeparate = noOpGLStencilFuncSeparate; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
877 interface->fBlitFramebuffer = noOpGLBlitFramebuffer; | 899 interface->fBlitFramebuffer = noOpGLBlitFramebuffer; |
878 interface->fResolveMultisampleFramebuffer = | 900 interface->fResolveMultisampleFramebuffer = |
879 noOpGLResolveMultisampleFramebuffer; | 901 noOpGLResolveMultisampleFramebuffer; |
880 interface->fMapBuffer = debugGLMapBuffer; | 902 interface->fMapBuffer = debugGLMapBuffer; |
881 interface->fUnmapBuffer = debugGLUnmapBuffer; | 903 interface->fUnmapBuffer = debugGLUnmapBuffer; |
882 interface->fBindFragDataLocationIndexed = | 904 interface->fBindFragDataLocationIndexed = |
883 noOpGLBindFragDataLocationIndexed; | 905 noOpGLBindFragDataLocationIndexed; |
884 | 906 |
885 return interface; | 907 return interface; |
886 } | 908 } |
OLD | NEW |