File builders/mesa-vulkan-amd-sh-2d041d5f1e9a731da3bfaec21494d90f4b560bbb/contrib/l2.patch added (mode: 100644) (index 0000000..18479f1) |
|
1 |
|
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c |
|
2 |
|
index 43cdf378531..00f31ece72f 100644 |
|
3 |
|
--- a/src/amd/vulkan/radv_cmd_buffer.c |
|
4 |
|
+++ b/src/amd/vulkan/radv_cmd_buffer.c |
|
5 |
|
@@ -3742,6 +3742,14 @@ radv_stage_flush(struct radv_cmd_buffer *cmd_buffer, VkPipelineStageFlags src_st |
|
6 |
|
} |
|
7 |
|
} |
|
8 |
|
|
|
9 |
|
+static bool |
|
10 |
|
+can_skip_buffer_l2_flushes(struct radv_device *device) |
|
11 |
|
+{ |
|
12 |
|
+ return device->physical_device->rad_info.chip_class == GFX9 || |
|
13 |
|
+ (device->physical_device->rad_info.chip_class == GFX10 && |
|
14 |
|
+ !device->physical_device->rad_info.tcc_rb_non_coherent); |
|
15 |
|
+} |
|
16 |
|
+ |
|
17 |
|
/* |
|
18 |
|
* In vulkan barriers have two kinds of operations: |
|
19 |
|
* |
|
20 |
|
@@ -3873,8 +3881,8 @@ radv_dst_access_flush(struct radv_cmd_buffer *cmd_buffer, VkAccessFlags dst_flag |
|
21 |
|
|
|
22 |
|
/* All the L2 invalidations below are not the CB/DB. So if there are no incoherent images |
|
23 |
|
* in the L2 cache in CB/DB mode then they are already usable from all the other L2 clients. */ |
|
24 |
|
- image_is_coherent |= cmd_buffer->device->physical_device->rad_info.chip_class >= GFX9 && |
|
25 |
|
- !cmd_buffer->state.rb_noncoherent_dirty; |
|
26 |
|
+ image_is_coherent |= |
|
27 |
|
+ can_skip_buffer_l2_flushes(cmd_buffer->device) && !cmd_buffer->state.rb_noncoherent_dirty; |
|
28 |
|
|
|
29 |
|
u_foreach_bit(b, dst_flags) |
|
30 |
|
{ |
|
31 |
|
@@ -4765,8 +4773,7 @@ radv_EndCommandBuffer(VkCommandBuffer commandBuffer) |
|
32 |
|
/* Flush noncoherent images on GFX9+ so we can assume they're clean on the start of a |
|
33 |
|
* command buffer. |
|
34 |
|
*/ |
|
35 |
|
- if (cmd_buffer->state.rb_noncoherent_dirty && |
|
36 |
|
- cmd_buffer->device->physical_device->rad_info.chip_class >= GFX9) |
|
37 |
|
+ if (cmd_buffer->state.rb_noncoherent_dirty && can_skip_buffer_l2_flushes(cmd_buffer->device)) |
|
38 |
|
cmd_buffer->state.flush_bits |= radv_src_access_flush( |
|
39 |
|
cmd_buffer, |
|
40 |
|
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, |
File builders/mesa-vulkan-amd-sh-2d041d5f1e9a731da3bfaec21494d90f4b560bbb/contrib/x86_64_amdgpu_linux_gnu_vulkan_x11_drm_gcc.sh changed (mode: 100755) (index 027e817..d25a5da) |
... |
... |
fi |
78 |
78 |
#=============================================================================== |
#=============================================================================== |
79 |
79 |
# patch source |
# patch source |
80 |
80 |
cp -f -i $src_dir/contrib/12782.patch $src_dir |
cp -f -i $src_dir/contrib/12782.patch $src_dir |
|
81 |
|
cp -f -i $src_dir/contrib/l2.patch $src_dir |
81 |
82 |
printf 'PATCHING...\n' |
printf 'PATCHING...\n' |
82 |
83 |
(cd $src_dir;patch -N -p 1 -i $src_dir/12782.patch) |
(cd $src_dir;patch -N -p 1 -i $src_dir/12782.patch) |
|
84 |
|
(cd $src_dir;patch -N -p 1 -i $src_dir/l2.patch) |
83 |
85 |
printf 'DONE\n' |
printf 'DONE\n' |
84 |
86 |
#=============================================================================== |
#=============================================================================== |
85 |
87 |
|
|