]> git.cworth.org Git - apitrace/blobdiff - retrace/glretrace_glx.cpp
retrace: Implement glxCopySubBufferMESA
[apitrace] / retrace / glretrace_glx.cpp
index fe88a59406ab285c0ace7327077bbbe4f929406e..7efc3bf38e133ecb18dfce406e7439712a607bde 100644 (file)
@@ -111,6 +111,16 @@ static void retrace_glXDestroyContext(trace::Call &call) {
     delete context;
 }
 
+static void retrace_glXCopySubBufferMESA(trace::Call &call) {
+    glws::Drawable *drawable = getDrawable(call.arg(1).toUInt());
+    int x = call.arg(2).toSInt();
+    int y = call.arg(3).toSInt();
+    int width = call.arg(4).toSInt();
+    int height = call.arg(5).toSInt();
+
+    drawable->copySubBuffer(x, y, width, height);
+}
+
 static void retrace_glXSwapBuffers(trace::Call &call) {
     glws::Drawable *drawable = getDrawable(call.arg(1).toUInt());
 
@@ -133,7 +143,7 @@ static void retrace_glXCreateNewContext(trace::Call &call) {
 }
 
 static void retrace_glXCreatePbuffer(trace::Call &call) {
-    const trace::Value *attrib_list = dynamic_cast<const trace::Array *>(&call.arg(2));
+    const trace::Value *attrib_list = call.arg(2).toArray();
     int width = glretrace::parseAttrib(attrib_list, GLX_PBUFFER_WIDTH, 0);
     int height = glretrace::parseAttrib(attrib_list, GLX_PBUFFER_HEIGHT, 0);
 
@@ -173,7 +183,7 @@ const retrace::Entry glretrace::glx_callbacks[] = {
     {"glXChooseVisual", &retrace::ignore},
     //{"glXCopyContext", &retrace_glXCopyContext},
     //{"glXCopyImageSubDataNV", &retrace_glXCopyImageSubDataNV},
-    //{"glXCopySubBufferMESA", &retrace_glXCopySubBufferMESA},
+    {"glXCopySubBufferMESA", &retrace_glXCopySubBufferMESA},
     {"glXCreateContextAttribsARB", &retrace_glXCreateContextAttribsARB},
     {"glXCreateContext", &retrace_glXCreateContext},
     //{"glXCreateContextWithConfigSGIX", &retrace_glXCreateContextWithConfigSGIX},