summaryrefslogtreecommitdiffstats
path: root/third_party/rust/metal/examples/fence/main.rs
blob: 53515d39f5e23f4908e4ffbbceae86095fbf9375 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Copyright 2020 GFX developers
//
// Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or
// http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
// http://opensource.org/licenses/MIT>, at your option. This file may not be
// copied, modified, or distributed except according to those terms.

use metal::*;

fn main() {
    let device = Device::system_default().expect("No device found");

    let command_queue = device.new_command_queue();
    let command_buffer = command_queue.new_command_buffer();

    let fence = device.new_fence();

    let blit_encoder = command_buffer.new_blit_command_encoder();
    blit_encoder.update_fence(&fence);
    blit_encoder.end_encoding();

    let compute_encoder = command_buffer.new_compute_command_encoder();
    compute_encoder.wait_for_fence(&fence);
    compute_encoder.end_encoding();

    command_buffer.commit();
    command_buffer.wait_until_completed();

    println!("Done");
}