Commit Graph

9013 Commits

Author SHA1 Message Date
yanchith
8414b01403 Add # Safety docs to wgpu-remote
Only two unsafe functions were used internally:

- `slice::from_raw_parts`
- `Box::from_raw`

The safety messages are adapted from the safety messages of these functions.
2020-01-17 15:04:57 +01:00
yanchith
0d9ad70468 Add TODOs for range_plus_one clippy warnings 2020-01-17 14:44:17 +01:00
yanchith
53b9a01b2f Resolve trivial clippy warning 2020-01-17 14:44:02 +01:00
yanchith
741844cc2b Fix clippy errors
In wgpu-remote, some functions are now marked `unsafe` on the outside,
because they dereferenced a raw pointer they couldn't have checked
themselves.
mozilla-bb908b9156834ac2f3b297ebac9bde2e0ed3fc2e
2020-01-17 14:20:20 +01:00
bors[bot]
cf049fbc18 [rs] Merge #155
155: Update wgpu dependency r=grovesNL a=kvark

(needs an actual bump)

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-01-16 06:28:21 +00:00
Dzmitry Malyshau
b7c4ae78f9 [rs] wgpu commit update 2020-01-15 11:06:49 -05:00
Dzmitry Malyshau
32ea1638fc [rs] Enforce lifetimes of resource dependencies of passes 2020-01-15 11:06:19 -05:00
Dzmitry Malyshau
89dbdc8130 [rs] Update to wgpu version with raw passes 2020-01-15 11:06:19 -05:00
bors[bot]
3a41272cba Merge #448
448: Fix framebuffers not always being cleaned up if invalid r=kvark a=LaylConway

This changes framebuffers to be cleaned up if only one view is cleaned up, instead of if all views are cleaned up. This is necessary because currently, at least for me, swapchain images will have a different view every frame. This means that if other views continue to exist between frames, the resulting framebuffers will never be cleaned up.

Fixes #447

Co-authored-by: Layl <2385329-layl@users.noreply.gitlab.com>
2020-01-15 14:24:19 +00:00
Layl
6202d5ddad Fix framebuffers not always being cleaned up if invalid 2020-01-15 15:11:16 +01:00
bors[bot]
881222a947 Merge #451
451: Make BindGroupLayoutBinding Serializable r=kvark a=imiklos

cc @kvark @zakorgy

Co-authored-by: Istvan Miklos <istvan.miklos@h-lab.eu>
2020-01-14 20:04:21 +00:00
bors[bot]
a72574ae0f Merge #440
440: Stand-alone passes r=me,grovesNL a=kvark

Fixes #438 

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-01-14 15:20:16 +00:00
Istvan Miklos
0fdf77feb5 Make BindGroupLayoutBinding Serializable 2020-01-14 12:43:58 +01:00
Dzmitry Malyshau
a51019795e Switch to a custom fork of peek-poke 2020-01-13 16:52:59 -05:00
Dzmitry Malyshau
92441c38a2 Fix missing transitions before the render pass 2020-01-13 16:52:58 -05:00
Dzmitry Malyshau
f798f7c631 Add missing render pass methods 2020-01-13 16:52:58 -05:00
Dzmitry Malyshau
e0574ee899 Remove the old render and compute passes 2020-01-13 16:52:58 -05:00
Dzmitry Malyshau
40ac14e92c Switch the examples to use the new raw passes 2020-01-13 16:52:58 -05:00
Dzmitry Malyshau
941fcca08d Raw render pass encoding 2020-01-13 16:52:58 -05:00
Dzmitry Malyshau
c01a7c6abe Use peek-poke for compute pass encoding 2020-01-13 16:52:58 -05:00
Dzmitry Malyshau
20cd803d67 Standalone render passes 2020-01-13 16:52:58 -05:00
Dzmitry Malyshau
7808a4d4cd Stand-alone compute passes 2020-01-13 16:52:58 -05:00
bors[bot]
e80d6ab1e7 [rs] Merge #161
161: Update wgpu and winit r=kvark a=kvark



Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
2020-01-13 18:20:47 +00:00
Dzmitry Malyshau
d0dc3f7a95 [rs] Update wgpu and winit 2020-01-13 13:20:13 -05:00
Dzmitry Malyshau
469a7918e4 [rs] Update wgpu dependency 2020-01-13 12:45:52 -05:00
bors[bot]
8f1e7139d1 [rs] Merge #153
153: Update readme badges r=kvark a=rukai

Adds docs.rs badge link and replaces gitter badge with a matrix badge.

Looks like the the matrix room needs to be more public or else i've somehow messed up the matrix room name in the badge url.

Co-authored-by: Rukai <rubickent@gmail.com>
2020-01-13 15:16:49 +00:00
bors[bot]
c0fa61a064 Merge #449
449: Fix missing memory release r=kvark a=zakorgy

This fixes the issue where the underlying memory of buffers and textures not released when calling `Global::delete`.
cc @kvark

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/gfx-rs/wgpu/449)
<!-- Reviewable:end -->


Co-authored-by: Zakor Gyula <gyula.zakor@h-lab.eu>
2020-01-13 15:15:44 +00:00
Zakor Gyula
2fbda5a3c1 Fix missing memory release 2020-01-13 15:44:15 +01:00
Zakor Gyula
94fe1436f1 Fix missing memory allocator disposal 2020-01-13 15:44:15 +01:00
Rukai
ea50583a54 [rs] Update readme badges 2020-01-14 00:01:16 +11:00
bors[bot]
9777bbba36 Merge #446
446: Prefer discrete GPU for PowerPreference::Default r=kvark a=aloucks



Co-authored-by: Aaron Loucks <aloucks@cofront.net>
2020-01-12 23:07:45 +00:00
Aaron Loucks
5ca57374f6 Check power/battery status when selecting adaptors
PowerPreference::Default will now prefer discrete GPUs
when on AC power and will prefer integrated GPUs while
on battery power (i.e. the battery is discharging).
2020-01-12 17:26:54 -05:00
bors[bot]
39e167d4d6 [rs] Merge #157
157: Handle resizing in hello-triangle r=kvark a=quadrupleslap

Nothing gets drawn on my computer unless the swap chain is resized along with the window.

```
$ uname -a
Linux red 5.3.7-arch1-1-ARCH #1 SMP PREEMPT Fri Oct 18 00:17:03 UTC 2019 x86_64 GNU/Linux
$ wmctrl -m
Name: bspwm
Class: wm
PID: 665
Window manager's "showing the desktop" mode: N/A
```

Co-authored-by: Ram Kaniyur <quadrupleslap@gmail.com>
2020-01-12 20:04:25 +00:00
bors[bot]
1592567596 [rs] Merge #158
158: Accept DOS line endings in examples/boids r=kvark a=quadrupleslap

Resolves #150.

Co-authored-by: Ram Kaniyur <quadrupleslap@gmail.com>
2020-01-12 19:51:11 +00:00
Aaron Loucks
4b46e885fd Prefer discrete GPU for PowerPreference::Default 2020-01-11 03:07:45 -05:00
Ram Kaniyur
3f94dcf621 [rs] Accept DOS line endings in examples/boids 2020-01-11 12:55:51 +11:00
Ram Kaniyur
b10b76f95c [rs] Handle resizing in hello-triangle 2020-01-11 11:53:31 +11:00
bors[bot]
3a11fab693 Merge #439
439: Refactor usage tracking to be truly sparse r=dependency a=kvark

~~This is a required step towards #438 . We want to be tracking the usage by only having resource IDs around, not resources themselves. So we aren't going to have access to `full_selector`.~~

It's also streamlining some of the verbose parts of the internal API for usage tracking.
It also uses `SmallVec` for the texture tracker ranges, essentially making it lightweight for most cases (where the layer count is 1).

Compromises:
  - removes `SEPARATE_DEPTH_STENCIL_STATES` support. It's not in the near future to enable it anyway.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-01-09 04:23:34 +00:00
Dzmitry Malyshau
bcf533fd89 Refactor usage tracker init() 2020-01-08 23:19:52 -05:00
Dzmitry Malyshau
017a54ff97 Refactor usage tracking to be truly sparse 2020-01-08 22:43:19 -05:00
bors[bot]
ba0acc94a1 Merge #427
427: Rewrite of the resource lifetime tracking r=crossed-fingers a=kvark

Addresses this TODO item in `triage_referenced()`:
> //TODO: lock less, if possible

Now, also fixes #428 

Pros:
  - only locking the storages that need to be, and only for the duration of their cleanup
  - less run-time branching, more predefined code paths, which may lead to better cache utilization (thinking of both instruction and data cache here)
  - more consistent use of `Stored` type

Cons:
  - a bit of verbosity / code duplication in `triage_referenced()`. In particular, the code that finds where to register an unreferenced resource, it used to be unified for all resources.

---
@grovesNL this should be reviewable on a commit basis. The high-level breakdown of changes is:
  1. Switch from enum of resource types to structure of arrays for the matter of lifetime tracker
  2. Rename the involved structures to better reflect what they do (the old `PendingResources` was bad)
  3. Separate lifetime tracking into a sub-module
  4. Make `RefCount` in objects optional, getting the semantics of "user needs it" when `Some`.
  5. Rewrite the first stage of lifetime tracking: instead of permanently staging resources that the user doesn't need, and adding strong refcounts to them, we only populate it temporarily with anything that gets the refcount reduced. This means less overhead for `maintain()` at an increased risk of leaking some stuff (depends on our code quality).
  6. Consequently, device tracker becomes the main (and last) owner of all the resources.

Overall, it's a major change and risk. I tested on `vange-rs` (which I consider to be the most complex wgpu-rs app) with Vulkan validation enabled, and it seems all to be working good now.

Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2020-01-08 23:26:44 +00:00
Dzmitry Malyshau
bbe0d7df1b Command buffer/encoder destruction 2020-01-08 18:14:45 -05:00
Dzmitry Malyshau
59a9d14c81 Suspect unlinked resources used in submissions 2020-01-08 18:14:07 -05:00
Dzmitry Malyshau
040efa2820 Fix refcount use of the texture view source 2020-01-08 18:13:43 -05:00
Dzmitry Malyshau
bf8c9fe27b Make device tracker to be the last home for destroyed resources 2020-01-08 18:13:43 -05:00
Dzmitry Malyshau
73f6fbbf88 use full Id paths in the device module 2020-01-08 18:10:53 -05:00
Dzmitry Malyshau
3a40ba2d60 Move lifetime tracker into a separate module 2020-01-08 18:10:53 -05:00
Dzmitry Malyshau
9acefac5b3 Heavy refactor of resource lifetime tracking 2020-01-08 18:06:28 -05:00
bors[bot]
eedc706ee7 Merge #442
442: Fix cmd buffer cleanup not always using lowest active index r=kvark a=LaylConway

This fixes the index picked for cleanup not always being the lowest index.
Additionally this fixes command buffers not being cleaned up if there are no active submissions, because in that case 0 would be picked, which resulted in nothing being cleaned up. Now instead if there are no active submissions, usize MAX will be picked.

Fixes #441 

Co-authored-by: Layl <2385329-layl@users.noreply.gitlab.com>
2020-01-08 04:54:01 +00:00
Layl
a221ca1c12 Fix cmd buffer cleanup not always using lowest active index 2020-01-08 01:17:58 +01:00