From dfc4551b0d2c0bf8f448d75e61e0915c4088f5df Mon Sep 17 00:00:00 2001 From: Andrew0229 Date: Sun, 25 Aug 2024 01:52:56 +0800 Subject: [PATCH] update readme Signed-off-by: Andrew0229 --- README_OpenHarmony.md | 56 +++++++++++------- .../VkLayer_khronos_validation.json | 2 +- scripts/ohos-patches/Vulkan-Headers.patch | Bin 9936 -> 4718 bytes .../Vulkan-Utility-Libraries.patch | Bin 1472 -> 318 bytes scripts/ohos-patches/glslang.patch | 13 ---- 5 files changed, 36 insertions(+), 35 deletions(-) delete mode 100644 scripts/ohos-patches/glslang.patch diff --git a/README_OpenHarmony.md b/README_OpenHarmony.md index 44d0ba694..390a1f8e0 100644 --- a/README_OpenHarmony.md +++ b/README_OpenHarmony.md @@ -25,7 +25,7 @@ Vulkan-ValidationLayers被实现为一个Vulkan Layer,由Vulkan-Loader加载 hdc target mount #root模式下,开启权限 hdc shell mkdir /system/etc/vulkan/implicity.d/ #为隐式层创建文件夹 hdc file push VkLayer_khronos_validation.json /system/etc/vulkan/implicity.d/ #推送json文件到隐式层下 - hdc file push libVkLayer_khronos_validation.so /system/lib{64} + hdc file push libVkLayer_khronos_validation.so /system/lib64 hdc shell reboot #重启设备 ``` ### 三方应用 @@ -46,6 +46,26 @@ Vulkan-ValidationLayers被实现为一个Vulkan Layer,由Vulkan-Loader加载 ![usermode-use-debug-layer-1.jpg](docs/images/usermode-use-debug-layer-1.jpg) + Note: 当前Vulkan-Loader模块不支持直接读取rawfile,需要通过js层将json文件复制到应用的sandbox路径下. +``` + // 在Index.ets文件中 + import fs from '@ohos.file.fs'; + // ...... + aboutToAppear(): void { // Copy VkLayer_khronos_validation.json to hap sandbox + let path = getContext(this).filesDir; + if (!fs.accessSync(path)) { + fs.mkdirSync(path); + } + + buffer = getContext(this).resourceManager.getRawFileContentSync('VkLayer_khronos_validation.json'); + file = fs.openSync(path + '/VkLayer_khronos_validation.json', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); + fs.writeSync(file.fd, buffer.buffer); + } + // ...... + +``` + + 工程中路径:{your_project}\entry\src\main\resources\rawfile\VkLayer_khronos_validation.json hdc开发视角下json文件的路径:/data/app/el2/100/base/{your_pakage_name}/file/VkLayer_khronos_validation.json @@ -80,6 +100,12 @@ hdc开发视角下so文件的路径:/data/app/el1/bundle/public/{your_pakage_n hdc shell param set debug.graphic.debug_hap '' ``` +##### 5. 查看Vulkan-ValidationLayers的打印 + +``` + hdc shell + hilog | grep VulkanValidationLayer +``` ## 构建指导 @@ -108,7 +134,7 @@ e.g.: ``` set OHOS_SDK=C:/Users/Administrator/AppData/Local/OpenHarmony/Sdk/12/native set VVL_DIR=E:/WorkSpace/Vulkan/VVL/third_party_vulkan-validationlayers - set BUILD_THREADS=8 + set BUILD_THREADS=64 set buildDir=%VVL_DIR%/build-ohos/intermediate set libDir=%VVL_DIR%/build-ohos/libs set PATH=%OHOS_SDK%/build-tools/cmake/bin;%PATH% @@ -120,25 +146,19 @@ e.g.: ``` cd /d %VVL_DIR% - - cmake -S . ^ - -B %buildDir% ^ - -G Ninja ^ - -D OHOS_STL=c++_static ^ - -D CMAKE_INSTALL_LIBDIR=%libDir% ^ - -D CMAKE_TOOLCHAIN_FILE=%OHOS_SDK%/build/cmake/ohos.toolchain.cmake ^ - -D CMAKE_BUILD_TYPE=Release ^ - -D VVL_CODEGEN=OFF ^ - -D UPDATE_DEPS=ON ^ - -D UPDATE_DEPS_DIR=%buildDir% + python scripts/update_deps.py --dir %buildDir% --known_good_dir scripts --no-build ``` 将[patches](scripts/ohos-patches)逐一应用到对应的依赖仓中 e.g.: ``` - cd build-ohos\intermediate\Vulkan-Headers - git apply Vulkan-Headers.patch + cd /d %VVL_DIR%/build-ohos/intermediate/SPIRV-Tools + git apply ../../../scripts/ohos-patches/SPIRV-Tools.patch + cd /d %VVL_DIR%/build-ohos/intermediate/Vulkan-Headers + git apply ../../../scripts/ohos-patches/Vulkan-Headers.patch + cd /d %VVL_DIR%/build-ohos/intermediate/Vulkan-Utility-Libraries + git apply ../../../scripts/ohos-patches/Vulkan-Utility-Libraries.patch ``` @@ -160,12 +180,6 @@ so生成位置:build-ohos\libs -D UPDATE_DEPS=ON ^ -D UPDATE_DEPS_DIR=%buildDir% - - cmake ^ - --build %buildDir% ^ - --target vvl_codegen - - cmake ^ --build %buildDir% ^ --parallel %BUILD_THREADS% diff --git a/scripts/ohos-patches/VkLayer_khronos_validation.json b/scripts/ohos-patches/VkLayer_khronos_validation.json index 6f8ff1a42..58728ef91 100644 --- a/scripts/ohos-patches/VkLayer_khronos_validation.json +++ b/scripts/ohos-patches/VkLayer_khronos_validation.json @@ -3,7 +3,7 @@ "layer": { "name": "VK_LAYER_KHRONOS_validation", "type": "GLOBAL", - "library_path": "/data/storage/el1/bundle/lib/arm64/libVkLayer_khronos_validation.so", + "library_path": "libVkLayer_khronos_validation.so", "api_version": "1.3.275", "implementation_version": "1", "description": "Khronos Validation Layer", diff --git a/scripts/ohos-patches/Vulkan-Headers.patch b/scripts/ohos-patches/Vulkan-Headers.patch index 7a5adaaa45d272bcaa37e4145020fe8aa16d5748..7dc9393d20d789f0de3c0b09e28abe808293e713 100644 GIT binary patch literal 4718 zcmd5;SR;#sZk1tza<^B*rP zU?F1hYKdmgZl12@`6^`|yhlGZ#Q$brsq2xc;Y|sq-o1mVb93*ShCZf4JTnap7uO)B ziK%IgY%1&|?!~9R!0pugZGk^COb64^2$QNE_|t7`3On~!cZ?g|w5U1J zuea!m3RR0T!~nXXX3AowUjIx8tdVuSECd7ytP#Xkfe9ovIgJD+Fw}H3 z7MQ>RfhnTeA~0bI0^|BZ`&7owVq*9YumIy&t(;c61=;jZ(6&hdEwe_2=_)G z!nQ-A-%>{>`ULOoMJ>d-E26DkonKzIFQBc-n@^wgkR*~iE3|8{EcZ370wAKO4e^JbMQIK)a z01gLzSgcYSaSl+oZqa7qT?ZQ!<~|p)1T$U}6J7=_z8>2C1fvg14?e8tsu)!V;GdmF zkQmN)k%6C*cA-a`m|QBBZDBeZn@$lOCkk)8Er_f)?#p|n&M^1j4rtlLX)_jbff z{qVZNSDTzTu9&K08xwX#H~Xnau3pzrxJdl%wJM7qmp=H-ZR>-QsPZ!rx_1Z%U1eXBy3Pq0V11h(O+Q4kK_)|_sh87qmhzb-Q|cZ&FVloVmr zc&ZM`NES&tiWWIb|2oO}@N1IC6@&XckGoa+0J?k1W0t)YG0sJ8h!sXen?IC&-+{J& z+PTSY`ZQL%+&-@_*=3I8guq literal 9936 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 diff --git a/scripts/ohos-patches/glslang.patch b/scripts/ohos-patches/glslang.patch deleted file mode 100644 index b63c9bbe4..000000000 --- a/scripts/ohos-patches/glslang.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 5cdd3e31..6931b850 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -30,7 +30,7 @@ - # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - # POSSIBILITY OF SUCH DAMAGE. --cmake_minimum_required(VERSION 3.17.2) -+cmake_minimum_required(VERSION 3.16.5) - project(glslang) - - if (CMAKE_VERSION VERSION_LESS "3.21") -- Gitee