uterm: drm: clear new buffers after allocation
authorDavid Herrmann <dh.herrmann@googlemail.com>
Sun, 28 Oct 2012 15:11:06 +0000 (16:11 +0100)
committerDavid Herrmann <dh.herrmann@googlemail.com>
Sun, 28 Oct 2012 15:11:06 +0000 (16:11 +0100)
Framebuffers are not guaranteed to be cleared after we allocate them.
Therefore, clear them as all the other uterm-video backends do.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
src/uterm_video_drm.c

index a54b603..2725c31 100644 (file)
@@ -219,7 +219,7 @@ static int display_activate(struct uterm_display *disp, struct uterm_mode *mode)
        glGenFramebuffers(1, &disp->drm.fb);
        glBindFramebuffer(GL_FRAMEBUFFER, disp->drm.fb);
        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-                                       GL_RENDERBUFFER, disp->drm.rb[1].rb);
+                                 GL_RENDERBUFFER, disp->drm.rb[0].rb);
        if (glCheckFramebufferStatus(GL_FRAMEBUFFER) !=
                                                GL_FRAMEBUFFER_COMPLETE) {
                log_err("cannot create gl-framebuffer");
@@ -227,6 +227,20 @@ static int display_activate(struct uterm_display *disp, struct uterm_mode *mode)
                goto err_fb;
        }
 
+       glClearColor(0, 0, 0, 1);
+       glClear(GL_COLOR_BUFFER_BIT);
+
+       glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                 GL_RENDERBUFFER, disp->drm.rb[1].rb);
+       if (glCheckFramebufferStatus(GL_FRAMEBUFFER) !=
+                                               GL_FRAMEBUFFER_COMPLETE) {
+               log_warn("cannot set gl-renderbuffer");
+               ret = -EFAULT;
+               goto err_fb;
+       }
+
+       glClear(GL_COLOR_BUFFER_BIT);
+
        ret = drmModeSetCrtc(video->drm.fd, disp->drm.crtc_id,
                        disp->drm.rb[0].fb, 0, 0, &disp->drm.conn_id, 1,
                                                &disp->current_mode->drm.info);