diff --git a/packages/typegpu/src/core/buffer/buffer.ts b/packages/typegpu/src/core/buffer/buffer.ts index 6632f279bd..6002635796 100644 --- a/packages/typegpu/src/core/buffer/buffer.ts +++ b/packages/typegpu/src/core/buffer/buffer.ts @@ -26,13 +26,13 @@ import type { import { isGPUBuffer } from '../../types.ts'; import type { ExperimentalTgpuRoot } from '../root/rootTypes.ts'; import { - asMutable, - asReadonly, - asUniform, + mutable, + readonly, type TgpuBufferMutable, type TgpuBufferReadonly, type TgpuBufferUniform, type TgpuFixedBufferUsage, + uniform, } from './bufferUsage.ts'; // ---------- @@ -79,11 +79,7 @@ type UsageTypeToBufferUsage = { readonly: TgpuBufferReadonly & TgpuFixedBufferUsage; }; -const usageToUsageConstructor = { - uniform: asUniform, - mutable: asMutable, - readonly: asReadonly, -}; +const usageToUsageConstructor = { uniform, mutable, readonly }; /** * Done as an object to later Prettify it diff --git a/packages/typegpu/src/core/buffer/bufferUsage.ts b/packages/typegpu/src/core/buffer/bufferUsage.ts index b83e880aae..d0e14bed66 100644 --- a/packages/typegpu/src/core/buffer/bufferUsage.ts +++ b/packages/typegpu/src/core/buffer/bufferUsage.ts @@ -308,15 +308,12 @@ const mutableUsageMap = new WeakMap< TgpuFixedBufferImpl >(); -/** - * @deprecated Use buffer.as('mutable') instead. - */ -export function asMutable( +export function mutable( buffer: TgpuBuffer & StorageFlag, ): TgpuBufferMutable & TgpuFixedBufferUsage { if (!isUsableAsStorage(buffer)) { throw new Error( - `Cannot pass ${buffer} to asMutable, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`, + `Cannot call as('mutable') on ${buffer}, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`, ); } @@ -335,15 +332,12 @@ const readonlyUsageMap = new WeakMap< TgpuFixedBufferImpl >(); -/** - * @deprecated Use buffer.as('readonly') instead. - */ -export function asReadonly( +export function readonly( buffer: TgpuBuffer & StorageFlag, ): TgpuBufferReadonly & TgpuFixedBufferUsage { if (!isUsableAsStorage(buffer)) { throw new Error( - `Cannot pass ${buffer} to asReadonly, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`, + `Cannot call as('readonly') on ${buffer}, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`, ); } @@ -362,15 +356,12 @@ const uniformUsageMap = new WeakMap< TgpuFixedBufferImpl >(); -/** - * @deprecated Use buffer.as('uniform') instead. - */ -export function asUniform( +export function uniform( buffer: TgpuBuffer & UniformFlag, ): TgpuBufferUniform & TgpuFixedBufferUsage { if (!isUsableAsUniform(buffer)) { throw new Error( - `Cannot pass ${buffer} to asUniform, as it is not allowed to be used as a uniform. To allow it, call .$usage('uniform') when creating the buffer.`, + `Cannot call as('uniform') on ${buffer}, as it is not allowed to be used as a uniform. To allow it, call .$usage('uniform') when creating the buffer.`, ); } diff --git a/packages/typegpu/tests/asUsage.test.ts b/packages/typegpu/tests/asUsage.test.ts deleted file mode 100644 index 3c29133c1d..0000000000 --- a/packages/typegpu/tests/asUsage.test.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { describe, expect } from 'vitest'; -import { u32 } from '../src/data/index.ts'; -import './utils/webgpuGlobals.ts'; -import { - asMutable, - asReadonly, - asUniform, -} from '../src/core/buffer/bufferUsage.ts'; -import { it } from './utils/extendedIt.ts'; - -describe('asUsage', () => { - it('allows creating bufferUsages only for buffers allowing them', ({ root }) => { - asReadonly(root.createBuffer(u32, 2).$usage('storage')); - asReadonly(root.createBuffer(u32, 2).$usage('storage', 'uniform')); - asReadonly(root.createBuffer(u32, 2).$usage('storage', 'vertex')); - // @ts-expect-error - expect(() => asReadonly(root.createBuffer(u32, 2))).toThrow(); - expect(() => - // @ts-expect-error - asReadonly(root.createBuffer(u32, 2).$usage('uniform')) - ).toThrow(); - - asUniform(root.createBuffer(u32, 2).$usage('uniform')); - asUniform(root.createBuffer(u32, 2).$usage('uniform', 'storage')); - asUniform(root.createBuffer(u32, 2).$usage('uniform', 'vertex')); - // @ts-expect-error - expect(() => asUniform(root.createBuffer(u32, 2))).toThrow(); - expect(() => - // @ts-expect-error - asUniform(root.createBuffer(u32, 2).$usage('storage')) - ).toThrow(); - - asMutable(root.createBuffer(u32, 2).$usage('storage')); - asMutable(root.createBuffer(u32, 2).$usage('storage', 'uniform')); - asMutable(root.createBuffer(u32, 2).$usage('vertex', 'storage')); - // @ts-expect-error - expect(() => asMutable(root.createBuffer(u32, 2))).toThrow(); - expect(() => - // @ts-expect-error - asMutable(root.createBuffer(u32, 2).$usage('uniform')) - ).toThrow(); - }); -}); - -describe('buffer.as(usage)', () => { - it('allows creating bufferUsages only for buffers allowing them', ({ root }) => { - root.createBuffer(u32, 2).$usage('storage').as('readonly'); - root.createBuffer(u32, 2).$usage('storage', 'uniform').as('readonly'); - root.createBuffer(u32, 2).$usage('storage', 'vertex').as('readonly'); - // @ts-expect-error - expect(() => root.createBuffer(u32, 2).as('readonly')).toThrow(); - expect(() => - root - .createBuffer(u32, 2) - .$usage('uniform') - // @ts-expect-error - .as('readonly') - ).toThrow(); - - root.createBuffer(u32, 2).$usage('uniform').as('uniform'); - root.createBuffer(u32, 2).$usage('uniform', 'storage').as('uniform'); - root.createBuffer(u32, 2).$usage('uniform', 'vertex').as('uniform'); - // @ts-expect-error - expect(() => root.createBuffer(u32, 2).as('uniform')).toThrow(); - expect(() => - root - .createBuffer(u32, 2) - .$usage('storage') - // @ts-expect-error - .as('uniform') - ).toThrow(); - - root.createBuffer(u32, 2).$usage('storage').as('mutable'); - root.createBuffer(u32, 2).$usage('storage', 'uniform').as('mutable'); - root.createBuffer(u32, 2).$usage('vertex', 'storage').as('mutable'); - // @ts-expect-error - expect(() => root.createBuffer(u32, 2).as('mutable')).toThrow(); - expect(() => - root - .createBuffer(u32, 2) - .$usage('uniform') - // @ts-expect-error - .as('mutable') - ).toThrow(); - }); -}); diff --git a/packages/typegpu/tests/bufferUsage.test.ts b/packages/typegpu/tests/bufferUsage.test.ts index 224d4c877c..f619c91013 100644 --- a/packages/typegpu/tests/bufferUsage.test.ts +++ b/packages/typegpu/tests/bufferUsage.test.ts @@ -73,6 +73,21 @@ describe('TgpuBufferUniform', () => { }" `); }); + + it('allows creating bufferUsages only for buffers allowing them', ({ root }) => { + root.createBuffer(d.u32, 2).$usage('uniform').as('uniform'); + root.createBuffer(d.u32, 2).$usage('uniform', 'storage').as('uniform'); + root.createBuffer(d.u32, 2).$usage('uniform', 'vertex').as('uniform'); + // @ts-expect-error + expect(() => root.createBuffer(d.u32, 2).as('uniform')).toThrow(); + expect(() => + root + .createBuffer(d.u32, 2) + .$usage('storage') + // @ts-expect-error + .as('uniform') + ).toThrow(); + }); }); describe('TgpuBufferMutable', () => { @@ -163,6 +178,21 @@ describe('TgpuBufferMutable', () => { expect(result.value).toBe(3); }); }); + + it('allows creating bufferUsages only for buffers allowing them', ({ root }) => { + root.createBuffer(d.u32, 2).$usage('storage').as('mutable'); + root.createBuffer(d.u32, 2).$usage('storage', 'uniform').as('mutable'); + root.createBuffer(d.u32, 2).$usage('vertex', 'storage').as('mutable'); + // @ts-expect-error + expect(() => root.createBuffer(d.u32, 2).as('mutable')).toThrow(); + expect(() => + root + .createBuffer(d.u32, 2) + .$usage('uniform') + // @ts-expect-error + .as('mutable') + ).toThrow(); + }); }); describe('TgpuBufferReadonly', () => { @@ -273,4 +303,19 @@ describe('TgpuBufferReadonly', () => { expect(result.value).toBe(123); }); }); + + it('allows creating bufferUsages only for buffers allowing them', ({ root }) => { + root.createBuffer(d.u32, 2).$usage('storage').as('readonly'); + root.createBuffer(d.u32, 2).$usage('storage', 'uniform').as('readonly'); + root.createBuffer(d.u32, 2).$usage('storage', 'vertex').as('readonly'); + // @ts-expect-error + expect(() => root.createBuffer(d.u32, 2).as('readonly')).toThrow(); + expect(() => + root + .createBuffer(d.u32, 2) + .$usage('uniform') + // @ts-expect-error + .as('readonly') + ).toThrow(); + }); });