]> git.cworth.org Git - apitrace/commitdiff
trim: Avoid trimming textures when referenced by a framebuffer object
authorCarl Worth <cworth@cworth.org>
Wed, 29 Aug 2012 21:38:39 +0000 (14:38 -0700)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Thu, 22 Nov 2012 08:03:42 +0000 (08:03 +0000)
We aren't yet tracking FBOs as their own resource, but we do need to
notice when any texture is referenced by an FBO so that we don't omit
it while trimming. So, notice any textrure referenced by
glFramebufferTexture2D and make the render state depend on this
texture.

cli/trace_analyzer.cpp

index afca8026f1a62e6465c847b2812ca6d4a1139cc9..9a4553edc1895418ea9b745ad4a9562a34dd986d 100644 (file)
@@ -319,6 +319,20 @@ TraceAnalyzer::recordSideEffects(trace::Call *call)
         return;
     }
 
+    /* FIXME: When we start tracking framebuffer objects as their own
+     * resources, we will want to link the FBO to the given texture
+     * resource, (and to this call). For now, just link render state
+     * to the texture, and force this call to be required. */
+    if (strcmp(name, "glFramebufferTexture2D") == 0) {
+        GLuint texture;
+
+        texture = call->arg(3).toUInt();
+
+        linkf("render-state", "texture-", texture);
+
+        required.insert(call->no);
+    }
+
     if (strcmp(name, "glBindTexture") == 0) {
         GLenum target;
         GLuint texture;