File: VK_Mesh_Zoo.py

package info (click to toggle)
renderdoc 1.24%2Bdfsg-1%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 105,156 kB
  • sloc: cpp: 759,405; ansic: 309,460; python: 26,606; xml: 22,599; java: 11,365; cs: 7,181; makefile: 6,707; yacc: 5,682; ruby: 4,648; perl: 3,461; sh: 2,354; php: 2,119; lisp: 1,835; javascript: 1,524; tcl: 1,068; ml: 747
file content (89 lines) | stat: -rw-r--r-- 3,098 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import rdtest
import struct
import renderdoc as rd


class VK_Mesh_Zoo(rdtest.TestCase):
    demos_test_name = 'VK_Mesh_Zoo'

    def __init__(self):
        rdtest.TestCase.__init__(self)
        self.zoo_helper = rdtest.Mesh_Zoo()

    def check_capture(self):
        self.zoo_helper.check_capture(self.capture_filename, self.controller)

        xfbDraw = self.find_action("XFB")

        if xfbDraw is not None:
            self.controller.SetFrameEvent(xfbDraw.next.eventId, False)

            postgs_data = self.get_postvs(xfbDraw.next, rd.MeshDataStage.GSOut, 0, 4)

            postgs_ref = {
                0: {
                    'vtx': 0,
                    'idx': 0,
                    'gl_PerVertex_var.gl_Position': [0.8, 0.8, 0.0, 1.0],
                    'uv1': [0.5, 0.5],
                },
                1: {
                    'vtx': 1,
                    'idx': 1,
                    'gl_PerVertex_var.gl_Position': [0.8, 0.9, 0.0, 1.0],
                    'uv1': [0.6, 0.6],
                },
                2: {
                    'vtx': 2,
                    'idx': 2,
                    'gl_PerVertex_var.gl_Position': [0.9, 0.8, 0.0, 1.0],
                    'uv1': [0.7, 0.7],
                },
                3: {
                    'vtx': 3,
                    'idx': 3,
                    'gl_PerVertex_var.gl_Position': [0.9, 0.9, 0.0, 1.0],
                    'uv1': [0.8, 0.8],
                },
            }

            self.check_mesh_data(postgs_ref, postgs_data)

            self.check(self.controller.GetPipelineState().GetRasterizedStream() == 2)

            xfbDraw = self.find_action("XFB After")

            self.controller.SetFrameEvent(xfbDraw.eventId, False)

            xfb = self.controller.GetVulkanPipelineState().transformFeedback

            bufs = []
            for i, fmt in enumerate(['8f', '4f', '24f']):
                xfbBuf = xfb.buffers[i]
                bufs.append(struct.unpack_from(fmt,
                                               self.controller.GetBufferData(xfbBuf.bufferResourceId, xfbBuf.byteOffset,
                                                                             0), 0))

            if bufs[0] != (1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0):
                raise rdtest.TestFailureException(
                    "XFB buffer 0 is not as expected: {}".format(bufs[0]))

            if bufs[1] != (9.0, 10.0, 11.0, 12.0):
                raise rdtest.TestFailureException(
                    "XFB buffer 1 is not as expected: {}".format(bufs[0]))

            vert_ref = [
                (0.8, 0.8),
                (0.8, 0.9),
                (0.9, 0.8),
                (0.9, 0.9),
            ]

            for i in range(4):
                vert = bufs[2][(i * 6):(i * 6 + 6)]

                ref = (vert_ref[i][0], vert_ref[i][1], 0.0, 1.0, 0.5 + 0.1 * i, 0.5 + 0.1 * i)

                if not rdtest.value_compare(vert, ref):
                    raise rdtest.TestFailureException(
                        "XFB buffer 2 vertex {} is not as expected: {}".format(i, vert))