Skip to content

Commit 4d7db03

Browse files
committed
Merge remote-tracking branch 'remotes/official/v3.8.7' into v3.8.8
2 parents 17d415b + 4d58dba commit 4d7db03

62 files changed

Lines changed: 1298 additions & 630 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/generate-vulkan-sdk-cache.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
vulkan_sdk_version:
77
description: 'Vulkan SDK version'
88
type: string
9-
default: '1.2.189.0'
9+
default: '1.3.243.0'
1010
required: true
1111

1212
jobs:

.github/workflows/native-compile-platforms.yml

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
name: "Windows"
1818
if:
1919
(! contains(github.event.pull_request.body, '[X] does not change any runtime related code or build configuration'))
20-
runs-on: windows-2019
20+
runs-on: windows-2022
2121
strategy:
2222
fail-fast: false
2323
matrix:
@@ -35,7 +35,7 @@ jobs:
3535
- name: Install deps
3636
uses: humbletim/setup-vulkan-sdk@523828e49cd4afabce369c39c7ee6543a2b7a735
3737
with:
38-
vulkan-query-version: 1.2.189.0
38+
vulkan-query-version: 1.3.243.0
3939
vulkan-components: Vulkan-Headers, Vulkan-Loader
4040
vulkan-use-cache: false
4141
- name: Compile win64
@@ -60,7 +60,7 @@ jobs:
6060
cd build-win64
6161
RES_DIR=${GITHUB_WORKSPACE//\\//}/templates/windows/build-win64
6262
COCOS_X_PATH=${GITHUB_WORKSPACE//\\//}/native
63-
cmake ../ -G"Visual Studio 16 2019" -DRES_DIR=$RES_DIR -DCOCOS_X_PATH=$COCOS_X_PATH -Ax64
63+
cmake ../ -G"Visual Studio 17 2022" -DRES_DIR=$RES_DIR -DCOCOS_X_PATH=$COCOS_X_PATH -Ax64
6464
cmake --build . --config ${{ matrix.config.buildtype }}
6565
echo "Compile Win64 ${{ matrix.config.buildtype }} Done!"
6666
@@ -258,7 +258,10 @@ jobs:
258258
fail-fast: false
259259
matrix:
260260
config:
261-
- { arch: arm64-v8a }
261+
- { arch: arm64-v8a, jsEngine: V8 }
262+
- { arch: arm64-v8a, jsEngine: ARK }
263+
- { arch: arm64-v8a, jsEngine: JSVM }
264+
262265
steps:
263266
- name: Show PATH env
264267
run: |
@@ -391,9 +394,22 @@ jobs:
391394
echo "set(CMAKE_CXX_STANDARD_REQUIRED ON)" >> build-oh/proj/cfg.cmake
392395
echo "set(COCOS_X_PATH $NATIVE_ROOT)" >> build-oh/proj/cfg.cmake
393396
echo "set(CC_EXECUTABLE_NAME \"\")" >> build-oh/proj/cfg.cmake
394-
echo "set(USE_SE_V8 ON)" >> build-oh/proj/cfg.cmake
395-
echo "set(USE_SE_NAPI OFF)" >> build-oh/proj/cfg.cmake
396-
echo "set(USE_SE_JSVM OFF)" >> build-oh/proj/cfg.cmake
397+
if [ "${{ matrix.config.jsEngine }}" = "V8" ]; then
398+
echo "=============== JsEngine: V8 ==============="
399+
echo "set(USE_SE_V8 ON)" >> build-oh/proj/cfg.cmake
400+
echo "set(USE_SE_NAPI OFF)" >> build-oh/proj/cfg.cmake
401+
echo "set(USE_SE_JSVM OFF)" >> build-oh/proj/cfg.cmake
402+
elif [ "${{ matrix.config.jsEngine }}" = "JSVM" ]; then
403+
echo "=============== JsEngine: JSVM ==============="
404+
echo "set(USE_SE_V8 OFF)" >> build-oh/proj/cfg.cmake
405+
echo "set(USE_SE_NAPI OFF)" >> build-oh/proj/cfg.cmake
406+
echo "set(USE_SE_JSVM ON)" >> build-oh/proj/cfg.cmake
407+
else
408+
echo "=============== JsEngine: ARK ==============="
409+
echo "set(USE_SE_V8 OFF)" >> build-oh/proj/cfg.cmake
410+
echo "set(USE_SE_NAPI ON)" >> build-oh/proj/cfg.cmake
411+
echo "set(USE_SE_JSVM OFF)" >> build-oh/proj/cfg.cmake
412+
fi
397413
398414
echo "=============== cat build-oh/proj/cfg.cmake ==============="
399415
cat build-oh/proj/cfg.cmake

.github/workflows/native-simulator-prebuilt.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262
- name: Install deps
6363
uses: humbletim/setup-vulkan-sdk@523828e49cd4afabce369c39c7ee6543a2b7a735
6464
with:
65-
vulkan-query-version: 1.2.189.0
65+
vulkan-query-version: 1.3.243.0
6666
vulkan-components: Vulkan-Headers, Vulkan-Loader
6767
vulkan-use-cache: false
6868
- name: gen simulator

.github/workflows/native-simulator.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ concurrency:
1414

1515
jobs:
1616
win_gen_simulator:
17-
runs-on: windows-2019
17+
runs-on: windows-2022
1818
if:
1919
(! contains(github.event.pull_request.body, '[X] does not change any runtime related code or build configuration'))
2020
name: Windows
@@ -36,7 +36,7 @@ jobs:
3636
- name: Install deps
3737
uses: humbletim/setup-vulkan-sdk@523828e49cd4afabce369c39c7ee6543a2b7a735
3838
with:
39-
vulkan-query-version: 1.2.189.0
39+
vulkan-query-version: 1.3.243.0
4040
vulkan-components: Vulkan-Headers, Vulkan-Loader
4141
vulkan-use-cache: false
4242
- name: gen simulator

EngineErrorMap.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1875,7 +1875,7 @@ We don't currently support conversion of \`CubicSplineQuatValue\`.
18751875

18761876
### 3936
18771877

1878-
Instancing/Batching enabled for non-baked skinning model '%s', this may result in unexpected rendering artifacts. Consider turning it off in the material if you do not intend to do this.
1878+
Instancing/Batching enabled for non-baked skinning model or used AnimationController '%s', this may result in unexpected rendering artifacts. Consider turning it off in the material if you do not intend to do this.
18791879

18801880
### 3937
18811881

cocos/2d/event/pointer-event-dispatcher.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { Node } from '../../scene-graph/node';
2626
import { Input, input } from '../../input';
2727
import { Event, EventMouse, EventTouch } from '../../input/types';
2828
import { DispatcherEventType, NodeEventProcessor } from '../../scene-graph/node-event-processor';
29-
import { js } from '../../core';
29+
import { CCObjectFlags, js } from '../../core';
3030
import { InputEventType } from '../../input/types/event-enum';
3131
import { EventDispatcherPriority, IEventDispatcher } from '../../input/input';
3232

@@ -44,7 +44,7 @@ const touchEvents = [
4444
InputEventType.TOUCH_END,
4545
InputEventType.TOUCH_CANCEL,
4646
];
47-
47+
const isDestroy = (node: Node): boolean => !!((node._objFlags & CCObjectFlags.Destroying) || (node._objFlags & CCObjectFlags.Destroyed));
4848
class PointerEventDispatcher implements IEventDispatcher {
4949
public priority: EventDispatcherPriority = EventDispatcherPriority.UI;
5050

@@ -227,9 +227,9 @@ class PointerEventDispatcher implements IEventDispatcher {
227227
private _sortByPriority (p1: NodeEventProcessor, p2: NodeEventProcessor): number {
228228
const node1: Node = p1.node;
229229
const node2: Node = p2.node;
230-
if (!p2 || !node2 || !node2.activeInHierarchy || !node2._getUITransformComp()) {
230+
if (!p2 || !node2 || isDestroy(node2) || !node2.activeInHierarchy || !node2._getUITransformComp()) {
231231
return -1;
232-
} else if (!p1 || !node1 || !node1.activeInHierarchy || !node1._getUITransformComp()) {
232+
} else if (!p1 || !node1 || isDestroy(node1) || !node1.activeInHierarchy || !node1._getUITransformComp()) {
233233
return 1;
234234
}
235235

cocos/asset/asset-manager/bin-package-unpack.ts

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,29 +27,69 @@
2727
|PACK_BIN_TYPE - 4bytes|
2828
|VERSION - 4bytes|
2929
|FILES_COUNT - 4bytes|
30+
|FILE_1_OFFSET - 4bytes|
3031
|FILE_1_SIZE - 4bytes|
32+
|FILE_2_OFFSET - 4bytes|
3133
|FILE_2_SIZE - 4bytes|
3234
...
35+
|FILE_N_OFFSET - 4bytes|
3336
|FILE_N_SIZE - 4bytes|
3437
|PACKED_BIN|
3538
*/
3639

3740
const PACK_BIN_TYPE = 'BINP';
38-
const VERSION = 1;
41+
const VERSION = 2;
3942
const UNIT_SIZE = 4;
4043
const LITTLE_ENDIAN = true;
4144

45+
type UnpackFunc = (arrayBuffer: ArrayBuffer, dataView: DataView) => Uint8Array[];
46+
4247
export function binPackageUnpack (arrayBuffer: ArrayBuffer): Uint8Array[] {
4348
const dataView = new DataView(arrayBuffer, 0, arrayBuffer.byteLength);
4449

4550
const packBinType = String.fromCharCode(...new Uint8Array(arrayBuffer.slice(0, UNIT_SIZE)));
46-
const version = dataView.getUint32(UNIT_SIZE, LITTLE_ENDIAN);
47-
if (packBinType !== PACK_BIN_TYPE || version !== VERSION) {
51+
if (packBinType !== PACK_BIN_TYPE) {
4852
throw new Error('Invalid bin package format');
4953
}
5054

55+
const version = dataView.getUint32(UNIT_SIZE, LITTLE_ENDIAN);
56+
if (version !== VERSION) {
57+
return compatibleOlderVersion(arrayBuffer, dataView, version);
58+
}
59+
const filesCount = dataView.getUint32(UNIT_SIZE * 2, LITTLE_ENDIAN);
60+
const filesPosition: { offset: number, size: number }[] = [];
61+
62+
const headOffset = UNIT_SIZE * (3 + filesCount * 2);
63+
for (let i = 0; i < filesCount; i++) {
64+
const offset = dataView.getUint32(UNIT_SIZE * (3 + i * 2), LITTLE_ENDIAN) + headOffset;
65+
const size = dataView.getUint32(UNIT_SIZE * (3 + i * 2 + 1), LITTLE_ENDIAN);
66+
filesPosition.push({ offset, size });
67+
}
68+
69+
return filesPosition.map(({ offset, size }) => new Uint8Array(arrayBuffer, offset, size));
70+
}
71+
72+
function compatibleOlderVersion (arrayBuffer: ArrayBuffer, dataView: DataView, version: number): Uint8Array[] {
73+
const map: Record<number, UnpackFunc> = {
74+
1: unpack_v1,
75+
};
76+
return map[version](arrayBuffer, dataView);
77+
}
78+
79+
/**
80+
* bin package format example.
81+
|PACK_BIN_TYPE - 4bytes|
82+
|VERSION - 4bytes|
83+
|FILES_COUNT - 4bytes|
84+
|FILE_1_SIZE - 4bytes|
85+
|FILE_2_SIZE - 4bytes|
86+
...
87+
|FILE_N_SIZE - 4bytes|
88+
|PACKED_BIN|
89+
*/
90+
function unpack_v1 (arrayBuffer: ArrayBuffer, dataView: DataView): Uint8Array[] {
5191
const filesCount = dataView.getUint32(UNIT_SIZE * 2, LITTLE_ENDIAN);
52-
const filesPosition: {offset: number, size: number}[] = [];
92+
const filesPosition: { offset: number, size: number }[] = [];
5393

5494
let offset = UNIT_SIZE * (3 + filesCount);
5595
for (let i = 0; i < filesCount; i++) {

cocos/asset/asset-manager/downloader.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,26 @@ const downloadArrayBuffer = (url: string, options: Record<string, any>, onComple
6969
};
7070

7171
const downloadCCONB = (url: string, options: Record<string, any>, onComplete: ((err: Error | null, data?: CCON | null) => void)): void => {
72-
url = url.replace('.cconb', '.bin');
73-
downloader._downloadArrayBuffer(url, options, (err, arrayBuffer: ArrayBuffer): void => {
74-
if (err) {
75-
onComplete(err);
76-
return;
77-
}
72+
const handleArrayBuffer = (arrayBuffer: ArrayBuffer, onComplete: ((err: Error | null, data?: CCON | null) => void)): void => {
7873
try {
7974
const ccon = decodeCCONBinary(new Uint8Array(arrayBuffer));
8075
onComplete(null, ccon);
8176
} catch (err) {
8277
onComplete(err as Error);
8378
}
79+
};
80+
downloader._downloadArrayBuffer(url.replace('.cconb', '.bin'), options, (err, arrayBuffer: ArrayBuffer): void => {
81+
if (err) {
82+
downloader._downloadArrayBuffer(url, options, (err, arrayBuffer: ArrayBuffer): void => {
83+
if (err) {
84+
onComplete(err);
85+
return;
86+
}
87+
handleArrayBuffer(arrayBuffer, onComplete);
88+
});
89+
return;
90+
}
91+
handleArrayBuffer(arrayBuffer, onComplete);
8492
});
8593
};
8694

cocos/rendering/custom/define.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -891,14 +891,6 @@ export function genHashValue (pass: RasterPass): void {
891891
hashCode += hashCombineKey(compute.shaderStageFlags);
892892
}
893893
}
894-
hashCode += hashCombineKey(pass.width);
895-
hashCode += hashCombineKey(pass.height);
896-
hashCode += hashCombineKey(pass.viewport.left);
897-
hashCode += hashCombineKey(pass.viewport.top);
898-
hashCode += hashCombineKey(pass.viewport.width);
899-
hashCode += hashCombineKey(pass.viewport.height);
900-
hashCode += hashCombineKey(pass.viewport.minDepth);
901-
hashCode += hashCombineKey(pass.viewport.maxDepth);
902894
hashCode += hashCombineKey(pass.showStatistics ? 1 : 0);
903895
pass.hashValue = hashCombineStr(hashCode);
904896
}

cocos/rendering/custom/web-pipeline.ts

Lines changed: 10 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -256,30 +256,9 @@ export class WebRenderQueueBuilder extends WebSetter implements RenderQueueBuild
256256

257257
addSceneOfCamera (camera: Camera, light: LightInfo, sceneFlags = SceneFlags.NONE, name = 'Camera'): void {
258258
const lightTarget = light.light;
259-
const sceneData = renderGraphPool.createSceneData(
260-
camera.scene,
261-
camera,
262-
sceneFlags,
263-
lightTarget && !(sceneFlags & SceneFlags.SHADOW_CASTER) ? CullingFlags.CAMERA_FRUSTUM | CullingFlags.LIGHT_BOUNDS : CullingFlags.CAMERA_FRUSTUM,
264-
lightTarget,
265-
);
266-
this._renderGraph.addVertex<RenderGraphValue.Scene>(RenderGraphValue.Scene, sceneData, name, '', renderGraphPool.createRenderData(), !DEBUG, this._vertID);
267-
const layoutName = this.getParentLayout();
268-
const scene: Scene = cclegacy.director.getScene();
269-
setCameraUBOValues(
270-
this,
271-
camera,
272-
this._pipeline,
273-
camera.scene || (scene ? scene.renderScene : null),
274-
layoutName,
275-
);
276-
if (sceneFlags & SceneFlags.SHADOW_CASTER || (lightTarget && lightTarget.type !== LightType.DIRECTIONAL)) {
277-
setShadowUBOLightView(this, camera, lightTarget!, light.level, layoutName);
278-
} else {
279-
setShadowUBOView(this, camera, layoutName);
280-
}
259+
this.addScene(camera, sceneFlags, lightTarget);
281260
}
282-
addScene (camera: Camera, sceneFlags = SceneFlags.NONE, light: Light | undefined = undefined, scene: RenderScene | undefined = undefined): SceneBuilder {
261+
addScene (camera: Camera, sceneFlags = SceneFlags.NONE, light: Light | undefined | null = null, scene: RenderScene | undefined = undefined): SceneBuilder {
283262
const sceneData = renderGraphPool.createSceneData(
284263
scene || camera.scene,
285264
camera,
@@ -407,6 +386,14 @@ export class WebRenderQueueBuilder extends WebSetter implements RenderQueueBuild
407386
}
408387
}
409388
addDraw2D (camera: Camera): void {
389+
const layoutName = this.getParentLayout();
390+
setCameraUBOValues(
391+
this,
392+
camera,
393+
this._pipeline,
394+
camera.scene,
395+
layoutName,
396+
);
410397
this._renderGraph.addVertex<RenderGraphValue.Blit>(
411398
RenderGraphValue.Blit,
412399
renderGraphPool.createBlit(emptyMaterial, this._renderGraph.N, SceneFlags.NONE, camera, BlitType.DRAW_2D),
@@ -419,15 +406,6 @@ export class WebRenderQueueBuilder extends WebSetter implements RenderQueueBuild
419406
}
420407
addProfiler (camera: Camera): void {
421408
const passOrSubpassId = this._renderGraph.getParent(this._vertID);
422-
this._renderGraph.addVertex<RenderGraphValue.Blit>(
423-
RenderGraphValue.Blit,
424-
renderGraphPool.createBlit(emptyMaterial, this._renderGraph.N, SceneFlags.NONE, camera, BlitType.DRAW_PROFILE),
425-
'DrawProfiler',
426-
'',
427-
emptyRenderData,
428-
!DEBUG,
429-
this._vertID,
430-
);
431409
const queueId = this._renderGraph.addVertex<RenderGraphValue.Queue>(
432410
RenderGraphValue.Queue,
433411
this._queue,

0 commit comments

Comments
 (0)