[cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxComputeWorkgroupsPerDimension:dispatchWorkgroups,at_over:*]
  implementation-status: backlog
  expected:
    if os == "win" and debug: [OK, TIMEOUT]
    if os == "linux": [OK, TIMEOUT]
    if os == "mac": [OK, TIMEOUT]
  [:limitTest="atDefault";testValueName="atLimit";pipelineType="createComputePipeline";axis=0]

  [:limitTest="atDefault";testValueName="atLimit";pipelineType="createComputePipeline";axis=1]

  [:limitTest="atDefault";testValueName="atLimit";pipelineType="createComputePipeline";axis=2]

  [:limitTest="atDefault";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=0]

  [:limitTest="atDefault";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=1]

  [:limitTest="atDefault";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=2]

  [:limitTest="atDefault";testValueName="overLimit";pipelineType="createComputePipeline";axis=0]
    expected: FAIL

  [:limitTest="atDefault";testValueName="overLimit";pipelineType="createComputePipeline";axis=1]
    expected:
      if os == "win": FAIL
      if os == "linux" and debug: FAIL
      if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": FAIL

  [:limitTest="atDefault";testValueName="overLimit";pipelineType="createComputePipeline";axis=2]
    expected:
      if os == "win": FAIL
      if os == "linux" and debug: FAIL
      if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": FAIL

  [:limitTest="atDefault";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=0]
    expected:
      if os == "win": FAIL
      if os == "linux" and debug: FAIL
      if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": FAIL

  [:limitTest="atDefault";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=1]
    expected:
      if os == "win": FAIL
      if os == "linux" and debug: FAIL
      if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": FAIL

  [:limitTest="atDefault";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=2]
    expected:
      if os == "win": FAIL
      if os == "linux" and debug: FAIL
      if os == "linux" and not debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": FAIL

  [:limitTest="atMaximum";testValueName="atLimit";pipelineType="createComputePipeline";axis=0]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="atLimit";pipelineType="createComputePipeline";axis=1]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="atLimit";pipelineType="createComputePipeline";axis=2]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=0]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=1]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=2]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="overLimit";pipelineType="createComputePipeline";axis=0]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="overLimit";pipelineType="createComputePipeline";axis=1]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="overLimit";pipelineType="createComputePipeline";axis=2]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=0]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=1]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="atMaximum";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=2]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";pipelineType="createComputePipeline";axis=0]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";pipelineType="createComputePipeline";axis=1]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";pipelineType="createComputePipeline";axis=2]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=0]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=1]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=2]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";pipelineType="createComputePipeline";axis=0]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";pipelineType="createComputePipeline";axis=1]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";pipelineType="createComputePipeline";axis=2]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=0]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=1]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="betweenDefaultAndMaximum";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=2]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="atLimit";pipelineType="createComputePipeline";axis=0]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="atLimit";pipelineType="createComputePipeline";axis=1]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="atLimit";pipelineType="createComputePipeline";axis=2]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=0]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=1]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=2]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="overLimit";pipelineType="createComputePipeline";axis=0]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="overLimit";pipelineType="createComputePipeline";axis=1]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="overLimit";pipelineType="createComputePipeline";axis=2]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=0]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=1]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="overMaximum";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=2]
    expected:
      if os == "win" and debug: [PASS, TIMEOUT, NOTRUN]
      if os == "linux": [PASS, TIMEOUT, NOTRUN]
      if os == "mac": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="atLimit";pipelineType="createComputePipeline";axis=0]
    expected:
      if os == "linux": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="atLimit";pipelineType="createComputePipeline";axis=1]
    expected:
      if os == "linux": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="atLimit";pipelineType="createComputePipeline";axis=2]
    expected:
      if os == "linux": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=0]
    expected:
      if os == "linux": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=1]
    expected:
      if os == "linux": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="atLimit";pipelineType="createComputePipelineAsync";axis=2]
    expected:
      if os == "linux": [PASS, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipeline";axis=0]
    expected:
      if os == "win": FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": FAIL

  [:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipeline";axis=1]
    expected:
      if os == "win": FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipeline";axis=2]
    expected:
      if os == "win": FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=0]
    expected:
      if os == "win": FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=1]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]

  [:limitTest="underDefault";testValueName="overLimit";pipelineType="createComputePipelineAsync";axis=2]
    expected:
      if os == "win" and debug: [FAIL, TIMEOUT, NOTRUN]
      if os == "win" and not debug: FAIL
      if os == "linux": [FAIL, TIMEOUT, NOTRUN]
      if os == "mac": [FAIL, TIMEOUT, NOTRUN]


[cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxComputeWorkgroupsPerDimension:validate:*]
  [:]
