Commit Graph
3221 Commits
Author SHA1 Message Date
582dfc1e4c Fix texture validation logic (#2509)
* fix mip level computation for asmjs and add support for srgb textures in es2/webgl

* fix BX_TRACE in glcontext_html5.cpp

* fix wrong logic in texture validation

Co-authored-by: Sebastian Marketsmueller <sebastianm@hq.unity3d.com>
Co-authored-by: Vladimir Vukicevic <vladimir@pobox.com>
2021-05-06 10:58:37 -07:00
pezcode 97c4abef01 GLES: fix compilation (#2508) 2021-05-05 14:24:35 -07:00
pezcode 2c21f68998 VPRT support for D3D11, D3D12, GL (#2507)
* glsl-optimizer: whitelist ARB_shader_viewport_layer_array_enable

* D3D11: remove duplicate structs and enums

* D3D11: report BGFX_CAPS_VIEWPORT_LAYER_ARRAY

* D3D12: report BGFX_CAPS_VIEWPORT_LAYER_ARRAY

* GL: support for BGFX_CAPS_VIEWPORT_LAYER_ARRAY

* D3D11: multi-layer MSAA resolve

* D3D12: multi-layer MSAA resolve

* D3D12: fix binding multi-layer resolved textures

* GL: fix multi-layer rendertarget creation
2021-05-05 11:58:21 -07:00
pezcode 56fbe55b3d Vulkan: occlusion queries, housekeeping - attempt 2 (#2506)
* Cleanup

* Request host-cached memory for readback

* Request device-visible memory for the uniform buffer

* Use more fine-grained image memory barrier stages

* Don't rebind vertex and index buffers if not necessary

* Timer queries

* Don't transition images during a renderpass

* Cache descriptor sets

* Trigger RenderDoc capture if requested

* Fix invalid command buffer after surface recreation

* Perform clear and blit before compute

* Use init.debug to enable validation layers

...instead of always enabling them in debug config

* Only resolve framebuffer once

* Report number of primitives without index buffer

* Minimize state changes

* Occlusion queries

* Transition swapchain image from undefined layout

* Make sure we have a combined graphics and compute queue family

Existing code already makes that assumption, otherwise we'd need different command queues and explicit resource queue transitions. The spec also guarantees that a device with such a queue family should exist.

* Release cached image views on texture destruction

* Fix stencil-only clear

* Fix non-zero integer format clear

* Annotate all optional functions with their extensions

* Support for BGFX_SAMPLER_SAMPLE_STENCIL

* Remove unused extension functions

* Support for BGFX_SAMPLER_BORDER_COLOR

* Undo descriptor set cache

Try this again in another PR... the hashing doesn't quite work with some bind combinations, and the cache needs a better eviction strategy

* Don't start renderpass for empty draw calls

* Advertize graphics debugger, if present

ie. RenderDoc

* Cleanup

* Only enable required features and extensions

* Don't spam warning about swapchain format fallback

* Cleanup
2021-05-03 10:17:43 -07:00
Бранимир Караџић 9528c5d68a Revert "Vulkan: occlusion queries, housekeeping (#2505)"
This reverts commit 2fb67a707b.
2021-05-02 20:15:16 -07:00
pezcode 2fb67a707b Vulkan: occlusion queries, housekeeping (#2505)
* Cleanup

* Request host-cached memory for readback

* Request device-visible memory for the uniform buffer

* Use more fine-grained image memory barrier stages

* Don't rebind vertex and index buffers if not necessary

* Timer queries

* Don't transition images during a renderpass

* Cache descriptor sets

* Trigger RenderDoc capture if requested

* Fix invalid command buffer after surface recreation

* Perform clear and blit before compute

* Use init.debug to enable validation layers

...instead of always enabling them in debug config

* Only resolve framebuffer once

* Report number of primitives without index buffer

* Minimize state changes

* Occlusion queries

* Transition swapchain image from undefined layout

* Make sure we have a combined graphics and compute queue family

Existing code already makes that assumption, otherwise we'd need different command queues and explicit resource queue transitions. The spec also guarantees that a device with such a queue family should exist.

* Release cached image views on texture destruction

* Fix stencil-only clear

* Fix non-zero integer format clear

* Annotate all optional functions with their extensions

* Support for BGFX_SAMPLER_SAMPLE_STENCIL

* Remove unused extension functions

* Support for BGFX_SAMPLER_BORDER_COLOR

* Undo descriptor set cache

Try this again in another PR... the hashing doesn't quite work with some bind combinations, and the cache needs a better eviction strategy

* Don't start renderpass for empty draw calls

* Advertize graphics debugger, if present

ie. RenderDoc

* Cleanup

* Only enable required features and extensions

* Don't spam warning about swapchain format fallback

* Cleanup
2021-05-02 20:09:33 -07:00
James Fulop 43db77159d fix unintialized memory (#2499)
this then caused `DX_RELEASE(m_msaaRt, 0);` in `error:` to fire an assert since it tries to deref the garbage ptr
2021-04-29 17:46:24 -07:00
Бранимир Караџић 9310d19141 Cleanup. 2021-04-27 09:18:22 -07:00
Бранимир Караџић d01f86a6a9 Cleanup. 2021-04-26 19:54:58 -07:00
Бранимир Караџић c319aa909e Fixed build. 2021-04-23 22:30:21 -07:00
SnapperTT ffde01f8c9 Fix change in blend rgba not being detected as a state change (#2494) 2021-04-23 20:15:01 -07:00
Бранимир Караџић 117c999d6e Added bgfx::Init capabilities mask. 2021-04-22 20:18:48 -07:00
pezcode 87855128bb Vulkan: merge shared shader bindings (#2492) 2021-04-22 12:09:54 -07:00
pezcode 8e76e5e85c Vulkan: multiple windows, capture support (#2491)
* Use correct aspect masks for stencil-only textures

* Make vkEnumerateInstanceVersion optional

This makes init not abort on Vulkan 1.0

* Move swapchain into FrameBufferVK

* Remove duplicate render pass creation code

* Manually resolve MSAA backbuffer

not guaranteed to be supported, but reduces resolve operations from 2 * (num views using backbuffer) to 1

* Support for multiple windows (BGFX_CAPS_SWAP_CHAIN)

* Capture support (BGFX_RESET_CAPTURE)

* Display present timings

* Recreate surface if native window handle changed

* Delayed swapchain deletion on resize

no more vkDeviceWaitIdle

* Recreate surface if BGFX_RESET_HIDPI is toggled

* Don't recreate swapchain if only the MSAA sample count changed

* Some extra caps checks

* Configurable backbuffer depth format

* Configurable backbuffer color format
2021-04-21 18:41:49 -07:00
Hugo Amnov 9320a20e72 WebGPU: Don't need bindings backward compatibility (#2488) 2021-04-21 12:17:55 -07:00
Hugo Amnov ec36cf9872 Simplify SPIRV bindings shifts (shaderc bin version 11) (#2487) 2021-04-21 09:33:12 -07:00
Hugo Amnov 9695c0b155 WebGPU: Update to Attachments changes (#2485) 2021-04-21 07:39:38 -07:00
Hugo Amnov 24be4a38d0 WebGPU: Add texture format to shaderc (bin version 10) + streamline storage Images in shaders (#2482)
* WebGPU: Add texture format (shaderc bin version 10)

* WebGPU: Simplify storage images + Fix format decorations

* Shaderc: Cleanup Texture name assumption in textures
2021-04-20 20:18:49 -07:00
pezcode e8d4b3dcce Fixes for multiple windows and example 22 (#2483) 2021-04-19 15:30:03 -07:00
Hugo Amnov cf8ff18263 WebGPU update (#2477)
* WebGPU: Update to latest changes + Fixes

* WebGPU: Fix RG11B10F format as framebuffer
2021-04-18 11:39:52 -07:00
Hugo Amnov d8ef330967 Fix embedded shaders compilation (#2475) 2021-04-18 11:38:51 -07:00
Бранимир Караџић e3f91f2895 Updated version number. 2021-04-17 08:36:19 -07:00
Бранимир Караџић 6a5ab30c6c In debug build assert on texture and frame buffer validation. 2021-04-17 08:35:34 -07:00
Бранимир Караџић 6109697ade Added bgfx::isFrameBufferValid API. 2021-04-16 22:13:26 -07:00
Бранимир Караџић 41df93f81d Cleanup. 2021-04-16 22:05:08 -07:00
pezcode 9e025301a9 Vulkan: add headless and MSAA backbuffer support (#2472)
* Swapchain class

* Headless support

* MSAA backbuffer

* Fix framebuffer resolve

layout transitions were missing and framebuffer mips and layers weren't used

* Fix blit with MSAA resolve source

only the main texture layout was transitioned

* Fix pipeline hash
2021-04-16 09:54:37 -07:00
Daniele Bartolini 83039433ee Add textureSize() overloads for BgfxI/USampler2D (#2471) 2021-04-15 14:24:42 -07:00
Бранимир Караџић 0ff10648b6 Cleanup. 2021-04-13 20:30:14 -07:00
Matt Tytel c6e17db9d6 Retain reset flags when creating a new metal frame buffer for a window. (#2469) 2021-04-12 12:42:53 -07:00
pezcode 900afe7644 GL: only unbind instance buffer if it changed (#2463) 2021-04-09 09:36:21 -07:00
pezcode 2240c591a1 Vulkan: ignore unused storage buffers (#2460) 2021-04-08 20:26:17 -07:00
pezcode b298851bf0 Vertex buffer fixes (#2458)
* Vulkan: calculate vertex count from all streams, not just the first

...which might not exist in the first place

* Vulkan: use correct vertex stream offsets and handles

* D3D11: remember stream vertex count when no index buffer is bound
2021-04-08 10:28:42 -07:00
pezcode cb49df3bca Bind IMAGE2D_RO correctly as a texture2D without a sampler (#2454) 2021-04-07 20:05:17 -07:00
pezcode 870d14110b Vulkan: allow writing to gl_FragColor without framebuffer color attachment (#2452) 2021-04-07 07:21:02 -07:00
Бранимир Караџић 9582f19483 Removed assert when viewport is zero size. 2021-04-05 16:07:23 -07:00
Бранимир Караџић d61f78e263 Cleanup. 2021-04-05 12:27:48 -07:00
pezcode db12a1d0e1 Vulkan: alias texture types in shaders + misc fixes (#2447)
* Don't enable optional extensions if BGFX_CONFIG_RENDERER_USE_EXTENSIONS is 0

* Support rendering to slices of 3D textures

* Create transient command pool

* Blit array layers for non-cube textures

* Clean up destroy and release functions

Simplifies CommandQueueVK code, automatically sets handles to NULL after release(), removes the need for explicit StateCacheT instantiations, and enables usage of StateCacheLru

* Fix renderpass hash calculation

* Allow sampling cube array textures

* Make StateCacheLru work with types overloading the address-of operator

* Alias textures to shader sampler type

Requires shaders with shaderc binary version 8 or higher

* Fix 32-bit compilation
2021-04-05 07:40:15 -07:00
pezcode 9d09088488 Additional framebuffer validation (#2448) 2021-04-05 07:23:25 -07:00
Бранимир Караџић 517942f8e1 Cleanup. 2021-04-02 20:17:42 -07:00
Бранимир Караџић 45c0b29470 Cleanup. 2021-04-02 16:46:42 -07:00
Paul Gruenbacher 3b34b6e68a Update bgfx_p.h (#2444)
If you do 
```
bgfx::setIndexBuffer()
bgfx::submit(BGFX_DISCARD_NONE)
bgfx::submit()
```

then the second submit will be broken because even though it still uses the correct index buffer it will lose the BGFX_SUBMIT_INTERNAL_INDEX32 state.
Basically all multi-pass calls involving a 32index buffer are broken currently in bgfx master. 
This fixes bug introduced by https://github.com/bkaradzic/bgfx/commit/5c304dad3b98cfa895a531527881347f3c52aeea
2021-04-02 16:43:52 -07:00
Бранимир Караџић 0df2e90edb Cleanup. 2021-04-01 20:09:16 -07:00
Vladimir Vukicevic cb77d3bb46 Fix crash when hitting max draw call limit (#2440)
* Expand instancing demo to have non-instanced path

* Fix count vs. index off by one error when hitting max draw calls
2021-04-01 19:03:01 -07:00
pezcode e38920c07b View rect/scissor and framebuffer validation (#2439)
* Crop view rect and scissor to frame-/backbuffer size

* Validate framebuffer attachments

Check texture size, mip, layer range, layer count mismatch

* Remove framebuffer check from Vulkan backend

* Fix layer check for 3D attachment

* Cleanup
2021-04-01 16:18:09 -07:00
Christophe Dehais 2433b598e7 Fix BGFX_STATE_FRONT_CCW flag being ignored in DX12 and VK (#2438) 2021-04-01 08:47:45 -07:00
simon chenandchenmou.cm 0b8677ed06 fix update bug when compressed texture create with BGFX_TEXTURE_SRGB (#2437)
Co-authored-by: chenmou.cm <chenmou.cm@alibaba-inc.com>
2021-03-30 19:50:19 -07:00
C. M. Barth f218d7ed13 Support dynamic SwapChainPanel changes for DirectX11 UWP scenarios (#2422)
* remove swap chain from consumer

* fix swap chain cleanup

* renderer workaround

* cleanup changes around platform data

* only update swapchainpanels

* revert spacing

* favor NULL over nullptr
2021-03-08 15:13:04 -08:00
pezcode 02e4786e04 Vulkan: fix sync hazards (#2419)
- write-after-write when blitting to the same image
- missing barrier between compute dispatches if a view has no draws
2021-03-06 18:56:55 -08:00
Бранимир Караџић b3dcc83d66 Fixed warning. 2021-03-04 19:09:10 -08:00
Бранимир Караџић 38a559ea89 Fixed build. 2021-03-04 10:01:42 -08:00