Skip to content

Commit

Permalink
Revert "WebGPUBackend: Remove unnecessary use of GPUAdapter (#28208)" (
Browse files Browse the repository at this point in the history
…#28215)

This reverts commit 70c132c.
  • Loading branch information
Mugen87 committed Apr 25, 2024
1 parent f869162 commit 6008f61
Showing 1 changed file with 30 additions and 35 deletions.
65 changes: 30 additions & 35 deletions examples/jsm/renderers/webgpu/WebGPUBackend.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import WebGPUAttributeUtils from './utils/WebGPUAttributeUtils.js';
import WebGPUBindingUtils from './utils/WebGPUBindingUtils.js';
import WebGPUPipelineUtils from './utils/WebGPUPipelineUtils.js';
import WebGPUTextureUtils from './utils/WebGPUTextureUtils.js';
import WebGPU from '../../capabilities/WebGPU.js';

//

Expand Down Expand Up @@ -44,6 +45,7 @@ class WebGPUBackend extends Backend {

this.trackTimestamp = ( parameters.trackTimestamp === true );

this.adapter = null;
this.device = null;
this.context = null;
this.colorBuffer = null;
Expand All @@ -66,55 +68,44 @@ class WebGPUBackend extends Backend {

const parameters = this.parameters;

// create the device if it is not passed with parameters

let device;

if ( parameters.device === undefined ) {

const adapterOptions = {
powerPreference: parameters.powerPreference
};

const adapter = await navigator.gpu.requestAdapter( adapterOptions );
const adapterOptions = {
powerPreference: parameters.powerPreference
};

if ( adapter === null ) {
const adapter = await navigator.gpu.requestAdapter( adapterOptions );

throw new Error( 'WebGPUBackend: Unable to create WebGPU adapter.' );
if ( adapter === null ) {

}
throw new Error( 'WebGPUBackend: Unable to create WebGPU adapter.' );

// feature support
}

const features = Object.values( GPUFeatureName );
// feature support

const supportedFeatures = [];
const features = Object.values( GPUFeatureName );

for ( const name of features ) {
const supportedFeatures = [];

if ( adapter.features.has( name ) ) {
for ( const name of features ) {

supportedFeatures.push( name );
if ( adapter.features.has( name ) ) {

}
supportedFeatures.push( name );

}

const deviceDescriptor = {
requiredFeatures: supportedFeatures,
requiredLimits: parameters.requiredLimits
};

device = await adapter.requestDevice( deviceDescriptor );
}

} else {
const deviceDescriptor = {
requiredFeatures: supportedFeatures,
requiredLimits: parameters.requiredLimits
};

device = parameters.device;

}
const device = ( parameters.device !== undefined ) ? parameters.device : await adapter.requestDevice( deviceDescriptor );

const context = ( parameters.context !== undefined ) ? parameters.context : renderer.domElement.getContext( 'webgpu' );

this.adapter = adapter;
this.device = device;
this.context = context;

Expand Down Expand Up @@ -1231,21 +1222,25 @@ class WebGPUBackend extends Backend {

async hasFeatureAsync( name ) {

return this.hasFeature( name );
const adapter = this.adapter || await WebGPU.getStaticAdapter();

//

return adapter.features.has( name );

}

hasFeature( name ) {

if ( ! this.device ) {
if ( ! this.adapter ) {

console.warn( 'WebGPUBackend: WebGPU device has not been initialized yet.' );
console.warn( 'WebGPUBackend: WebGPU adapter has not been initialized yet. Please use hasFeatureAsync instead' );

return false;

}

return this.device.features.has( name );
return this.adapter.features.has( name );

}

Expand Down

0 comments on commit 6008f61

Please sign in to comment.