MCPcopy Create free account
hub / github.com/VirtualGL/virtualgl / bindFramebuffer

Function bindFramebuffer

server/backend.cpp:68–122  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66
67
68void bindFramebuffer(GLenum target, GLuint framebuffer, bool ext)
69{
70 const GLenum *oldDrawBufs = NULL; GLsizei nDrawBufs = 0;
71 GLenum oldReadBuf = GL_NONE;
72 FakePbuffer *drawpb = NULL, *readpb = NULL;
73
74 if(fconfig.egl)
75 {
76 if(framebuffer == 0)
77 {
78 if(target == GL_DRAW_FRAMEBUFFER || target == GL_FRAMEBUFFER)
79 {
80 drawpb = PBHASHEGL.find(getCurrentDrawableEGL());
81 if(drawpb)
82 {
83 oldDrawBufs =
84 CTXHASHEGL.getDrawBuffers(_eglGetCurrentContext(), nDrawBufs);
85 framebuffer = drawpb->getFBO();
86 CTXHASHEGL.setDrawFBO(_eglGetCurrentContext(), 0);
87 }
88 }
89 if(target == GL_READ_FRAMEBUFFER || target == GL_FRAMEBUFFER)
90 {
91 readpb = PBHASHEGL.find(getCurrentReadDrawableEGL());
92 if(readpb)
93 {
94 oldReadBuf = CTXHASHEGL.getReadBuffer(_eglGetCurrentContext());
95 framebuffer = readpb->getFBO();
96 CTXHASHEGL.setReadFBO(_eglGetCurrentContext(), 0);
97 }
98 }
99 }
100 else
101 {
102 if(target == GL_DRAW_FRAMEBUFFER || target == GL_FRAMEBUFFER)
103 CTXHASHEGL.setDrawFBO(_eglGetCurrentContext(), framebuffer);
104 if(target == GL_READ_FRAMEBUFFER || target == GL_FRAMEBUFFER)
105 CTXHASHEGL.setReadFBO(_eglGetCurrentContext(), framebuffer);
106 }
107 }
108 if(ext) _glBindFramebufferEXT(target, framebuffer);
109 else _glBindFramebuffer(target, framebuffer);
110 if(fconfig.egl)
111 {
112 if(oldDrawBufs)
113 {
114 if(nDrawBufs == 1)
115 drawpb->setDrawBuffer(oldDrawBufs[0], false);
116 else if(nDrawBufs > 0)
117 drawpb->setDrawBuffers(nDrawBufs, oldDrawBufs, false);
118 delete [] oldDrawBufs;
119 }
120 if(oldReadBuf) readpb->setReadBuffer(oldReadBuf, false);
121 }
122}
123
124
125void deleteFramebuffers(GLsizei n, const GLuint *framebuffers)

Callers 3

glBindFramebufferFunction · 0.85
glBindFramebufferEXTFunction · 0.85
deleteFramebuffersFunction · 0.85

Calls 9

getDrawBuffersMethod · 0.80
getFBOMethod · 0.80
setDrawFBOMethod · 0.80
getReadBufferMethod · 0.80
setReadFBOMethod · 0.80
setDrawBufferMethod · 0.80
findMethod · 0.45
setDrawBuffersMethod · 0.45
setReadBufferMethod · 0.45

Tested by

no test coverage detected