Fixed build.

This commit is contained in:
Бранимир Караџић 2020-05-08 09:03:02 -07:00
parent b62302631e
commit 4e41f3d0bd
6 changed files with 50 additions and 48 deletions

View File

@ -5,3 +5,6 @@ src/renderer_mtl.* @attilaz
# Vulkan
src/renderer_vk.* @rinthel @pezcode
# WebGPU
src/renderer_webgpu.* @hugoam

View File

@ -17,6 +17,7 @@ Supported rendering backends:
* Direct3D 9
* Direct3D 11
* Direct3D 12
* GNM (only for licensed PS4 developers, search DevNet forums for source)
* Metal
* OpenGL 2.1
* OpenGL 3.1+
@ -25,6 +26,7 @@ Supported rendering backends:
* Vulkan
* WebGL 1.0
* WebGL 2.0
* WebGPU/Dawn (experimental)
Supported platforms:

View File

@ -199,7 +199,7 @@ function bgfxProjectBase(_kind, _defines)
configuration {}
end
if _OPTIONS["with-amalgamated"] then
excludes {
path.join(BGFX_DIR, "src/bgfx.cpp"),

View File

@ -20,7 +20,8 @@
&& !defined(BGFX_CONFIG_RENDERER_NVN) \
&& !defined(BGFX_CONFIG_RENDERER_OPENGL) \
&& !defined(BGFX_CONFIG_RENDERER_OPENGLES) \
&& !defined(BGFX_CONFIG_RENDERER_VULKAN)
&& !defined(BGFX_CONFIG_RENDERER_VULKAN) \
&& !defined(BGFX_CONFIG_RENDERER_WEBGPU)
# ifndef BGFX_CONFIG_RENDERER_DIRECT3D9
# define BGFX_CONFIG_RENDERER_DIRECT3D9 (0 \
@ -101,6 +102,10 @@
? 1 : 0)
# endif // BGFX_CONFIG_RENDERER_VULKAN
# ifndef BGFX_CONFIG_RENDERER_WEBGPU
# define BGFX_CONFIG_RENDERER_WEBGPU 0
# endif // BGFX_CONFIG_RENDERER_WEBGPU
#else
# ifndef BGFX_CONFIG_RENDERER_DIRECT3D9
# define BGFX_CONFIG_RENDERER_DIRECT3D9 0

View File

@ -8,38 +8,30 @@
//#define DAWN_ENABLE_BACKEND_D3D12
#define DAWN_ENABLE_BACKEND_VULKAN
#define BGFX_CONFIG_DEBUG_ANNOTATION 0
#if BGFX_CONFIG_RENDERER_WEBGPU
#include "renderer_webgpu.h"
#include "renderer.h"
#include "debug_renderdoc.h"
# include "renderer_webgpu.h"
# include "renderer.h"
# include "debug_renderdoc.h"
#ifdef DAWN_ENABLE_BACKEND_VULKAN
#include "renderer_vk.h"
# include "renderer_vk.h"
#endif
#include <cfloat>
#include <new>
#if !BX_PLATFORM_EMSCRIPTEN
#ifdef DAWN_ENABLE_BACKEND_D3D12
#include <dawn_native/D3D12Backend.h>
#endif
#ifdef DAWN_ENABLE_BACKEND_VULKAN
#include <dawn_native/VulkanBackend.h>
#endif
#include <dawn_native/DawnNative.h>
#include <dawn/dawn_wsi.h>
#include <dawn/dawn_proc.h>
# ifdef DAWN_ENABLE_BACKEND_D3D12
# include <dawn_native/D3D12Backend.h>
# endif
# ifdef DAWN_ENABLE_BACKEND_VULKAN
# include <dawn_native/VulkanBackend.h>
# endif
# include <dawn_native/DawnNative.h>
# include <dawn/dawn_wsi.h>
# include <dawn/dawn_proc.h>
#else
#include <emscripten/emscripten.h>
#include <emscripten/html5.h>
# include <emscripten/emscripten.h>
# include <emscripten/html5.h>
#endif
#define UNIFORM_BUFFER_SIZE (8*1024*1024)
namespace bgfx { namespace webgpu
{
// TODO (hugoam) cleanup
@ -143,7 +135,7 @@ namespace bgfx { namespace webgpu
uint32_t m_div;
uint32_t m_sub;
};
static const PrimInfo s_primInfo[] =
{
{ wgpu::PrimitiveTopology::TriangleList, 3, 3, 0 },
@ -153,7 +145,7 @@ namespace bgfx { namespace webgpu
{ wgpu::PrimitiveTopology::PointList, 1, 1, 0 },
};
BX_STATIC_ASSERT(Topology::Count == BX_COUNTOF(s_primInfo) );
static const wgpu::VertexFormat s_attribType[][4][2] =
{
{ // Uint8
@ -1333,7 +1325,7 @@ namespace bgfx { namespace webgpu
BX_CHECK(bindState.numOffset == numOffset, "We're obviously doing something wrong");
encoder.SetBindGroup(0, bindState.m_bindGroup, numOffset, offsets);
}
BindStateWgpu& allocAndFillBindState(const ProgramWgpu& program, BindStateCacheWgpu& bindStates, ScratchBufferWgpu& scratchBuffer, const RenderBind& renderBind)
{
BindingsWgpu b;
@ -1944,7 +1936,7 @@ namespace bgfx { namespace webgpu
const uint32_t src = (rgba )&0xf;
const uint32_t dst = (rgba>>4)&0xf;
const uint32_t equationIndex = (rgba>>8)&0x7;
drt.colorBlend.srcFactor = s_blendFactor[src][0];
drt.colorBlend.dstFactor = s_blendFactor[dst][0];
drt.colorBlend.operation = s_blendEquation[equationIndex];
@ -2677,7 +2669,7 @@ namespace bgfx { namespace webgpu
desc.codeSize = shaderSize/4;
m_module = s_renderWgpu->m_device.CreateShaderModule(&desc);
BGFX_FATAL(m_module
, bgfx::Fatal::InvalidShader
, "Failed to create %s shader."
@ -2946,7 +2938,7 @@ namespace bgfx { namespace webgpu
m_numSides = ti.numLayers * (imageContainer.m_cubeMap ? 6 : 1);
m_requestedFormat = TextureFormat::Enum(imageContainer.m_format);
m_textureFormat = getViableTextureFormat(imageContainer);
if (m_requestedFormat == bgfx::TextureFormat::D16)
m_textureFormat = bgfx::TextureFormat::D32F;
@ -3015,7 +3007,7 @@ namespace bgfx { namespace webgpu
const uint32_t msaaQuality = bx::uint32_satsub( (_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1);
const int32_t sampleCount = s_msaa[msaaQuality];
wgpu::TextureFormat format = wgpu::TextureFormat::Undefined;
if (srgb)
{
@ -3211,7 +3203,7 @@ namespace bgfx { namespace webgpu
mapped.buffer.Unmap();
}
wgpu::BufferCopyView* bufferCopyView = (wgpu::BufferCopyView*)BX_ALLOC(g_allocator, sizeof(wgpu::BufferCopyView) * numSrd);
wgpu::TextureCopyView* textureCopyView = (wgpu::TextureCopyView*)BX_ALLOC(g_allocator, sizeof(wgpu::TextureCopyView) * numSrd);
wgpu::Extent3D* textureCopySize = (wgpu::Extent3D*)BX_ALLOC(g_allocator, sizeof(wgpu::Extent3D) * numSrd);
@ -3224,18 +3216,18 @@ namespace bgfx { namespace webgpu
uint32_t idealWidth = bx::max<uint32_t>(1, m_width >> imageInfos[ii].mipLevel);
uint32_t idealHeight = bx::max<uint32_t>(1, m_height >> imageInfos[ii].mipLevel);
new (&bufferCopyView[ii]) wgpu::BufferCopyView();
new (&textureCopyView[ii]) wgpu::TextureCopyView();
new (&textureCopySize[ii]) wgpu::Extent3D();
bufferCopyView[ii].buffer = stagingBuffer;
BX_PLACEMENT_NEW(&bufferCopyView[ii], wgpu::BufferCopyView)();
BX_PLACEMENT_NEW(&textureCopyView[ii], wgpu::TextureCopyView)();
BX_PLACEMENT_NEW(&textureCopySize[ii], wgpu::Extent3D)();
bufferCopyView[ii].buffer = stagingBuffer;
bufferCopyView[ii].offset = offset;
bufferCopyView[ii].bytesPerRow = dstpitch; // assume that image data are tightly aligned
bufferCopyView[ii].rowsPerImage = 0; // assume that image data are tightly aligned
textureCopyView[ii].texture = m_ptr;
//textureCopyView[ii].imageSubresource.aspectMask = m_vkTextureAspect;
//textureCopyView[ii].imageSubresource.aspectMask = m_vkTextureAspect;
textureCopyView[ii].mipLevel = imageInfos[ii].mipLevel;
textureCopyView[ii].arrayLayer = imageInfos[ii].layer;
//textureCopyView[ii].layerCount = 1;
//textureCopyView[ii].layerCount = 1;
textureCopyView[ii].origin = { 0, 0, 0 };
textureCopySize[ii] = { idealWidth, idealHeight, imageInfos[ii].depth };
@ -3373,7 +3365,7 @@ namespace bgfx { namespace webgpu
void StagingBufferWgpu::create(uint32_t _size, bool mapped)
{
wgpu::BufferDescriptor desc;
desc.size = BGFX_CONFIG_MAX_DRAW_CALLS * 128; // UNIFORM_BUFFER_SIZE
desc.size = BGFX_CONFIG_MAX_DRAW_CALLS * 128;
desc.usage = wgpu::BufferUsage::MapWrite | wgpu::BufferUsage::CopySrc;
if (mapped)
@ -3425,7 +3417,7 @@ namespace bgfx { namespace webgpu
m_size = _size;
wgpu::BufferDescriptor desc;
desc.size = BGFX_CONFIG_MAX_DRAW_CALLS * 128; // UNIFORM_BUFFER_SIZE
desc.size = BGFX_CONFIG_MAX_DRAW_CALLS * 128;
desc.usage = wgpu::BufferUsage::CopyDst | wgpu::BufferUsage::Uniform;
m_buffer = s_renderWgpu->m_device.CreateBuffer(&desc);
@ -3572,7 +3564,7 @@ namespace bgfx { namespace webgpu
void SwapChainWgpu::resize(FrameBufferWgpu& _frameBuffer, uint32_t _width, uint32_t _height, uint32_t _flags)
{
BX_TRACE("SwapChainWgpu::resize");
const int32_t sampleCount = s_msaa[(_flags&BGFX_RESET_MSAA_MASK)>>BGFX_RESET_MSAA_SHIFT];
wgpu::TextureFormat format = (_flags & BGFX_RESET_SRGB_BACKBUFFER)
@ -3843,7 +3835,7 @@ namespace bgfx { namespace webgpu
{
buffer.Destroy();
}
m_release[m_releaseReadIndex].clear();
}
@ -4049,7 +4041,7 @@ namespace bgfx { namespace webgpu
// TODO store this
static wgpu::RenderPassEncoder rce;
PipelineStateWgpu* currentPso = NULL;
bool wasCompute = false;
@ -4266,12 +4258,12 @@ namespace bgfx { namespace webgpu
if (isValid(compute.m_indirectBuffer))
{
const VertexBufferWgpu& vb = m_vertexBuffers[compute.m_indirectBuffer.idx];
uint32_t numDrawIndirect = UINT16_MAX == compute.m_numIndirect
? vb.m_size/BGFX_CONFIG_DRAW_INDIRECT_STRIDE
: compute.m_numIndirect
;
uint32_t args = compute.m_startIndirect * BGFX_CONFIG_DRAW_INDIRECT_STRIDE;
for (uint32_t ii = 0; ii < numDrawIndirect; ++ii)
{

View File

@ -9,5 +9,5 @@
*
*/
#define BGFX_REV_NUMBER 7159
#define BGFX_REV_SHA1 "f2e79bbe41d8a069db04979ff91ed15c3343ea8d"
#define BGFX_REV_NUMBER 7169
#define BGFX_REV_SHA1 "b62302631e847ffbe9a763db02f38ce9755cc425"