From: Carl Worth Date: Tue, 29 Jan 2013 04:07:34 +0000 (+1100) Subject: cli: Add testing for recently-added "apitrace trim --trim-spec" X-Git-Url: https://git.cworth.org/git?p=apitrace-tests;a=commitdiff_plain;h=6982268801b17e5c39d30a6905f20e65ed0b07dc cli: Add testing for recently-added "apitrace trim --trim-spec" Each test here is quite simple. Without doing any image-based verification, simply ensure that the expected calls are trimmed with each different invocation of --trim-spec. --- diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 9d7ce55..d3aca6c 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -27,3 +27,8 @@ add_cli_test(NAME "cli-diff-images-mismatch.script") add_cli_test(NAME "cli-trim-single-swapbuffers.script") add_cli_test(NAME "cli-trim-unused-textures.script") add_cli_test(NAME "cli-trim-unused-shaders.script") +add_cli_test(NAME "cli-trim-spec-all.script") +add_cli_test(NAME "cli-trim-spec-no-side-effects.script") +add_cli_test(NAME "cli-trim-spec-textures.script") +add_cli_test(NAME "cli-trim-spec-shaders.script") +add_cli_test(NAME "cli-trim-spec-drawing.script") diff --git a/cli/cli-trim-spec-all.script b/cli/cli-trim-spec-all.script new file mode 100644 index 0000000..53c1e0e --- /dev/null +++ b/cli/cli-trim-spec-all.script @@ -0,0 +1,97 @@ +# Trim trace to the final glxDestroyContext, eliminating almost everything + +apitrace trim --auto --calls=88 glxsimple.trace + +# Verify that we actually trimmed what we wanted to (most of the trace) + +apitrace diff --diff=python glxsimple.trace glxsimple-trim.trace +expect r""" glXChooseVisual(37134976, 0, (GLX_RGBA, GLX_RED_SIZE, GLX_RED_SIZE, GLX_GREEN_SIZE, GLX_RED_SIZE, GLX_BLUE_SIZE, GLX_RED_SIZE, GLX_ALPHA_SIZE, GLX_RED_SIZE, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, GLX_RED_SIZE, GLX_X_VISUAL_TYPE, GLX_DIRECT_COLOR, 0)) = ([37179128, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]) + glXCreateContext(37134976, ([37179128, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]), 0, True) = 37241648 + glXMakeCurrent(37134976, 41943041, 37241648) = True + glViewport(0, 0, 64, 64) + glMatrixMode(GL_PROJECTION) + glLoadIdentity() + glOrtho(0.0, 64.0, 64.0, 0.0, 0.0, 1.0) + glMatrixMode(GL_MODELVIEW) + glClearColor(0.0, 0.0, 1.0, 1.0) +- glClear((GL_COLOR_BUFFER_BIT)) +- glXSwapBuffers(37134976, 41943041) +- glCreateShader(GL_VERTEX_SHADER) = 7 +- glShaderSource(7, 1, ('void main()\n{\n gl_Position = ftransform();\n}\n'), 0) +- glCompileShader(7) +- glCreateShader(GL_FRAGMENT_SHADER) = 8 +- glShaderSource(8, 1, ('#version 120\nuniform vec4 color;\nvoid main()\n{\n gl_FragColor = color;\n}\n'), 0) +- glCompileShader(8) +- glCreateProgram() = 9 +- glAttachShader(9, 7) +- glAttachShader(9, 8) +- glLinkProgram(9) +- glUseProgram(9) +- glGetUniformLocation(9, color) = 0 +- glUniform4f(0, 0.0, 1.0, 0.0, 1.0) +- glBegin(GL_QUADS) +- glVertex2f(0.0, 0.0) +- glVertex2f(64.0, 0.0) +- glVertex2f(64.0, 64.0) +- glVertex2f(0.0, 64.0) +- glEnd() + glUseProgram(0) +- glXSwapBuffers(37134976, 41943041) +- glGenTextures(1, (1)) + glBindTexture(GL_TEXTURE_2D, 1) +- glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, blob(3)) + glEnable(GL_TEXTURE_2D) +- glBegin(GL_QUADS) +- glTexCoord2f(0.0, 0.0) +- glVertex2f(0.0, 0.0) +- glTexCoord2f(1.0, 0.0) +- glVertex2f(64.0, 0.0) +- glTexCoord2f(1.0, 1.0) +- glVertex2f(64.0, 64.0) +- glTexCoord2f(0.0, 1.0) +- glVertex2f(0.0, 64.0) +- glEnd() + glDisable(GL_TEXTURE_2D) +- glXSwapBuffers(37134976, 41943041) + glClearColor(1.0, 0.0, 0.0, 1.0) +- glClear((GL_COLOR_BUFFER_BIT)) +- glXSwapBuffers(37134976, 41943041) +- glCreateShader(GL_VERTEX_SHADER) = 10 +- glShaderSource(10, 1, ('void main()\n{\n gl_Position = ftransform();\n}\n'), 0) +- glCompileShader(10) +- glCreateShader(GL_FRAGMENT_SHADER) = 11 +- glShaderSource(11, 1, ('#version 120\nuniform vec4 color;\nvoid main()\n{\n gl_FragColor = color;\n}\n'), 0) +- glCompileShader(11) +- glCreateProgram() = 12 +- glAttachShader(12, 10) +- glAttachShader(12, 11) +- glLinkProgram(12) +- glUseProgram(12) +- glGetUniformLocation(12, color) = 0 +- glUniform4f(0, 1.0, 0.0, 1.0, 1.0) +- glBegin(GL_QUADS) +- glVertex2f(0.0, 0.0) +- glVertex2f(64.0, 0.0) +- glVertex2f(64.0, 64.0) +- glVertex2f(0.0, 64.0) +- glEnd() + glUseProgram(0) +- glXSwapBuffers(37134976, 41943041) +- glGenTextures(1, (2)) + glBindTexture(GL_TEXTURE_2D, 2) +- glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, blob(3)) + glEnable(GL_TEXTURE_2D) +- glBegin(GL_QUADS) +- glTexCoord2f(0.0, 0.0) +- glVertex2f(0.0, 0.0) +- glTexCoord2f(1.0, 0.0) +- glVertex2f(64.0, 0.0) +- glTexCoord2f(1.0, 1.0) +- glVertex2f(64.0, 64.0) +- glTexCoord2f(0.0, 1.0) +- glVertex2f(0.0, 64.0) +- glEnd() + glDisable(GL_TEXTURE_2D) +- glXSwapBuffers(37134976, 41943041) + glXDestroyContext(37134976, 37241648) +""" diff --git a/cli/cli-trim-spec-drawing.script b/cli/cli-trim-spec-drawing.script new file mode 100644 index 0000000..ea4d3e7 --- /dev/null +++ b/cli/cli-trim-spec-drawing.script @@ -0,0 +1,97 @@ +# Trim trace to the final glxDestroyContext, eliminating almost everything + +apitrace trim --auto --trim-spec=drawing --calls=88 glxsimple.trace + +# Verify that we actually trimmed what we wanted to (just drawing calls) + +apitrace diff --diff=python glxsimple.trace glxsimple-trim.trace +expect r""" glXChooseVisual(37134976, 0, (GLX_RGBA, GLX_RED_SIZE, GLX_RED_SIZE, GLX_GREEN_SIZE, GLX_RED_SIZE, GLX_BLUE_SIZE, GLX_RED_SIZE, GLX_ALPHA_SIZE, GLX_RED_SIZE, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, GLX_RED_SIZE, GLX_X_VISUAL_TYPE, GLX_DIRECT_COLOR, 0)) = ([37179128, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]) + glXCreateContext(37134976, ([37179128, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]), 0, True) = 37241648 + glXMakeCurrent(37134976, 41943041, 37241648) = True + glViewport(0, 0, 64, 64) + glMatrixMode(GL_PROJECTION) + glLoadIdentity() + glOrtho(0.0, 64.0, 64.0, 0.0, 0.0, 1.0) + glMatrixMode(GL_MODELVIEW) + glClearColor(0.0, 0.0, 1.0, 1.0) +- glClear((GL_COLOR_BUFFER_BIT)) +- glXSwapBuffers(37134976, 41943041) + glCreateShader(GL_VERTEX_SHADER) = 7 + glShaderSource(7, 1, ('void main()\n{\n gl_Position = ftransform();\n}\n'), 0) + glCompileShader(7) + glCreateShader(GL_FRAGMENT_SHADER) = 8 + glShaderSource(8, 1, ('#version 120\nuniform vec4 color;\nvoid main()\n{\n gl_FragColor = color;\n}\n'), 0) + glCompileShader(8) + glCreateProgram() = 9 + glAttachShader(9, 7) + glAttachShader(9, 8) + glLinkProgram(9) + glUseProgram(9) + glGetUniformLocation(9, color) = 0 + glUniform4f(0, 0.0, 1.0, 0.0, 1.0) +- glBegin(GL_QUADS) +- glVertex2f(0.0, 0.0) +- glVertex2f(64.0, 0.0) +- glVertex2f(64.0, 64.0) +- glVertex2f(0.0, 64.0) +- glEnd() + glUseProgram(0) +- glXSwapBuffers(37134976, 41943041) + glGenTextures(1, (1)) + glBindTexture(GL_TEXTURE_2D, 1) + glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, blob(3)) + glEnable(GL_TEXTURE_2D) +- glBegin(GL_QUADS) +- glTexCoord2f(0.0, 0.0) +- glVertex2f(0.0, 0.0) +- glTexCoord2f(1.0, 0.0) +- glVertex2f(64.0, 0.0) +- glTexCoord2f(1.0, 1.0) +- glVertex2f(64.0, 64.0) +- glTexCoord2f(0.0, 1.0) +- glVertex2f(0.0, 64.0) +- glEnd() + glDisable(GL_TEXTURE_2D) +- glXSwapBuffers(37134976, 41943041) + glClearColor(1.0, 0.0, 0.0, 1.0) +- glClear((GL_COLOR_BUFFER_BIT)) +- glXSwapBuffers(37134976, 41943041) + glCreateShader(GL_VERTEX_SHADER) = 10 + glShaderSource(10, 1, ('void main()\n{\n gl_Position = ftransform();\n}\n'), 0) + glCompileShader(10) + glCreateShader(GL_FRAGMENT_SHADER) = 11 + glShaderSource(11, 1, ('#version 120\nuniform vec4 color;\nvoid main()\n{\n gl_FragColor = color;\n}\n'), 0) + glCompileShader(11) + glCreateProgram() = 12 + glAttachShader(12, 10) + glAttachShader(12, 11) + glLinkProgram(12) + glUseProgram(12) + glGetUniformLocation(12, color) = 0 + glUniform4f(0, 1.0, 0.0, 1.0, 1.0) +- glBegin(GL_QUADS) +- glVertex2f(0.0, 0.0) +- glVertex2f(64.0, 0.0) +- glVertex2f(64.0, 64.0) +- glVertex2f(0.0, 64.0) +- glEnd() + glUseProgram(0) +- glXSwapBuffers(37134976, 41943041) + glGenTextures(1, (2)) + glBindTexture(GL_TEXTURE_2D, 2) + glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, blob(3)) + glEnable(GL_TEXTURE_2D) +- glBegin(GL_QUADS) +- glTexCoord2f(0.0, 0.0) +- glVertex2f(0.0, 0.0) +- glTexCoord2f(1.0, 0.0) +- glVertex2f(64.0, 0.0) +- glTexCoord2f(1.0, 1.0) +- glVertex2f(64.0, 64.0) +- glTexCoord2f(0.0, 1.0) +- glVertex2f(0.0, 64.0) +- glEnd() + glDisable(GL_TEXTURE_2D) +- glXSwapBuffers(37134976, 41943041) + glXDestroyContext(37134976, 37241648) +""" diff --git a/cli/cli-trim-spec-no-side-effects.script b/cli/cli-trim-spec-no-side-effects.script new file mode 100644 index 0000000..aa4527c --- /dev/null +++ b/cli/cli-trim-spec-no-side-effects.script @@ -0,0 +1,97 @@ +# Trim trace to the final glxDestroyContext, eliminating almost everything + +apitrace trim --auto --trim-spec=no-side-effects --calls=88 glxsimple.trace + +# Verify that we actually trimmed what we wanted to (just calls with no side effects) + +apitrace diff --diff=python glxsimple.trace glxsimple-trim.trace +expect r""" glXChooseVisual(37134976, 0, (GLX_RGBA, GLX_RED_SIZE, GLX_RED_SIZE, GLX_GREEN_SIZE, GLX_RED_SIZE, GLX_BLUE_SIZE, GLX_RED_SIZE, GLX_ALPHA_SIZE, GLX_RED_SIZE, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, GLX_RED_SIZE, GLX_X_VISUAL_TYPE, GLX_DIRECT_COLOR, 0)) = ([37179128, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]) + glXCreateContext(37134976, ([37179128, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]), 0, True) = 37241648 + glXMakeCurrent(37134976, 41943041, 37241648) = True + glViewport(0, 0, 64, 64) + glMatrixMode(GL_PROJECTION) + glLoadIdentity() + glOrtho(0.0, 64.0, 64.0, 0.0, 0.0, 1.0) + glMatrixMode(GL_MODELVIEW) + glClearColor(0.0, 0.0, 1.0, 1.0) + glClear((GL_COLOR_BUFFER_BIT)) +- glXSwapBuffers(37134976, 41943041) + glCreateShader(GL_VERTEX_SHADER) = 7 + glShaderSource(7, 1, ('void main()\n{\n gl_Position = ftransform();\n}\n'), 0) + glCompileShader(7) + glCreateShader(GL_FRAGMENT_SHADER) = 8 + glShaderSource(8, 1, ('#version 120\nuniform vec4 color;\nvoid main()\n{\n gl_FragColor = color;\n}\n'), 0) + glCompileShader(8) + glCreateProgram() = 9 + glAttachShader(9, 7) + glAttachShader(9, 8) + glLinkProgram(9) + glUseProgram(9) + glGetUniformLocation(9, color) = 0 + glUniform4f(0, 0.0, 1.0, 0.0, 1.0) + glBegin(GL_QUADS) + glVertex2f(0.0, 0.0) + glVertex2f(64.0, 0.0) + glVertex2f(64.0, 64.0) + glVertex2f(0.0, 64.0) + glEnd() + glUseProgram(0) +- glXSwapBuffers(37134976, 41943041) + glGenTextures(1, (1)) + glBindTexture(GL_TEXTURE_2D, 1) + glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, blob(3)) + glEnable(GL_TEXTURE_2D) + glBegin(GL_QUADS) + glTexCoord2f(0.0, 0.0) + glVertex2f(0.0, 0.0) + glTexCoord2f(1.0, 0.0) + glVertex2f(64.0, 0.0) + glTexCoord2f(1.0, 1.0) + glVertex2f(64.0, 64.0) + glTexCoord2f(0.0, 1.0) + glVertex2f(0.0, 64.0) + glEnd() + glDisable(GL_TEXTURE_2D) +- glXSwapBuffers(37134976, 41943041) + glClearColor(1.0, 0.0, 0.0, 1.0) + glClear((GL_COLOR_BUFFER_BIT)) +- glXSwapBuffers(37134976, 41943041) + glCreateShader(GL_VERTEX_SHADER) = 10 + glShaderSource(10, 1, ('void main()\n{\n gl_Position = ftransform();\n}\n'), 0) + glCompileShader(10) + glCreateShader(GL_FRAGMENT_SHADER) = 11 + glShaderSource(11, 1, ('#version 120\nuniform vec4 color;\nvoid main()\n{\n gl_FragColor = color;\n}\n'), 0) + glCompileShader(11) + glCreateProgram() = 12 + glAttachShader(12, 10) + glAttachShader(12, 11) + glLinkProgram(12) + glUseProgram(12) + glGetUniformLocation(12, color) = 0 + glUniform4f(0, 1.0, 0.0, 1.0, 1.0) + glBegin(GL_QUADS) + glVertex2f(0.0, 0.0) + glVertex2f(64.0, 0.0) + glVertex2f(64.0, 64.0) + glVertex2f(0.0, 64.0) + glEnd() + glUseProgram(0) +- glXSwapBuffers(37134976, 41943041) + glGenTextures(1, (2)) + glBindTexture(GL_TEXTURE_2D, 2) + glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, blob(3)) + glEnable(GL_TEXTURE_2D) + glBegin(GL_QUADS) + glTexCoord2f(0.0, 0.0) + glVertex2f(0.0, 0.0) + glTexCoord2f(1.0, 0.0) + glVertex2f(64.0, 0.0) + glTexCoord2f(1.0, 1.0) + glVertex2f(64.0, 64.0) + glTexCoord2f(0.0, 1.0) + glVertex2f(0.0, 64.0) + glEnd() + glDisable(GL_TEXTURE_2D) +- glXSwapBuffers(37134976, 41943041) + glXDestroyContext(37134976, 37241648) +""" diff --git a/cli/cli-trim-spec-shaders.script b/cli/cli-trim-spec-shaders.script new file mode 100644 index 0000000..e7d2e0e --- /dev/null +++ b/cli/cli-trim-spec-shaders.script @@ -0,0 +1,97 @@ +# Trim trace to the final glxDestroyContext, eliminating almost everything + +apitrace trim --auto --trim-spec=shaders --calls=88 glxsimple.trace + +# Verify that we actually trimmed what we wanted to (just shader-generation calls) + +apitrace diff --diff=python glxsimple.trace glxsimple-trim.trace +expect r""" glXChooseVisual(37134976, 0, (GLX_RGBA, GLX_RED_SIZE, GLX_RED_SIZE, GLX_GREEN_SIZE, GLX_RED_SIZE, GLX_BLUE_SIZE, GLX_RED_SIZE, GLX_ALPHA_SIZE, GLX_RED_SIZE, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, GLX_RED_SIZE, GLX_X_VISUAL_TYPE, GLX_DIRECT_COLOR, 0)) = ([37179128, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]) + glXCreateContext(37134976, ([37179128, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]), 0, True) = 37241648 + glXMakeCurrent(37134976, 41943041, 37241648) = True + glViewport(0, 0, 64, 64) + glMatrixMode(GL_PROJECTION) + glLoadIdentity() + glOrtho(0.0, 64.0, 64.0, 0.0, 0.0, 1.0) + glMatrixMode(GL_MODELVIEW) + glClearColor(0.0, 0.0, 1.0, 1.0) + glClear((GL_COLOR_BUFFER_BIT)) + glXSwapBuffers(37134976, 41943041) +- glCreateShader(GL_VERTEX_SHADER) = 7 +- glShaderSource(7, 1, ('void main()\n{\n gl_Position = ftransform();\n}\n'), 0) +- glCompileShader(7) +- glCreateShader(GL_FRAGMENT_SHADER) = 8 +- glShaderSource(8, 1, ('#version 120\nuniform vec4 color;\nvoid main()\n{\n gl_FragColor = color;\n}\n'), 0) +- glCompileShader(8) +- glCreateProgram() = 9 +- glAttachShader(9, 7) +- glAttachShader(9, 8) +- glLinkProgram(9) +- glUseProgram(9) +- glGetUniformLocation(9, color) = 0 +- glUniform4f(0, 0.0, 1.0, 0.0, 1.0) + glBegin(GL_QUADS) + glVertex2f(0.0, 0.0) + glVertex2f(64.0, 0.0) + glVertex2f(64.0, 64.0) + glVertex2f(0.0, 64.0) + glEnd() + glUseProgram(0) + glXSwapBuffers(37134976, 41943041) + glGenTextures(1, (1)) + glBindTexture(GL_TEXTURE_2D, 1) + glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, blob(3)) + glEnable(GL_TEXTURE_2D) + glBegin(GL_QUADS) + glTexCoord2f(0.0, 0.0) + glVertex2f(0.0, 0.0) + glTexCoord2f(1.0, 0.0) + glVertex2f(64.0, 0.0) + glTexCoord2f(1.0, 1.0) + glVertex2f(64.0, 64.0) + glTexCoord2f(0.0, 1.0) + glVertex2f(0.0, 64.0) + glEnd() + glDisable(GL_TEXTURE_2D) + glXSwapBuffers(37134976, 41943041) + glClearColor(1.0, 0.0, 0.0, 1.0) + glClear((GL_COLOR_BUFFER_BIT)) + glXSwapBuffers(37134976, 41943041) +- glCreateShader(GL_VERTEX_SHADER) = 10 +- glShaderSource(10, 1, ('void main()\n{\n gl_Position = ftransform();\n}\n'), 0) +- glCompileShader(10) +- glCreateShader(GL_FRAGMENT_SHADER) = 11 +- glShaderSource(11, 1, ('#version 120\nuniform vec4 color;\nvoid main()\n{\n gl_FragColor = color;\n}\n'), 0) +- glCompileShader(11) +- glCreateProgram() = 12 +- glAttachShader(12, 10) +- glAttachShader(12, 11) +- glLinkProgram(12) +- glUseProgram(12) +- glGetUniformLocation(12, color) = 0 +- glUniform4f(0, 1.0, 0.0, 1.0, 1.0) + glBegin(GL_QUADS) + glVertex2f(0.0, 0.0) + glVertex2f(64.0, 0.0) + glVertex2f(64.0, 64.0) + glVertex2f(0.0, 64.0) + glEnd() + glUseProgram(0) + glXSwapBuffers(37134976, 41943041) + glGenTextures(1, (2)) + glBindTexture(GL_TEXTURE_2D, 2) + glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, blob(3)) + glEnable(GL_TEXTURE_2D) + glBegin(GL_QUADS) + glTexCoord2f(0.0, 0.0) + glVertex2f(0.0, 0.0) + glTexCoord2f(1.0, 0.0) + glVertex2f(64.0, 0.0) + glTexCoord2f(1.0, 1.0) + glVertex2f(64.0, 64.0) + glTexCoord2f(0.0, 1.0) + glVertex2f(0.0, 64.0) + glEnd() + glDisable(GL_TEXTURE_2D) + glXSwapBuffers(37134976, 41943041) + glXDestroyContext(37134976, 37241648) +""" diff --git a/cli/cli-trim-spec-textures.script b/cli/cli-trim-spec-textures.script new file mode 100644 index 0000000..1260837 --- /dev/null +++ b/cli/cli-trim-spec-textures.script @@ -0,0 +1,97 @@ +# Trim trace to the final glxDestroyContext, eliminating almost everything + +apitrace trim --auto --trim-spec=textures --calls=88 glxsimple.trace + +# Verify that we actually trimmed what we wanted to (just texture-generation calls) + +apitrace diff --diff=python glxsimple.trace glxsimple-trim.trace +expect r""" glXChooseVisual(37134976, 0, (GLX_RGBA, GLX_RED_SIZE, GLX_RED_SIZE, GLX_GREEN_SIZE, GLX_RED_SIZE, GLX_BLUE_SIZE, GLX_RED_SIZE, GLX_ALPHA_SIZE, GLX_RED_SIZE, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, GLX_RED_SIZE, GLX_X_VISUAL_TYPE, GLX_DIRECT_COLOR, 0)) = ([37179128, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]) + glXCreateContext(37134976, ([37179128, 34, 0, 24, 5, 16711680, 65280, 255, 256, 8]), 0, True) = 37241648 + glXMakeCurrent(37134976, 41943041, 37241648) = True + glViewport(0, 0, 64, 64) + glMatrixMode(GL_PROJECTION) + glLoadIdentity() + glOrtho(0.0, 64.0, 64.0, 0.0, 0.0, 1.0) + glMatrixMode(GL_MODELVIEW) + glClearColor(0.0, 0.0, 1.0, 1.0) + glClear((GL_COLOR_BUFFER_BIT)) + glXSwapBuffers(37134976, 41943041) + glCreateShader(GL_VERTEX_SHADER) = 7 + glShaderSource(7, 1, ('void main()\n{\n gl_Position = ftransform();\n}\n'), 0) + glCompileShader(7) + glCreateShader(GL_FRAGMENT_SHADER) = 8 + glShaderSource(8, 1, ('#version 120\nuniform vec4 color;\nvoid main()\n{\n gl_FragColor = color;\n}\n'), 0) + glCompileShader(8) + glCreateProgram() = 9 + glAttachShader(9, 7) + glAttachShader(9, 8) + glLinkProgram(9) + glUseProgram(9) + glGetUniformLocation(9, color) = 0 + glUniform4f(0, 0.0, 1.0, 0.0, 1.0) + glBegin(GL_QUADS) + glVertex2f(0.0, 0.0) + glVertex2f(64.0, 0.0) + glVertex2f(64.0, 64.0) + glVertex2f(0.0, 64.0) + glEnd() + glUseProgram(0) + glXSwapBuffers(37134976, 41943041) +- glGenTextures(1, (1)) + glBindTexture(GL_TEXTURE_2D, 1) +- glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, blob(3)) + glEnable(GL_TEXTURE_2D) + glBegin(GL_QUADS) + glTexCoord2f(0.0, 0.0) + glVertex2f(0.0, 0.0) + glTexCoord2f(1.0, 0.0) + glVertex2f(64.0, 0.0) + glTexCoord2f(1.0, 1.0) + glVertex2f(64.0, 64.0) + glTexCoord2f(0.0, 1.0) + glVertex2f(0.0, 64.0) + glEnd() + glDisable(GL_TEXTURE_2D) + glXSwapBuffers(37134976, 41943041) + glClearColor(1.0, 0.0, 0.0, 1.0) + glClear((GL_COLOR_BUFFER_BIT)) + glXSwapBuffers(37134976, 41943041) + glCreateShader(GL_VERTEX_SHADER) = 10 + glShaderSource(10, 1, ('void main()\n{\n gl_Position = ftransform();\n}\n'), 0) + glCompileShader(10) + glCreateShader(GL_FRAGMENT_SHADER) = 11 + glShaderSource(11, 1, ('#version 120\nuniform vec4 color;\nvoid main()\n{\n gl_FragColor = color;\n}\n'), 0) + glCompileShader(11) + glCreateProgram() = 12 + glAttachShader(12, 10) + glAttachShader(12, 11) + glLinkProgram(12) + glUseProgram(12) + glGetUniformLocation(12, color) = 0 + glUniform4f(0, 1.0, 0.0, 1.0, 1.0) + glBegin(GL_QUADS) + glVertex2f(0.0, 0.0) + glVertex2f(64.0, 0.0) + glVertex2f(64.0, 64.0) + glVertex2f(0.0, 64.0) + glEnd() + glUseProgram(0) + glXSwapBuffers(37134976, 41943041) +- glGenTextures(1, (2)) + glBindTexture(GL_TEXTURE_2D, 2) +- glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, blob(3)) + glEnable(GL_TEXTURE_2D) + glBegin(GL_QUADS) + glTexCoord2f(0.0, 0.0) + glVertex2f(0.0, 0.0) + glTexCoord2f(1.0, 0.0) + glVertex2f(64.0, 0.0) + glTexCoord2f(1.0, 1.0) + glVertex2f(64.0, 64.0) + glTexCoord2f(0.0, 1.0) + glVertex2f(0.0, 64.0) + glEnd() + glDisable(GL_TEXTURE_2D) + glXSwapBuffers(37134976, 41943041) + glXDestroyContext(37134976, 37241648) +"""