@@ -3743,10 +3743,10 @@ impl Device {
37433743 let final_entry_point_name;
37443744
37453745 {
3746- let stage = wgt :: ShaderStages :: COMPUTE ;
3746+ let stage = validation :: ShaderStageForValidation :: Compute ;
37473747
37483748 final_entry_point_name = shader_module. finalize_entry_point_name (
3749- stage,
3749+ stage. to_naga ( ) ,
37503750 desc. stage . entry_point . as_ref ( ) . map ( |ep| ep. as_ref ( ) ) ,
37513751 ) ?;
37523752
@@ -3757,7 +3757,6 @@ impl Device {
37573757 & final_entry_point_name,
37583758 stage,
37593759 io,
3760- None ,
37613760 ) ?;
37623761 }
37633762 }
@@ -4230,17 +4229,23 @@ impl Device {
42304229 pipeline:: RenderPipelineVertexProcessor :: Vertex ( ref vertex) => {
42314230 vertex_stage = {
42324231 let stage_desc = & vertex. stage ;
4233- let stage = wgt:: ShaderStages :: VERTEX ;
4232+ let stage = validation:: ShaderStageForValidation :: Vertex {
4233+ topology : desc. primitive . topology ,
4234+ compare_function : desc. depth_stencil . as_ref ( ) . map ( |d| d. depth_compare ) ,
4235+ } ;
4236+ let stage_bit = stage. to_wgt_bit ( ) ;
42344237
42354238 let vertex_shader_module = & stage_desc. module ;
42364239 vertex_shader_module. same_device ( self ) ?;
42374240
4238- let stage_err =
4239- |error| pipeline:: CreateRenderPipelineError :: Stage { stage, error } ;
4241+ let stage_err = |error| pipeline:: CreateRenderPipelineError :: Stage {
4242+ stage : stage_bit,
4243+ error,
4244+ } ;
42404245
42414246 _vertex_entry_point_name = vertex_shader_module
42424247 . finalize_entry_point_name (
4243- stage,
4248+ stage. to_naga ( ) ,
42444249 stage_desc. entry_point . as_ref ( ) . map ( |ep| ep. as_ref ( ) ) ,
42454250 )
42464251 . map_err ( stage_err) ?;
@@ -4253,10 +4258,9 @@ impl Device {
42534258 & _vertex_entry_point_name,
42544259 stage,
42554260 io,
4256- desc. depth_stencil . as_ref ( ) . map ( |d| d. depth_compare ) ,
42574261 )
42584262 . map_err ( stage_err) ?;
4259- validated_stages |= stage ;
4263+ validated_stages |= stage_bit ;
42604264 }
42614265 Some ( hal:: ProgrammableStage {
42624266 module : vertex_shader_module. raw ( ) ,
@@ -4272,16 +4276,19 @@ impl Device {
42724276
42734277 task_stage = if let Some ( task) = task {
42744278 let stage_desc = & task. stage ;
4275- let stage = wgt:: ShaderStages :: TASK ;
4279+ let stage = validation:: ShaderStageForValidation :: Task ;
4280+ let stage_bit = stage. to_wgt_bit ( ) ;
42764281 let task_shader_module = & stage_desc. module ;
42774282 task_shader_module. same_device ( self ) ?;
42784283
4279- let stage_err =
4280- |error| pipeline:: CreateRenderPipelineError :: Stage { stage, error } ;
4284+ let stage_err = |error| pipeline:: CreateRenderPipelineError :: Stage {
4285+ stage : stage_bit,
4286+ error,
4287+ } ;
42814288
42824289 _task_entry_point_name = task_shader_module
42834290 . finalize_entry_point_name (
4284- stage,
4291+ stage. to_naga ( ) ,
42854292 stage_desc. entry_point . as_ref ( ) . map ( |ep| ep. as_ref ( ) ) ,
42864293 )
42874294 . map_err ( stage_err) ?;
@@ -4294,10 +4301,9 @@ impl Device {
42944301 & _task_entry_point_name,
42954302 stage,
42964303 io,
4297- desc. depth_stencil . as_ref ( ) . map ( |d| d. depth_compare ) ,
42984304 )
42994305 . map_err ( stage_err) ?;
4300- validated_stages |= stage ;
4306+ validated_stages |= stage_bit ;
43014307 }
43024308 Some ( hal:: ProgrammableStage {
43034309 module : task_shader_module. raw ( ) ,
@@ -4311,16 +4317,19 @@ impl Device {
43114317 } ;
43124318 mesh_stage = {
43134319 let stage_desc = & mesh. stage ;
4314- let stage = wgt:: ShaderStages :: MESH ;
4320+ let stage = validation:: ShaderStageForValidation :: Mesh ;
4321+ let stage_bit = stage. to_wgt_bit ( ) ;
43154322 let mesh_shader_module = & stage_desc. module ;
43164323 mesh_shader_module. same_device ( self ) ?;
43174324
4318- let stage_err =
4319- |error| pipeline:: CreateRenderPipelineError :: Stage { stage, error } ;
4325+ let stage_err = |error| pipeline:: CreateRenderPipelineError :: Stage {
4326+ stage : stage_bit,
4327+ error,
4328+ } ;
43204329
43214330 _mesh_entry_point_name = mesh_shader_module
43224331 . finalize_entry_point_name (
4323- stage,
4332+ stage. to_naga ( ) ,
43244333 stage_desc. entry_point . as_ref ( ) . map ( |ep| ep. as_ref ( ) ) ,
43254334 )
43264335 . map_err ( stage_err) ?;
@@ -4333,10 +4342,9 @@ impl Device {
43334342 & _mesh_entry_point_name,
43344343 stage,
43354344 io,
4336- desc. depth_stencil . as_ref ( ) . map ( |d| d. depth_compare ) ,
43374345 )
43384346 . map_err ( stage_err) ?;
4339- validated_stages |= stage ;
4347+ validated_stages |= stage_bit ;
43404348 }
43414349 Some ( hal:: ProgrammableStage {
43424350 module : mesh_shader_module. raw ( ) ,
@@ -4352,16 +4360,20 @@ impl Device {
43524360 let fragment_entry_point_name;
43534361 let fragment_stage = match desc. fragment {
43544362 Some ( ref fragment_state) => {
4355- let stage = wgt:: ShaderStages :: FRAGMENT ;
4363+ let stage = validation:: ShaderStageForValidation :: Fragment ;
4364+ let stage_bit = stage. to_wgt_bit ( ) ;
43564365
43574366 let shader_module = & fragment_state. stage . module ;
43584367 shader_module. same_device ( self ) ?;
43594368
4360- let stage_err = |error| pipeline:: CreateRenderPipelineError :: Stage { stage, error } ;
4369+ let stage_err = |error| pipeline:: CreateRenderPipelineError :: Stage {
4370+ stage : stage_bit,
4371+ error,
4372+ } ;
43614373
43624374 fragment_entry_point_name = shader_module
43634375 . finalize_entry_point_name (
4364- stage,
4376+ stage. to_naga ( ) ,
43654377 fragment_state
43664378 . stage
43674379 . entry_point
@@ -4378,17 +4390,16 @@ impl Device {
43784390 & fragment_entry_point_name,
43794391 stage,
43804392 io,
4381- desc. depth_stencil . as_ref ( ) . map ( |d| d. depth_compare ) ,
43824393 )
43834394 . map_err ( stage_err) ?;
4384- validated_stages |= stage ;
4395+ validated_stages |= stage_bit ;
43854396 }
43864397
43874398 if let Some ( ref interface) = shader_module. interface {
43884399 shader_expects_dual_source_blending = interface
43894400 . fragment_uses_dual_source_blending ( & fragment_entry_point_name)
43904401 . map_err ( |error| pipeline:: CreateRenderPipelineError :: Stage {
4391- stage,
4402+ stage : stage_bit ,
43924403 error,
43934404 } ) ?;
43944405 }
0 commit comments