Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions cocos/2d/renderer/mesh-buffer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import { JSB } from 'internal:constants';
import { Device, BufferUsageBit, MemoryUsageBit, Attribute, Buffer, BufferInfo, InputAssembler, InputAssemblerInfo } from '../../gfx';
import { getAttributeStride } from './vertex-format';
import { sys, getError, warnID, assertIsTrue } from '../../core';
import { sys, getError, warnID, assertIsTrue, cclegacy } from '../../core';
import { NativeUIMeshBuffer } from './native-2d';

interface IIARef {
Expand Down Expand Up @@ -420,15 +420,17 @@ export class MeshBuffer {
if (sys.__isWebIOS14OrIPadOS14Env || !this._iaPool[0]) {
const vbStride = this._vertexFormatBytes = this._floatsPerVertex * Float32Array.BYTES_PER_ELEMENT;
const ibStride = Uint16Array.BYTES_PER_ELEMENT;
const enabledDeviceMem = (cclegacy.rendering && cclegacy.rendering.enableEffectImport)
? MemoryUsageBit.DEVICE : MemoryUsageBit.HOST | MemoryUsageBit.DEVICE;
const vertexBuffer = device.createBuffer(new BufferInfo(
BufferUsageBit.VERTEX | BufferUsageBit.TRANSFER_DST,
MemoryUsageBit.HOST | MemoryUsageBit.DEVICE,
enabledDeviceMem,
vbStride,
vbStride,
));
indexBuffer = device.createBuffer(new BufferInfo(
BufferUsageBit.INDEX | BufferUsageBit.TRANSFER_DST,
MemoryUsageBit.HOST | MemoryUsageBit.DEVICE,
enabledDeviceMem,
ibStride,
ibStride,
));
Expand Down
3 changes: 3 additions & 0 deletions cocos/gfx/base/descriptor-set.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ export abstract class DescriptorSet extends GFXObject {
/** @mangle */
protected _isDirty = false;

get gpuDescriptorSet (): any {
return {};
}
constructor () {
super(ObjectType.DESCRIPTOR_SET);
}
Expand Down
4 changes: 4 additions & 0 deletions cocos/gfx/base/input-assembler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ export abstract class InputAssembler extends GFXObject {
return this._attributes;
}

get gpuInputAssembler (): any {
return {};
}

/**
* @en Get current vertex buffers.
* @zh 顶点缓冲数组。
Expand Down
10 changes: 9 additions & 1 deletion cocos/gfx/webgl/webgl-commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1968,6 +1968,9 @@ export function WebGLCmdFuncBindStates (
for (let j = 0; j < blockLen; j++) {
const glBlock = gpuShader.glBlocks[j];
const gpuDescriptorSet = gpuDescriptorSets[glBlock.set];
if (gpuDescriptorSet.isChanged === false && !isShaderChanged) {
continue;
}
const descriptorIdx = gpuDescriptorSet && gpuDescriptorSet.descriptorIndices[glBlock.binding];
const gpuDescriptor = descriptorIdx >= 0 && gpuDescriptorSet.gpuDescriptors[descriptorIdx];
let vf32: Float32Array | null = null; let offset = 0;
Expand Down Expand Up @@ -2153,6 +2156,9 @@ export function WebGLCmdFuncBindStates (
for (let i = 0; i < samplerLen; i++) {
const glSampler = gpuShader.glSamplerTextures[i];
const gpuDescriptorSet = gpuDescriptorSets[glSampler.set];
if (gpuDescriptorSet.isChanged === false && !isShaderChanged) {
continue;
}
let descriptorIndex = gpuDescriptorSet && gpuDescriptorSet.descriptorIndices[glSampler.binding];
let gpuDescriptor = descriptorIndex >= 0 && gpuDescriptorSet.gpuDescriptors[descriptorIndex];

Expand Down Expand Up @@ -2243,10 +2249,12 @@ export function WebGLCmdFuncBindStates (
gpuTexture.glMagFilter = gpuSampler.glMagFilter;
}
}

gpuDescriptor = gpuDescriptorSet.gpuDescriptors[++descriptorIndex];
}
}
gpuDescriptorSets.forEach((desc) => {
if (desc.isChanged === true) desc.isChanged = false;
});
} // bind descriptor sets

// bind vertex/index buffer
Expand Down
2 changes: 2 additions & 0 deletions cocos/gfx/webgl/webgl-gpu-objects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,7 @@ export interface IWebGLGPUDescriptor {
export interface IWebGLGPUDescriptorSet {
gpuDescriptors: IWebGLGPUDescriptor[];
descriptorIndices: number[];
isChanged?: boolean;
}

/** @mangle */
Expand All @@ -347,6 +348,7 @@ export interface IWebGLGPUInputAssembler {

glAttribs: IWebGLAttrib[];
glIndexType: GLenum;
isChanged?: boolean;
glVAOs: Map<WebGLProgram, WebGLVertexArrayObjectOES>;
}

Expand Down
1 change: 1 addition & 0 deletions cocos/gfx/webgl/webgl-input-assembler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ export class WebGLInputAssembler extends InputAssembler {
gpuVertexBuffers,
gpuIndexBuffer,
gpuIndirectBuffer,
isChanged: false,

glAttribs: [],
glIndexType,
Expand Down
Loading
Loading