Rev 5271 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5271 | Rev 6104 | ||
---|---|---|---|
Line 32... | Line 32... | ||
32 | #define RADEON_BENCHMARK_ITERATIONS 1024 |
32 | #define RADEON_BENCHMARK_ITERATIONS 1024 |
33 | #define RADEON_BENCHMARK_COMMON_MODES_N 17 |
33 | #define RADEON_BENCHMARK_COMMON_MODES_N 17 |
Line 34... | Line 34... | ||
34 | 34 | ||
35 | static int radeon_benchmark_do_move(struct radeon_device *rdev, unsigned size, |
35 | static int radeon_benchmark_do_move(struct radeon_device *rdev, unsigned size, |
36 | uint64_t saddr, uint64_t daddr, |
36 | uint64_t saddr, uint64_t daddr, |
- | 37 | int flag, int n, |
|
37 | int flag, int n) |
38 | struct reservation_object *resv) |
38 | { |
39 | { |
39 | unsigned long start_jiffies; |
40 | unsigned long start_jiffies; |
40 | unsigned long end_jiffies; |
41 | unsigned long end_jiffies; |
41 | struct radeon_fence *fence = NULL; |
42 | struct radeon_fence *fence = NULL; |
Line 45... | Line 46... | ||
45 | for (i = 0; i < n; i++) { |
46 | for (i = 0; i < n; i++) { |
46 | switch (flag) { |
47 | switch (flag) { |
47 | case RADEON_BENCHMARK_COPY_DMA: |
48 | case RADEON_BENCHMARK_COPY_DMA: |
48 | fence = radeon_copy_dma(rdev, saddr, daddr, |
49 | fence = radeon_copy_dma(rdev, saddr, daddr, |
49 | size / RADEON_GPU_PAGE_SIZE, |
50 | size / RADEON_GPU_PAGE_SIZE, |
50 | NULL); |
51 | resv); |
51 | break; |
52 | break; |
52 | case RADEON_BENCHMARK_COPY_BLIT: |
53 | case RADEON_BENCHMARK_COPY_BLIT: |
53 | fence = radeon_copy_blit(rdev, saddr, daddr, |
54 | fence = radeon_copy_blit(rdev, saddr, daddr, |
54 | size / RADEON_GPU_PAGE_SIZE, |
55 | size / RADEON_GPU_PAGE_SIZE, |
55 | NULL); |
56 | resv); |
56 | break; |
57 | break; |
57 | default: |
58 | default: |
58 | DRM_ERROR("Unknown copy method\n"); |
59 | DRM_ERROR("Unknown copy method\n"); |
59 | return -EINVAL; |
60 | return -EINVAL; |
60 | } |
61 | } |
Line 90... | Line 91... | ||
90 | struct radeon_bo *sobj = NULL; |
91 | struct radeon_bo *sobj = NULL; |
91 | uint64_t saddr, daddr; |
92 | uint64_t saddr, daddr; |
92 | int r, n; |
93 | int r, n; |
93 | int time; |
94 | int time; |
Line 94... | Line -... | ||
94 | - | ||
95 | - | ||
96 | ENTER(); |
- | |
97 | 95 | ||
98 | n = RADEON_BENCHMARK_ITERATIONS; |
96 | n = RADEON_BENCHMARK_ITERATIONS; |
99 | r = radeon_bo_create(rdev, size, PAGE_SIZE, true, sdomain, 0, NULL, NULL, &sobj); |
97 | r = radeon_bo_create(rdev, size, PAGE_SIZE, true, sdomain, 0, NULL, NULL, &sobj); |
100 | if (r) { |
98 | if (r) { |
101 | goto out_cleanup; |
99 | goto out_cleanup; |
Line 118... | Line 116... | ||
118 | r = radeon_bo_pin(dobj, ddomain, &daddr); |
116 | r = radeon_bo_pin(dobj, ddomain, &daddr); |
119 | radeon_bo_unreserve(dobj); |
117 | radeon_bo_unreserve(dobj); |
120 | if (r) { |
118 | if (r) { |
121 | goto out_cleanup; |
119 | goto out_cleanup; |
122 | } |
120 | } |
123 | dbgprintf("done\n"); |
- | |
Line 124... | Line 121... | ||
124 | 121 | ||
125 | if (rdev->asic->copy.dma) { |
122 | if (rdev->asic->copy.dma) { |
126 | time = radeon_benchmark_do_move(rdev, size, saddr, daddr, |
123 | time = radeon_benchmark_do_move(rdev, size, saddr, daddr, |
- | 124 | RADEON_BENCHMARK_COPY_DMA, n, |
|
127 | RADEON_BENCHMARK_COPY_DMA, n); |
125 | dobj->tbo.resv); |
128 | if (time < 0) |
126 | if (time < 0) |
129 | goto out_cleanup; |
127 | goto out_cleanup; |
130 | if (time > 0) |
128 | if (time > 0) |
131 | radeon_benchmark_log_results(n, size, time, |
129 | radeon_benchmark_log_results(n, size, time, |
132 | sdomain, ddomain, "dma"); |
130 | sdomain, ddomain, "dma"); |
Line 133... | Line 131... | ||
133 | } |
131 | } |
134 | 132 | ||
135 | if (rdev->asic->copy.blit) { |
133 | if (rdev->asic->copy.blit) { |
- | 134 | time = radeon_benchmark_do_move(rdev, size, saddr, daddr, |
|
136 | time = radeon_benchmark_do_move(rdev, size, saddr, daddr, |
135 | RADEON_BENCHMARK_COPY_BLIT, n, |
137 | RADEON_BENCHMARK_COPY_BLIT, n); |
136 | dobj->tbo.resv); |
138 | if (time < 0) |
137 | if (time < 0) |
139 | goto out_cleanup; |
138 | goto out_cleanup; |
140 | if (time > 0) |
139 | if (time > 0) |
Line 161... | Line 160... | ||
161 | } |
160 | } |
Line 162... | Line 161... | ||
162 | 161 | ||
163 | if (r) { |
162 | if (r) { |
164 | DRM_ERROR("Error while benchmarking BO move.\n"); |
163 | DRM_ERROR("Error while benchmarking BO move.\n"); |
165 | } |
- | |
166 | - | ||
167 | LEAVE(); |
- | |
168 | 164 | } |
|
Line 169... | Line 165... | ||
169 | } |
165 | } |
170 | 166 | ||
171 | void radeon_benchmark(struct radeon_device *rdev, int test_number) |
167 | void radeon_benchmark(struct radeon_device *rdev, int test_number) |