@@ -39,16 +39,24 @@ Error RenderingDeviceDriverWebGpu::initialize(uint32_t p_device_index, uint32_t
39
39
WGPUFeatureName required_features[] = {
40
40
WGPUFeatureName_Depth32FloatStencil8,
41
41
42
+ // Waiting on WebGPU spec, see https://github.com/gpuweb/gpuweb/blob/main/proposals/push-constants.md
42
43
(WGPUFeatureName)WGPUNativeFeature_PushConstants,
44
+ // Need to implement shader translation (via naga or tint)
43
45
(WGPUFeatureName)WGPUNativeFeature_SpirvShaderPassthrough,
46
+ // Need changes in Godot (default textures use 16bit I believe)
44
47
(WGPUFeatureName)WGPUNativeFeature_TextureFormat16bitNorm,
48
+ // Wating on "texture-formats-tier1" to be exposed
45
49
(WGPUFeatureName)WGPUNativeFeature_TextureAdapterSpecificFormatFeatures,
50
+
51
+ // Needs SPIRV workaround
46
52
(WGPUFeatureName)WGPUNativeFeature_TextureBindingArray,
47
53
(WGPUFeatureName)WGPUNativeFeature_StorageResourceBindingArray,
48
54
(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,
52
60
};
53
61
54
62
// NOTE: These tweaks are ONLY REQUIRED FOR FORWARD+.
@@ -1266,7 +1274,9 @@ RenderingDeviceDriver::ShaderID RenderingDeviceDriverWebGpu::shader_create_from_
1266
1274
} break ;
1267
1275
case UNIFORM_TYPE_STORAGE_BUFFER: {
1268
1276
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,
1270
1280
// Godot doesn't support dynamic offset
1271
1281
.hasDynamicOffset = false ,
1272
1282
};
@@ -1997,18 +2007,22 @@ void RenderingDeviceDriverWebGpu::command_end_render_pass(CommandBufferID p_cmd_
1997
2007
wgpuRenderPassEncoderDrawIndexed (render_encoder, data.index_count , data.instance_count , data.first_index , data.base_vertex , data.first_instance );
1998
2008
} break ;
1999
2009
case RenderPassEncoderCommand::CommandType::MULTI_DRAW_INDIRECT: {
2010
+ CRASH_NOW_MSG (" NO MULTIDRAW INDIRECT" );
2000
2011
RenderPassEncoderCommand::MultiDrawIndirect data = command.multi_draw_indirect ;
2001
2012
wgpuRenderPassEncoderMultiDrawIndirect (render_encoder, data.indirect_buffer , data.indirect_offset , data.count );
2002
2013
} break ;
2003
2014
case RenderPassEncoderCommand::CommandType::MULTI_DRAW_INDIRECT_COUNT: {
2015
+ CRASH_NOW_MSG (" NO MULTIDRAW INDIRECT COUNT" );
2004
2016
RenderPassEncoderCommand::MultiDrawIndirectCount data = command.multi_draw_indirect_count ;
2005
2017
wgpuRenderPassEncoderMultiDrawIndirectCount (render_encoder, data.indirect_buffer , data.indirect_offset , data.count_buffer , data.count_offset , data.max_count );
2006
2018
} break ;
2007
2019
case RenderPassEncoderCommand::CommandType::MULTI_DRAW_INDEXED_INDIRECT: {
2020
+ CRASH_NOW_MSG (" NO MULTIDRAW INDIRECT" );
2008
2021
RenderPassEncoderCommand::MultiDrawIndexedIndirect data = command.multi_draw_indexed_indirect ;
2009
2022
wgpuRenderPassEncoderMultiDrawIndexedIndirect (render_encoder, data.indirect_buffer , data.indirect_offset , data.count );
2010
2023
} break ;
2011
2024
case RenderPassEncoderCommand::CommandType::MULTI_DRAW_INDEXED_INDIRECT_COUNT: {
2025
+ CRASH_NOW_MSG (" NO MULTIDRAW INDIRECT COUNT" );
2012
2026
RenderPassEncoderCommand::MultiDrawIndexedIndirectCount data = command.multi_draw_indexed_indirect_count ;
2013
2027
wgpuRenderPassEncoderMultiDrawIndexedIndirectCount (render_encoder, data.indirect_buffer , data.indirect_offset , data.count_buffer , data.count_offset , data.max_count );
2014
2028
} break ;
0 commit comments