|
246 | 246 | <a href="#245" id="245">245</a> |
247 | 247 | <a href="#246" id="246">246</a> |
248 | 248 | <a href="#247" id="247">247</a> |
249 | | -<a href="#248" id="248">248</a> |
250 | | -<a href="#249" id="249">249</a> |
251 | | -<a href="#250" id="250">250</a> |
252 | | -<a href="#251" id="251">251</a> |
253 | | -<a href="#252" id="252">252</a></pre></div><pre class="rust"><code><span class="doccomment">//! See hello-compute example main.rs for more details |
| 249 | +<a href="#248" id="248">248</a></pre></div><pre class="rust"><code><span class="doccomment">//! See hello-compute example main.rs for more details |
254 | 250 | //! as similar items here are not explained. |
255 | 251 | //! |
256 | 252 | //! This example does elaborate on some things though that the |
257 | 253 | //! hello-compute example does not such as mapping buffers |
258 | 254 | //! and why use the async channels. |
259 | 255 |
|
260 | | -</span><span class="kw">const </span>OVERFLOW: u32 = <span class="number">0xffffffff</span>; |
| 256 | +</span><span class="kw">use </span>nanorand::Rng; |
| 257 | + |
| 258 | +<span class="kw">const </span>OVERFLOW: u32 = <span class="number">0xffffffff</span>; |
261 | 259 |
|
262 | 260 | <span class="kw">async fn </span>run() { |
263 | 261 | <span class="kw">let </span><span class="kw-2">mut </span>numbers = [<span class="number">0u32</span>; <span class="number">256</span>]; |
264 | 262 | <span class="kw">let </span>context = WgpuContext::new(size_of_val(<span class="kw-2">&</span>numbers)).<span class="kw">await</span>; |
265 | 263 |
|
266 | 264 | <span class="kw">for _ in </span><span class="number">0</span>..<span class="number">10 </span>{ |
267 | 265 | <span class="kw">for </span>p <span class="kw">in </span>numbers.iter_mut() { |
268 | | - <span class="kw-2">*</span>p = generate_rand() <span class="kw">as </span>u32; |
| 266 | + <span class="kw-2">*</span>p = nanorand::tls_rng().generate::<u16>() <span class="kw">as </span>u32; |
269 | 267 | } |
270 | 268 |
|
271 | 269 | compute(<span class="kw-2">&mut </span>numbers, <span class="kw-2">&</span>context).<span class="kw">await</span>; |
|
281 | 279 | } |
282 | 280 | } |
283 | 281 |
|
284 | | -<span class="kw">fn </span>generate_rand() -> u16 { |
285 | | - <span class="kw">let </span><span class="kw-2">mut </span>bytes = [<span class="number">0u8</span>; <span class="number">2</span>]; |
286 | | - getrandom::getrandom(<span class="kw-2">&mut </span>bytes[..]).unwrap(); |
287 | | - u16::from_le_bytes(bytes) |
288 | | -} |
289 | | - |
290 | 282 | <span class="kw">async fn </span>compute(local_buffer: <span class="kw-2">&mut </span>[u32], context: <span class="kw-2">&</span>WgpuContext) { |
291 | 283 | <span class="macro">log::info!</span>(<span class="string">"Beginning GPU compute on data {local_buffer:?}."</span>); |
292 | 284 | <span class="comment">// Local buffer contents -> GPU storage buffer |
|
0 commit comments