12
12
# %% Entrypoints (sync and async)
13
13
14
14
15
- def setup_drawing_sync (canvas , power_preference = "high-performance" , limits = None ):
15
+ def setup_drawing_sync (
16
+ canvas , power_preference = "high-performance" , limits = None , format = None
17
+ ):
16
18
"""Setup to draw a rotating cube on the given canvas.
17
19
18
20
The given canvas must implement WgpuCanvasInterface, but nothing more.
@@ -23,7 +25,9 @@ def setup_drawing_sync(canvas, power_preference="high-performance", limits=None)
23
25
device = adapter .request_device_sync (required_limits = limits )
24
26
25
27
pipeline_layout , uniform_buffer , bind_groups = create_pipeline_layout (device )
26
- pipeline_kwargs = get_render_pipeline_kwargs (canvas , device , pipeline_layout )
28
+ pipeline_kwargs = get_render_pipeline_kwargs (
29
+ canvas , device , pipeline_layout , format
30
+ )
27
31
28
32
render_pipeline = device .create_render_pipeline (** pipeline_kwargs )
29
33
@@ -32,7 +36,7 @@ def setup_drawing_sync(canvas, power_preference="high-performance", limits=None)
32
36
)
33
37
34
38
35
- async def setup_drawing_async (canvas , limits = None ):
39
+ async def setup_drawing_async (canvas , limits = None , format = None ):
36
40
"""Setup to async-draw a rotating cube on the given canvas.
37
41
38
42
The given canvas must implement WgpuCanvasInterface, but nothing more.
@@ -43,7 +47,9 @@ async def setup_drawing_async(canvas, limits=None):
43
47
device = await adapter .request_device_async (required_limits = limits )
44
48
45
49
pipeline_layout , uniform_buffer , bind_groups = create_pipeline_layout (device )
46
- pipeline_kwargs = get_render_pipeline_kwargs (canvas , device , pipeline_layout )
50
+ pipeline_kwargs = get_render_pipeline_kwargs (
51
+ canvas , device , pipeline_layout , format
52
+ )
47
53
48
54
render_pipeline = await device .create_render_pipeline_async (** pipeline_kwargs )
49
55
@@ -55,9 +61,10 @@ async def setup_drawing_async(canvas, limits=None):
55
61
# %% Functions to create wgpu objects
56
62
57
63
58
- def get_render_pipeline_kwargs (canvas , device , pipeline_layout ):
64
+ def get_render_pipeline_kwargs (canvas , device , pipeline_layout , render_texture_format ):
59
65
context = canvas .get_context ("wgpu" )
60
- render_texture_format = context .get_preferred_format (device .adapter )
66
+ if render_texture_format is None :
67
+ render_texture_format = context .get_preferred_format (device .adapter )
61
68
context .configure (device = device , format = render_texture_format )
62
69
63
70
shader = device .create_shader_module (code = shader_source )
0 commit comments