Beispiel #1
0
    def retrace_function_body(self, function):
        is_array_pointer = function.name in self.array_pointer_function_names
        is_draw_array = function.name in self.draw_array_function_names
        is_draw_elements = function.name in self.draw_elements_function_names

        if is_array_pointer or is_draw_array or is_draw_elements:
            print '    if (glretrace::parser.version < 1) {'

            if is_array_pointer or is_draw_array:
                print '        GLint __array_buffer = 0;'
                print '        glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &__array_buffer);'
                print '        if (!__array_buffer) {'
                self.fail_function(function)
                print '        }'

            if is_draw_elements:
                print '        GLint __element_array_buffer = 0;'
                print '        glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &__element_array_buffer);'
                print '        if (!__element_array_buffer) {'
                self.fail_function(function)
                print '        }'

            print '    }'

        Retracer.retrace_function_body(self, function)
Beispiel #2
0
    def retrace_function_body(self, function):
        is_array_pointer = function.name in self.array_pointer_function_names
        is_draw_array = function.name in self.draw_array_function_names
        is_draw_elements = function.name in self.draw_elements_function_names

        if is_array_pointer or is_draw_array or is_draw_elements:
            print '    if (Trace::Parser::version < 1) {'

            if is_array_pointer or is_draw_array:
                print '        GLint __array_buffer = 0;'
                print '        glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &__array_buffer);'
                print '        if (!__array_buffer) {'
                self.fail_function(function)
                print '        }'

            if is_draw_elements:
                print '        GLint __element_array_buffer = 0;'
                print '        glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &__element_array_buffer);'
                print '        if (!__element_array_buffer) {'
                self.fail_function(function)
                print '        }'
            
            print '    }'

        Retracer.retrace_function_body(self, function)
Beispiel #3
0
    def retrace_function_body(self, function):
        is_array_pointer = function.name in self.array_pointer_function_names
        is_draw_array = function.name in self.draw_array_function_names
        is_draw_elements = function.name in self.draw_elements_function_names

        if is_array_pointer or is_draw_array or is_draw_elements:
            print '    if (glretrace::parser.version < 1) {'

            if is_array_pointer or is_draw_array:
                print '        GLint __array_buffer = 0;'
                print '        glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &__array_buffer);'
                print '        if (!__array_buffer) {'
                self.fail_function(function)
                print '        }'

            if is_draw_elements:
                print '        GLint __element_array_buffer = 0;'
                print '        glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &__element_array_buffer);'
                print '        if (!__element_array_buffer) {'
                self.fail_function(function)
                print '        }'
            
            print '    }'

        Retracer.retrace_function_body(self, function)

        if function.name in ('glFlush', 'glFinish'):
            print '    if (!glretrace::double_buffer) {'
            print '        glretrace::frame_complete(call.no);'
            print '    }'

        if function.name == 'glReadPixels':
            print '    glFinish();'
            print '    glretrace::snapshot(call.no);'
Beispiel #4
0
    def retrace_function_body(self, function):
        is_array_pointer = function.name in self.array_pointer_function_names
        is_draw_array = function.name in self.draw_array_function_names
        is_draw_elements = function.name in self.draw_elements_function_names

        if is_array_pointer or is_draw_array or is_draw_elements:
            print '    if (glretrace::parser.version < 1) {'

            if is_array_pointer or is_draw_array:
                print '        GLint __array_buffer = 0;'
                print '        glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &__array_buffer);'
                print '        if (!__array_buffer) {'
                self.fail_function(function)
                print '        }'

            if is_draw_elements:
                print '        GLint __element_array_buffer = 0;'
                print '        glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &__element_array_buffer);'
                print '        if (!__element_array_buffer) {'
                self.fail_function(function)
                print '        }'

            print '    }'

        Retracer.retrace_function_body(self, function)

        if function.name in ('glFlush', 'glFinish'):
            print '    if (!glretrace::double_buffer) {'
            print '        glretrace::frame_complete(call.no);'
            print '    }'

        if function.name == 'glReadPixels':
            print '    glFinish();'
            print '    glretrace::snapshot(call.no);'
Beispiel #5
0
    def retrace_function_body(self, function):
        is_array_pointer = function.name in self.array_pointer_function_names
        is_draw_array = function.name in self.draw_array_function_names
        is_draw_elements = function.name in self.draw_elements_function_names
        is_misc_draw = function.name in self.misc_draw_function_names

        if is_array_pointer or is_draw_array or is_draw_elements:
            print "    if (glretrace::parser.version < 1) {"

            if is_array_pointer or is_draw_array:
                print "        GLint __array_buffer = 0;"
                print "        glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &__array_buffer);"
                print "        if (!__array_buffer) {"
                self.fail_function(function)
                print "        }"

            if is_draw_elements:
                print "        GLint __element_array_buffer = 0;"
                print "        glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &__element_array_buffer);"
                print "        if (!__element_array_buffer) {"
                self.fail_function(function)
                print "        }"

            print "    }"

        # When no pack buffer object is bound, the pack functions are no-ops.
        if function.name in self.pack_function_names:
            print "    GLint __pack_buffer = 0;"
            print "    glGetIntegerv(GL_PIXEL_PACK_BUFFER_BINDING, &__pack_buffer);"
            print "    if (!__pack_buffer) {"
            if function.name == "glReadPixels":
                print "    glFinish();"
                print "    if (glretrace::snapshot_frequency == glretrace::FREQUENCY_FRAME ||"
                print "        glretrace::snapshot_frequency == glretrace::FREQUENCY_FRAMEBUFFER) {"
                print "        glretrace::snapshot(call.no);"
                print "    }"
            print "        return;"
            print "    }"

        # Pre-snapshots
        if function.name in self.bind_framebuffer_function_names:
            print "    if (glretrace::snapshot_frequency == glretrace::FREQUENCY_FRAMEBUFFER) {"
            print "        glretrace::snapshot(call.no - 1);"
            print "    }"
        if function.name == "glFrameTerminatorGREMEDY":
            print "    glretrace::frame_complete(call);"
            return

        Retracer.retrace_function_body(self, function)

        # Post-snapshots
        if function.name in ("glFlush", "glFinish"):
            print "    if (!glretrace::double_buffer) {"
            print "        glretrace::frame_complete(call);"
            print "    }"
        if is_draw_array or is_draw_elements or is_misc_draw:
            print "    if (glretrace::snapshot_frequency == glretrace::FREQUENCY_DRAW) {"
            print "        glretrace::snapshot(call.no);"
            print "    }"
Beispiel #6
0
    def retrace_function_body(self, function):
        is_array_pointer = function.name in self.array_pointer_function_names
        is_draw_array = function.name in self.draw_array_function_names
        is_draw_elements = function.name in self.draw_elements_function_names
        is_misc_draw = function.name in self.misc_draw_function_names

        if is_array_pointer or is_draw_array or is_draw_elements:
            print '    if (glretrace::parser.version < 1) {'

            if is_array_pointer or is_draw_array:
                print '        GLint __array_buffer = 0;'
                print '        glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &__array_buffer);'
                print '        if (!__array_buffer) {'
                self.fail_function(function)
                print '        }'

            if is_draw_elements:
                print '        GLint __element_array_buffer = 0;'
                print '        glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &__element_array_buffer);'
                print '        if (!__element_array_buffer) {'
                self.fail_function(function)
                print '        }'
            
            print '    }'

        # When no pack buffer object is bound, the pack functions are no-ops.
        if function.name in self.pack_function_names:
            print '    GLint __pack_buffer = 0;'
            print '    glGetIntegerv(GL_PIXEL_PACK_BUFFER_BINDING, &__pack_buffer);'
            print '    if (!__pack_buffer) {'
            if function.name == 'glReadPixels':
                print '    glFinish();'
                print '    if (glretrace::snapshot_frequency == glretrace::FREQUENCY_FRAME ||'
                print '        glretrace::snapshot_frequency == glretrace::FREQUENCY_FRAMEBUFFER) {'
                print '        glretrace::snapshot(call.no);'
                print '    }'
            print '        return;'
            print '    }'

        # Pre-snapshots
        if function.name in self.bind_framebuffer_function_names:
            print '    if (glretrace::snapshot_frequency == glretrace::FREQUENCY_FRAMEBUFFER) {'
            print '        glretrace::snapshot(call.no - 1);'
            print '    }'
        if function.name == 'glFrameTerminatorGREMEDY':
            print '    glretrace::frame_complete(call);'
            return

        Retracer.retrace_function_body(self, function)

        # Post-snapshots
        if function.name in ('glFlush', 'glFinish'):
            print '    if (!glretrace::double_buffer) {'
            print '        glretrace::frame_complete(call);'
            print '    }'
        if is_draw_array or is_draw_elements or is_misc_draw:
            print '    if (glretrace::snapshot_frequency == glretrace::FREQUENCY_DRAW) {'
            print '        glretrace::snapshot(call.no);'
            print '    }'