Commit Graph

174 Commits

Author SHA1 Message Date
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
Park Joon-Kyu
e91cfa4dc3 Enable wayland support for examples/triangle 2020-01-02 17:10:45 +09:00
Dzmitry Malyshau
3908d2b5a1 Cleanup exports 2019-11-19 10:59:24 -05:00
Dzmitry Malyshau
6c632d1366 Separate native from the core 2019-11-16 00:36:23 -05:00
Dzmitry Malyshau
b9aed69bed More licenses for Gecko 2019-11-15 11:51:46 -05:00
Joshua Groves
2b1ce5d6d9 Use callback for request_adapter 2019-11-07 09:55:27 -06:00
Anton Lazarev
027a61a48d
return Result instead of panic 2019-11-01 11:11:43 -07:00
Dzmitry Malyshau
4635f1eb07 Extended remote example 2019-10-29 13:31:40 -04:00
bors[bot]
b71fc33c72
Merge #359
359: Make examples work again r=kvark a=GabrielMajeri

This PR fixes the C example code to not crash and actually run.

I've also added a few assertions to ensure a warning is emitted next time somebody forgots to increase `max_bind_groups` to something non-zero on device creation.

To help with debugging the examples, I've configured CMake to include debug info in the builds. Some new Makefile targets for the examples have been added to automate running them.

Co-authored-by: Gabriel Majeri <gabriel.majeri6@gmail.com>
2019-10-26 21:08:16 +00:00
Gabriel Majeri
eb198a9c3e Fix C examples
Get the examples running again.

The compute example has been simplified to use only one buffer.

A new check has been added to ensure the `max_bind_groups`
device limit is properly set.
2019-10-26 22:13:53 +03:00
Dzmitry Malyshau
538c23b039 Implement shutdown for the remote server 2019-10-25 22:56:52 -04:00
Dzmitry Malyshau
175e992149 DX12/DX11 hookup, improved adapter selection 2019-08-29 09:44:34 -04:00
Dzmitry Malyshau
e84ae4a4b2 Feature-less backend selection
This PR removes optional backend features in favor of run-time
selection at the `request_adapter` entry point. Adapters from all
supported gpu backends on the platform are reported.

It also makes gfx-rs dependency to be public (for now).
2019-08-27 20:55:49 -04:00
Dzmitry Malyshau
1d36203c9a Raw window handle support instead of winit 2019-08-20 23:41:14 -04:00
yanchith
3abaed36c3 Rename buffer to encoder in wgpu_command_buffer_copy_* functions
This also regenerates `wgpu.h` and updates uses of
`wgpu_command_buffer_copy_buffer_to_buffer` in `compute/main.c`
2019-08-20 21:43:49 +02:00
Dzmitry Malyshau
f82ceba3c2 Minor renames to address the review comments 2019-08-16 22:36:30 -04:00
Dzmitry Malyshau
37afa0d98a Update API according to the upstream spec
Includes changes in texture view creation, enumeration mapping,
binding types, and more.
2019-08-15 23:24:35 -04:00
Dzmitry Malyshau
d37452ff27 Force pipeline barriers between unordered usages 2019-08-14 10:35:40 -04:00
Rukai
e61b16f7ed Update to gfx hal 0.3 2019-08-11 09:39:52 +10:00
Fabio Krapohl
6fee18f6f9 remove end pass return value and fix examples 2019-08-10 22:30:24 +02:00
Timo de Kort
842809bc0b add framework files 2019-07-27 14:30:20 +02:00
Timo de Kort
d759da409f add compute example 2019-07-27 14:26:06 +02:00
Noah Hüsser
c5c7092d9c Make PresentMode configurable
Disable vsync

Revert accidential hardcode of num_frames

Make the PresentMode configurable

Adapt examples
+ adjust style according to @kvrak

Adher to @kvarks wishes for style.

Examples build.

Fix unnecessary ampersand.
2019-07-11 18:58:44 +02:00
bors[bot]
b1d9de0406 Merge #169
169: Add Windows/glfw3 to CI r=kvark a=grovesNL



Co-authored-by: Joshua Groves <josh@joshgroves.com>
2019-06-05 01:55:24 +00:00
Joshua Groves
7e7a88b831 Add Windows/glfw3 to CI 2019-06-04 22:09:58 -02:30
bors[bot]
85740873d0 Merge #212
212: More consistent descriptor passing r=kvark a=porky11

also use pointer for descriptor in `wgpu_command_encoder_begin_render_pass` for consistency reasons

Co-authored-by: Fabio Krapohl <fabio.u.krapohl@fau.de>
2019-06-04 20:20:10 +00:00
Fabio Krapohl
8abc1c2668 also use pointer for descriptor in wgpu_command_encoder_begin_render_pass for consistency reasons 2019-06-04 22:13:48 +00:00
Fabio Krapohl
488367ce30 More consistent naming of pointer-size-pairs:
* always plural form without _ptr suffix for pointers
* always same name as pointer for size, but with _length suffix
* special case: single size applies to multiple pointers => only use length as name
2019-06-04 21:41:39 +00:00
bors[bot]
c204199dc2 Merge #192
192: add necessary windows lib files for vulkan, dx12, dx11 r=kvark a=Napokue

Introduce new argument BACKEND to specify the back-end framework in the hello_triangle_c CMake script. I will update the other examples, hello_remote_c & hello_compute_c (working on this one) in a future PR.

fix #188 

Co-authored-by: Timo de Kort <dekort.timo@gmail.com>
2019-05-27 14:41:11 +00:00
Timo de Kort
7bb528186f add DX11 support 2019-05-26 19:46:43 +02:00
Timo de Kort
9b0607973e resolve PR comments
- pass backends from the Makefile to the CMakeLists file
- add check to see if the BACKEND argument is set
- add dbghelp lib file
2019-05-26 18:23:19 +02:00
Timo de Kort
747defd01b add necessary windows lib files for vulkan/dx12
introduce new argument feature-native to specify the back-end framework
2019-05-25 18:42:59 +02:00
Joshua Groves
328e53852a Use required option for glfw3 2019-05-24 23:30:28 -02:30
Bruce Mitchener
b21a0c12af Remove unused variable on Metal code path. 2019-05-24 14:46:11 +07:00
Dzmitry Malyshau
a9063ce3eb Fix RenderPassColorAttachmentDescriptor 2019-05-15 22:38:59 -07:00
Dzmitry Malyshau
f024758e07 Track stencil reference 2019-05-14 11:58:10 -04:00
Dzmitry Malyshau
6a1dcb9565 API update with naming, formats, and extra fields 2019-05-14 10:31:25 -04:00
Rukai
637a0883e7 Handle resize in the triangle example 2019-05-13 20:57:49 +10:00
Dzmitry Malyshau
540451a66d Fix cbindgen macro expansion and CI 2019-05-10 21:55:09 -04:00
Dzmitry Malyshau
5eda162748 Readme update 2019-05-10 20:40:42 -04:00
Dzmitry Malyshau
6ce9cbd679 Remove Rust wrapper and examples 2019-05-10 20:40:42 -04:00
Rukai
16cc03be31 Update deps + upgrade examples to rust 2018 2019-05-07 22:38:41 +10:00
Dzmitry Malyshau
6ac666a5aa Introduce ClientFactory 2019-04-30 15:37:46 -04:00
Dzmitry Malyshau
61fca00f34 Remove wgpu-bindings in favor of configuration scripts 2019-04-30 12:45:05 -04:00
Dzmitry Malyshau
0011d9f4ff Global manager for instance names on the remote client 2019-04-30 09:19:40 -04:00
Dzmitry Malyshau
52ee3e019c Remote example and improved header, tested on CI 2019-04-29 22:41:09 -04:00
Alexis Sellier
c468840eee
Support dynamic offsets
Closes #125

* Add support for dynamic offsets when setting a bind group.
* Add new binding types: `UniformBufferDynamic` and `StorageBufferDynamic`
2019-04-26 22:20:54 +02:00
Atul Bhosale
af38d79d79
Format code using 'cargo fmt' 2019-04-26 22:01:47 +05:30
bors[bot]
993293f709 Merge #127
127: Track async mapping properly r=grovesNL,swiftcoder a=kvark

Fixes #117, fixes #95, fixes #132 

The change can be logically split into 3 parts:
  1. when `ActiveSubmission` is retired, we now move the mapped buffers into the "ready to map" vector. This was the missing bit that caused mapping to not work previously.
  2. mapping callbacks in Rust wrapper are refactored and they `unmap()` automatically now on users behalf
  3. we wait for idle before destroying the device, which allows us to process all the pending callbacks. This fix gets rid of the dummy submission our compute example used to do.

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
2019-04-25 13:36:59 +00:00
Dzmitry Malyshau
41141b1ae0 Wait for fences instead of device idle 2019-04-24 22:42:49 -04:00
psincf
e70b01ccc0
Fix winit event loop in the triangle example 2019-04-22 22:59:25 +02:00
Dzmitry Malyshau
1f4d67aeb2 Track async mapping properly 2019-04-22 13:57:35 -04:00
Dzmitry Malyshau
a3ffa7072a Fix the triangle examples 2019-03-31 20:03:24 -04:00
Dzmitry Malyshau
2ca7fd5077 Fix winit swapchain sizes in examples 2019-03-24 23:50:26 -04:00
bors[bot]
cf521d6074 Merge #96
96: Add the static lifetime bound to async buffer mapping callbacks r=kvark a=aloucks

These callbacks are executed outside of the mapping function and could previously reference data that had been dropped. Related #95.

Co-authored-by: Aaron Loucks <aloucks@cofront.net>
2019-03-23 02:21:03 +00:00
Aaron Loucks
e0811db8d4 Triage buffers prior to overwriting the submission index
This allows async buffer mapping to function when a renderpass
is also submitted on the queue. The state transition and fencing
still needs work, however.
2019-03-12 22:15:37 -04:00
Aaron Loucks
86e1249949 Add the static lifetime bound to async buffer mapping callbacks
These callbacks are executed outside of the mapping function and could
previously reference data that had been dropped. This fixes the
soundness issues described in #95, but not the buggy mapping
behavior.
2019-03-11 17:11:29 -04:00
Joshua Groves
5322f3c610 Reduce left indentation for nested structs 2019-03-08 07:15:36 -07:00
Joshua Groves
b2c58c7791 Add nested designated initialization 2019-03-07 20:48:37 -07:00
Joshua Groves
580e49f2cf Start rendering C example again 2019-03-07 20:15:12 -07:00
Joshua Groves
510865dd27 Restore GLFW for macOS 2019-03-07 19:19:10 -07:00
Joshua Groves
75ac875902 Start to update C example 2019-03-07 07:43:19 -07:00
Joshua Groves
fa2c2d7457 Combine Apple with other targets 2019-03-07 07:34:27 -07:00
Tristam MacDonald
1fe59e71db run cargo fmt 2019-03-05 20:41:24 -08:00
Tristam MacDonald
6ef53d7705 Convert shadow sample to map_async 2019-03-05 19:04:21 -08:00
bors[bot]
2d166d2155 Merge #80
80: Typed mapping of buffers r=kvark a=swiftcoder

Add a sprinkling of generics to remove the need for unsafe code to typecast slices resulting from mapping buffers.

Co-authored-by: Tristam MacDonald <tristam@trist.am>
2019-02-28 15:26:21 +00:00
Tristam MacDonald
524ff72fd3 Typed mapping of buffers
Add a sprinkling of generics to remove the need for unsafe
code to typecast slices resulting from mapping buffers.
2019-02-28 06:56:47 -08:00
bors[bot]
370236330f Merge #82
82: Add updated texture formats r=kvark a=unconed

Adds the texture formats from:
https://github.com/gpuweb/gpuweb/blob/master/design/sketch.webidl


Co-authored-by: Steven Wittens <steven@acko.net>
2019-02-28 14:50:35 +00:00
Steven Wittens
b74b7fdd8c Update textureformats in examples 2019-02-28 06:36:45 +01:00
Tristam MacDonald
0f85eb86a1 Buffer tracking and unmapping
Adds preliminary transitioning of buffers to mapped state.
Adds buffer unmapping to the cube sample.
Modifies wgpu_queue_submit to not hold a write lock on the device during callbacks.
2019-02-27 21:15:47 -08:00
Dzmitry Malyshau
d631b2c6f2 Fix depth clamping semantics 2019-02-26 22:36:58 -05:00
Tristam MacDonald
8431da80ed Implement map read/write async 2019-02-26 06:45:07 -08:00
Dzmitry Malyshau
056cc64eb4 Shadow example shaders and improvements 2019-02-22 12:59:29 -05:00
Dzmitry Malyshau
855bcfe176 Resource destruction refactoring, hook up to rust 2019-02-21 08:42:57 -05:00
Dzmitry Malyshau
00e0347b8c Renamed the impl methods, switched structure argumetns from references to contained items 2019-02-15 10:13:04 -05:00
Dzmitry Malyshau
2e21285434 Separate object identity from storage 2019-02-14 14:28:55 -05:00
Dzmitry Malyshau
844d371989 Command encoder interface 2019-02-12 16:48:56 -05:00
bors[bot]
3274fc92f5 Merge #54
54: Document how to run examples r=grovesNL a=rukai

I had assumed the triangle example wasn't functional yet, because I didn't realize I had to specify a feature. I only realized it was supposed to work when I saw a screenshot of the cube example.

I'm not sure what the future is of the triangle example? Will it remain outside of the gfx-examples folder?

Co-authored-by: Rukai <rubickent@gmail.com>
2019-02-12 14:30:30 +00:00
Rukai
9374d52272 Document how to run examples 2019-02-12 22:01:49 +11:00
Tristam MacDonald
5f0df67dcc Initial compute pipeline support 2019-02-11 19:02:18 -08:00
Dzmitry Malyshau
3ec4ff99b0 Vertex buffer description in the pipelines 2019-02-03 20:39:13 -05:00
Dzmitry Malyshau
afe00aa90f Borrow temporary queus and frames on Rust side 2019-02-02 21:02:33 -05:00
Dzmitry Malyshau
57f0cd184f native: basic support for pipeine stages in barriers 2019-01-31 21:42:35 -05:00
Dzmitry Malyshau
e8e5938e06 Linux support for GLFW example 2019-01-24 12:33:34 -05:00
Joshua Groves
3d98457eb9 Add support for GLFW on Windows 2019-01-24 12:08:32 -05:00
Joshua Groves
26f965cfbb Use CMake and update triangle example 2019-01-24 12:08:32 -05:00
Dzmitry Malyshau
edf269dbed Remove the non-winit path from the example 2019-01-22 17:10:08 -08:00
Dzmitry Malyshau
2ec9d05074 Triangle example, minor corrections 2019-01-21 19:20:09 -05:00
Joshua Groves
6cb9806408 Remove glfw submodule 2019-01-21 02:57:04 -07:00
Joshua Groves
f647fd8030 Regenerate bindings 2019-01-20 16:25:49 -07:00
Dzmitry Malyshau
5deb6e2047 DX11 support 2019-01-17 23:03:11 -05:00
Dzmitry Malyshau
2221b112c7 Fix command buffer recycling 2019-01-17 21:11:01 -05:00
Dzmitry Malyshau
c868db2cc7 Windowing in the triangle example, more presentation bits 2019-01-17 09:42:59 -05:00
porky11
a5a5b88014 use rustfmt for formatting after edits 2019-01-12 19:15:48 +01:00
Dzmitry Malyshau
f4bb1903bf Fix deadlock in barrier insertion 2018-12-01 22:53:21 -05:00
Dzmitry Malyshau
9aa5977c22 Bindings update with the new cbindgen 0.6.7 2018-10-30 22:02:07 -04:00
Dzmitry Malyshau
fee276afa5 Cache render passes on Device level 2018-10-30 16:37:36 -04:00
Dzmitry Malyshau
879cd64b30 Texture view creation in Rust and the example 2018-10-26 12:04:20 -04:00
Dzmitry Malyshau
de4f2b70eb Framebuffer creation and actual begin_render_pass 2018-10-25 22:29:27 -04:00
Dzmitry Malyshau
32b92afa5c Root Makefile 2018-10-22 12:01:42 -04:00