Skip to content

Commit 2c2a89f

Browse files
committed
Add min/max capability to the format table
1 parent a979cf8 commit 2c2a89f

1 file changed

Lines changed: 48 additions & 5 deletions

File tree

spec/index.bs

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2345,7 +2345,7 @@ match one texel.
23452345
enum GPUFilterMode {
23462346
"nearest",
23472347
"linear",
2348-
"minimim",
2348+
"minimum",
23492349
"maximum",
23502350
};
23512351
</script>
@@ -2361,12 +2361,12 @@ enum GPUFilterMode {
23612361

23622362
: <dfn>"minimum"</dfn>
23632363
::
2364-
Select two texels in each dimension and return the minimum value between them.
2364+
Select two texels in each dimension and return the minimum values between them, component-wise.
23652365
Requires {{GPUFeatureName/"minmax-sampling"}} feature to be enabled.
23662366

23672367
: <dfn>"maximum"</dfn>
23682368
::
2369-
Select two texels in each dimension and return the maximum value between them.
2369+
Select two texels in each dimension and return the maximum values between them, component-wise.
23702370
Requires {{GPUFeatureName/"minmax-sampling"}} feature to be enabled.
23712371
</dl>
23722372

@@ -2439,8 +2439,9 @@ enum GPUCompareFunction {
24392439
- |descriptor|.{{GPUSamplerDescriptor/magFilter}} and |descriptor.{{GPUSamplerDescriptor/mipmapFilter}}
24402440
are either {{GPUFilterMode/"nearest"}} or {{GPUFilterMode/"linear"}}, independently.
24412441
- if |descriptor|.{{GPUSamplerDescriptor/minFilter}} is {{GPUFilterMode/"minimum"}} or
2442-
{{GPUFilterMode/"maximum"}}, then the |device|.{{device/[[features]]}}
2443-
[=list/contain=] {{GPUFeatureName/"minmax-sampling"}}.
2442+
{{GPUFilterMode/"maximum"}}, then all of the following conditions are satisfied:
2443+
- |device|.{{device/[[features]]}} [=list/contains=] {{GPUFeatureName/"minmax-sampling"}}.
2444+
- |descriptor|.{{GPUSamplerDescriptor/compare}} is `null`.
24442445
</div>
24452446

24462447
<dl dfn-type=method dfn-for=GPUDevice>
@@ -7288,193 +7289,232 @@ Only formats with {{GPUTextureSampleType}} {{GPUTextureSampleType/"float"}} can
72887289
The {{GPUTextureUsage/STORAGE|GPUTextureUsage.STORAGE}} column specifies the support for {{GPUTextureUsage/STORAGE}}
72897290
usage in the core API, including both {{GPUStorageTextureAccess/"readonly"}} and {{GPUStorageTextureAccess/"writeonly"}}.
72907291

7292+
The "Min/Max sampling" column specifies the support for sampling a {{GPUTextureView}} of the format with a {{GPUSampler}}
7293+
that uses {{GPUFilterMode/"minimum"}} or {{GPUFilterMode/"maximum"}}.
7294+
72917295
<table class='data'>
72927296
<thead class=stickyheader>
72937297
<tr>
72947298
<th>Format
72957299
<th>{{GPUTextureSampleType}}
72967300
<th>{{GPUTextureUsage/RENDER_ATTACHMENT}}
72977301
<th>{{GPUTextureUsage/STORAGE}}
7302+
<th>Min/Max sampling
72987303
</thead>
72997304
<tr><th class=stickyheader>8-bit per component<th><th><th><th>
73007305
<tr>
73017306
<td>{{GPUTextureFormat/r8unorm}}
73027307
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
73037308
<td>&checkmark;
73047309
<td>
7310+
<td>&checkmark;
73057311
<tr>
73067312
<td>{{GPUTextureFormat/r8snorm}}
73077313
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
73087314
<td>
73097315
<td>
7316+
<td>&checkmark;
73107317
<tr>
73117318
<td>{{GPUTextureFormat/r8uint}}
73127319
<td>{{GPUTextureSampleType/"uint"}}
73137320
<td>&checkmark;
73147321
<td>
7322+
<td>
73157323
<tr>
73167324
<td>{{GPUTextureFormat/r8sint}}
73177325
<td>{{GPUTextureSampleType/"sint"}}
73187326
<td>&checkmark;
73197327
<td>
7328+
<td>
73207329
<tr>
73217330
<td>{{GPUTextureFormat/rg8unorm}}
73227331
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
73237332
<td>&checkmark;
73247333
<td>
7334+
<td>
73257335
<tr>
73267336
<td>{{GPUTextureFormat/rg8snorm}}
73277337
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
73287338
<td>
73297339
<td>
7340+
<td>
73307341
<tr>
73317342
<td>{{GPUTextureFormat/rg8uint}}
73327343
<td>{{GPUTextureSampleType/"uint"}}
73337344
<td>&checkmark;
73347345
<td>
7346+
<td>
73357347
<tr>
73367348
<td>{{GPUTextureFormat/rg8sint}}
73377349
<td>{{GPUTextureSampleType/"sint"}}
73387350
<td>&checkmark;
73397351
<td>
7352+
<td>
73407353
<tr>
73417354
<td>{{GPUTextureFormat/rgba8unorm}}
73427355
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
73437356
<td>&checkmark;
73447357
<td>&checkmark;
7358+
<td>
73457359
<tr>
73467360
<td>{{GPUTextureFormat/rgba8unorm-srgb}}
73477361
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
73487362
<td>&checkmark;
73497363
<td>
7364+
<td>
73507365
<tr>
73517366
<td>{{GPUTextureFormat/rgba8snorm}}
73527367
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
73537368
<td>
73547369
<td>&checkmark;
7370+
<td>
73557371
<tr>
73567372
<td>{{GPUTextureFormat/rgba8uint}}
73577373
<td>{{GPUTextureSampleType/"uint"}}
73587374
<td>&checkmark;
73597375
<td>&checkmark;
7376+
<td>
73607377
<tr>
73617378
<td>{{GPUTextureFormat/rgba8sint}}
73627379
<td>{{GPUTextureSampleType/"sint"}}
73637380
<td>&checkmark;
73647381
<td>&checkmark;
7382+
<td>
73657383
<tr>
73667384
<td>{{GPUTextureFormat/bgra8unorm}}
73677385
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
73687386
<td>&checkmark;
73697387
<td>
7388+
<td>
73707389
<tr>
73717390
<td>{{GPUTextureFormat/bgra8unorm-srgb}}
73727391
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
73737392
<td>&checkmark;
73747393
<td>
7394+
<td>
73757395
<tr><th class=stickyheader>16-bit per component<th><th><th><th>
73767396
<tr>
73777397
<td>{{GPUTextureFormat/r16uint}}
73787398
<td>{{GPUTextureSampleType/"uint"}}
73797399
<td>&checkmark;
73807400
<td>
7401+
<td>
73817402
<tr>
73827403
<td>{{GPUTextureFormat/r16sint}}
73837404
<td>{{GPUTextureSampleType/"sint"}}
73847405
<td>&checkmark;
73857406
<td>
7407+
<td>
73867408
<tr>
73877409
<td>{{GPUTextureFormat/r16float}}
73887410
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
73897411
<td>&checkmark;
73907412
<td>
7413+
<td>
73917414
<tr>
73927415
<td>{{GPUTextureFormat/rg16uint}}
73937416
<td>{{GPUTextureSampleType/"uint"}}
73947417
<td>&checkmark;
73957418
<td>
7419+
<td>
73967420
<tr>
73977421
<td>{{GPUTextureFormat/rg16sint}}
73987422
<td>{{GPUTextureSampleType/"sint"}}
73997423
<td>&checkmark;
74007424
<td>
7425+
<td>
74017426
<tr>
74027427
<td>{{GPUTextureFormat/rg16float}}
74037428
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
74047429
<td>&checkmark;
74057430
<td><!-- Vulkan -->
7431+
<td>
74067432
<tr>
74077433
<td>{{GPUTextureFormat/rgba16uint}}
74087434
<td>{{GPUTextureSampleType/"uint"}}
74097435
<td>&checkmark;
74107436
<td>&checkmark;
7437+
<td>
74117438
<tr>
74127439
<td>{{GPUTextureFormat/rgba16sint}}
74137440
<td>{{GPUTextureSampleType/"sint"}}
74147441
<td>&checkmark;
74157442
<td>&checkmark;
7443+
<td>
74167444
<tr>
74177445
<td>{{GPUTextureFormat/rgba16float}}
74187446
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
74197447
<td>&checkmark;
74207448
<td>&checkmark;
7449+
<td>
74217450
<tr><th class=stickyheader>32-bit per component<th><th><th><th>
74227451
<tr>
74237452
<td>{{GPUTextureFormat/r32uint}}
74247453
<td>{{GPUTextureSampleType/"uint"}}
74257454
<td>&checkmark;
74267455
<td>&checkmark;
7456+
<td>
74277457
<tr>
74287458
<td>{{GPUTextureFormat/r32sint}}
74297459
<td>{{GPUTextureSampleType/"sint"}}
74307460
<td>&checkmark;
74317461
<td>&checkmark;
7462+
<td>
74327463
<tr>
74337464
<td>{{GPUTextureFormat/r32float}}
74347465
<td>{{GPUTextureSampleType/"unfilterable-float"}}<!-- Metal -->
74357466
<td>&checkmark;
74367467
<td>&checkmark;
7468+
<td>&checkmark;
74377469
<tr>
74387470
<td>{{GPUTextureFormat/rg32uint}}
74397471
<td>{{GPUTextureSampleType/"uint"}}
74407472
<td>&checkmark;
74417473
<td>&checkmark;
7474+
<td>
74427475
<tr>
74437476
<td>{{GPUTextureFormat/rg32sint}}
74447477
<td>{{GPUTextureSampleType/"sint"}}
74457478
<td>&checkmark;
74467479
<td>&checkmark;
7480+
<td>
74477481
<tr>
74487482
<td>{{GPUTextureFormat/rg32float}}
74497483
<td>{{GPUTextureSampleType/"unfilterable-float"}}
74507484
<td>&checkmark;
74517485
<td>&checkmark;
7486+
<td>
74527487
<tr>
74537488
<td>{{GPUTextureFormat/rgba32uint}}
74547489
<td>{{GPUTextureSampleType/"uint"}}
74557490
<td>&checkmark;
74567491
<td>&checkmark;
7492+
<td>
74577493
<tr>
74587494
<td>{{GPUTextureFormat/rgba32sint}}
74597495
<td>{{GPUTextureSampleType/"sint"}}
74607496
<td>&checkmark;
74617497
<td>&checkmark;
7498+
<td>
74627499
<tr>
74637500
<td>{{GPUTextureFormat/rgba32float}}
74647501
<td>{{GPUTextureSampleType/"unfilterable-float"}}
74657502
<td>&checkmark;
74667503
<td>&checkmark;
7504+
<td>
74677505
<tr><th class=stickyheader>mixed component width<th><th><th><th>
74687506
<tr>
74697507
<td>{{GPUTextureFormat/rgb10a2unorm}}
74707508
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
74717509
<td>&checkmark;
74727510
<td>
7511+
<td>
74737512
<tr>
74747513
<td>{{GPUTextureFormat/rg11b10ufloat}}
74757514
<td>{{GPUTextureSampleType/"float"}},<br/>{{GPUTextureSampleType/"unfilterable-float"}}
74767515
<td><!-- Vulkan -->
74777516
<td>
7517+
<td>
74787518

74797519
</table>
74807520

@@ -7484,6 +7524,9 @@ All depth formats support {{GPUTextureUsage/COPY_SRC}}, {{GPUTextureUsage/COPY_D
74847524

74857525
None of the depth formats can be filtered.
74867526

7527+
The {{GPUTextureAspect/"depth-only"} aspect of all of the depth formats can be sampled
7528+
with {{GPUFilterMode/"minimum"}} or {{GPUFilterMode/"maximum"}} modes.
7529+
74877530
<table class='data'>
74887531
<thead>
74897532
<tr>

0 commit comments

Comments
 (0)