]> git.sesse.net Git - nageru/blobdiff - pbo_frame_allocator.cpp
Update to latest bmusb.
[nageru] / pbo_frame_allocator.cpp
index 5f9d1bda9b659cc929c998bb37b274dbe1009ad8..204bb94b933c18b3c41501387ecc9f180bb99ad0 100644 (file)
@@ -38,6 +38,10 @@ PBOFrameAllocator::PBOFrameAllocator(size_t frame_size, GLuint width, GLuint hei
                check_error();
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
                check_error();
+               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+               check_error();
+               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+               check_error();
                glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, width, height, 0, GL_RED, GL_UNSIGNED_BYTE, NULL);
                check_error();
 
@@ -47,6 +51,10 @@ PBOFrameAllocator::PBOFrameAllocator(size_t frame_size, GLuint width, GLuint hei
                check_error();
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
                check_error();
+               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+               check_error();
+               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+               check_error();
                glTexImage2D(GL_TEXTURE_2D, 0, GL_RG8, width / 2, height, 0, GL_RG, GL_UNSIGNED_BYTE, NULL);
                check_error();
 
@@ -95,11 +103,16 @@ FrameAllocator::Frame PBOFrameAllocator::alloc_frame()
                freelist.pop();  // Meh.
        }
        vf.len = 0;
+       vf.overflow = 0;
        return vf;
 }
 
 void PBOFrameAllocator::release_frame(Frame frame)
 {
+       if (frame.overflow > 0) {
+               printf("%d bytes overflow after last (PBO) frame\n", int(frame.overflow));
+       }
+
        std::unique_lock<std::mutex> lock(freelist_mutex);
        freelist.push(frame);
        //--sumsum;