Skip to content

Commit 7992040

Browse files
committed
Knock out a few wgpu extensions
1 parent 92b7c50 commit 7992040

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

drivers/webgpu/rendering_context_driver_webgpu.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@ void RenderingContextDriverWebGpu::surface_destroy(SurfaceID p_surface) {
145145
memdelete(surface);
146146
}
147147
bool RenderingContextDriverWebGpu::is_debug_utils_enabled() const {
148-
// Although there is a flag to enable validation in WGPU, the spec doesn't support this.
149-
// See: https://docs.rs/wgpu/latest/wgpu/struct.InstanceFlags.html#associatedconstant.DEBUG
148+
// Although there is a flag to enable validation in WGPU, the spec doesn't support this.
149+
// See: https://docs.rs/wgpu/latest/wgpu/struct.InstanceFlags.html#associatedconstant.DEBUG
150150
return false;
151151
}
152152

drivers/webgpu/rendering_device_driver_webgpu.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,24 @@ Error RenderingDeviceDriverWebGpu::initialize(uint32_t p_device_index, uint32_t
3939
WGPUFeatureName required_features[] = {
4040
WGPUFeatureName_Depth32FloatStencil8,
4141

42+
// Waiting on WebGPU spec, see https://github.com/gpuweb/gpuweb/blob/main/proposals/push-constants.md
4243
(WGPUFeatureName)WGPUNativeFeature_PushConstants,
44+
// Need to implement shader translation (via naga or tint)
4345
(WGPUFeatureName)WGPUNativeFeature_SpirvShaderPassthrough,
46+
// Need changes in Godot (default textures use 16bit I believe)
4447
(WGPUFeatureName)WGPUNativeFeature_TextureFormat16bitNorm,
48+
// Wating on "texture-formats-tier1" to be exposed
4549
(WGPUFeatureName)WGPUNativeFeature_TextureAdapterSpecificFormatFeatures,
50+
51+
// Needs SPIRV workaround
4652
(WGPUFeatureName)WGPUNativeFeature_TextureBindingArray,
4753
(WGPUFeatureName)WGPUNativeFeature_StorageResourceBindingArray,
4854
(WGPUFeatureName)WGPUNativeFeature_BufferBindingArray,
49-
(WGPUFeatureName)WGPUNativeFeature_VertexWritableStorage,
50-
(WGPUFeatureName)WGPUNativeFeature_MultiDrawIndirect,
51-
(WGPUFeatureName)WGPUNativeFeature_MultiDrawIndirectCount,
55+
56+
// Currently avoidable
57+
// (WGPUFeatureName)WGPUNativeFeature_VertexWritableStorage,
58+
// (WGPUFeatureName)WGPUNativeFeature_MultiDrawIndirect,
59+
// (WGPUFeatureName)WGPUNativeFeature_MultiDrawIndirectCount,
5260
};
5361

5462
// NOTE: These tweaks are ONLY REQUIRED FOR FORWARD+.
@@ -1266,7 +1274,9 @@ RenderingDeviceDriver::ShaderID RenderingDeviceDriverWebGpu::shader_create_from_
12661274
} break;
12671275
case UNIFORM_TYPE_STORAGE_BUFFER: {
12681276
layout_entry.buffer = (WGPUBufferBindingLayout){
1269-
.type = WGPUBufferBindingType_Storage,
1277+
// TODO: Investigate this further.
1278+
// .type = info.writable ? WGPUBufferBindingType_ReadOnlyStorage : WGPUBufferBindingType_Storage,
1279+
.type = (layout_entry.visibility & WGPUShaderStage_Vertex) ? WGPUBufferBindingType_ReadOnlyStorage : WGPUBufferBindingType_Storage,
12701280
// Godot doesn't support dynamic offset
12711281
.hasDynamicOffset = false,
12721282
};
@@ -1997,18 +2007,22 @@ void RenderingDeviceDriverWebGpu::command_end_render_pass(CommandBufferID p_cmd_
19972007
wgpuRenderPassEncoderDrawIndexed(render_encoder, data.index_count, data.instance_count, data.first_index, data.base_vertex, data.first_instance);
19982008
} break;
19992009
case RenderPassEncoderCommand::CommandType::MULTI_DRAW_INDIRECT: {
2010+
CRASH_NOW_MSG("NO MULTIDRAW INDIRECT");
20002011
RenderPassEncoderCommand::MultiDrawIndirect data = command.multi_draw_indirect;
20012012
wgpuRenderPassEncoderMultiDrawIndirect(render_encoder, data.indirect_buffer, data.indirect_offset, data.count);
20022013
} break;
20032014
case RenderPassEncoderCommand::CommandType::MULTI_DRAW_INDIRECT_COUNT: {
2015+
CRASH_NOW_MSG("NO MULTIDRAW INDIRECT COUNT");
20042016
RenderPassEncoderCommand::MultiDrawIndirectCount data = command.multi_draw_indirect_count;
20052017
wgpuRenderPassEncoderMultiDrawIndirectCount(render_encoder, data.indirect_buffer, data.indirect_offset, data.count_buffer, data.count_offset, data.max_count);
20062018
} break;
20072019
case RenderPassEncoderCommand::CommandType::MULTI_DRAW_INDEXED_INDIRECT: {
2020+
CRASH_NOW_MSG("NO MULTIDRAW INDIRECT");
20082021
RenderPassEncoderCommand::MultiDrawIndexedIndirect data = command.multi_draw_indexed_indirect;
20092022
wgpuRenderPassEncoderMultiDrawIndexedIndirect(render_encoder, data.indirect_buffer, data.indirect_offset, data.count);
20102023
} break;
20112024
case RenderPassEncoderCommand::CommandType::MULTI_DRAW_INDEXED_INDIRECT_COUNT: {
2025+
CRASH_NOW_MSG("NO MULTIDRAW INDIRECT COUNT");
20122026
RenderPassEncoderCommand::MultiDrawIndexedIndirectCount data = command.multi_draw_indexed_indirect_count;
20132027
wgpuRenderPassEncoderMultiDrawIndexedIndirectCount(render_encoder, data.indirect_buffer, data.indirect_offset, data.count_buffer, data.count_offset, data.max_count);
20142028
} break;

0 commit comments

Comments
 (0)