| # Copyright 2020 The Dawn & Tint Authors |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions are met: |
| # |
| # 1. Redistributions of source code must retain the above copyright notice, this |
| # list of conditions and the following disclaimer. |
| # |
| # 2. Redistributions in binary form must reproduce the above copyright notice, |
| # this list of conditions and the following disclaimer in the documentation |
| # and/or other materials provided with the distribution. |
| # |
| # 3. Neither the name of the copyright holder nor the names of its |
| # contributors may be used to endorse or promote products derived from |
| # this software without specific prior written permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
| # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
| # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
| # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| DawnJSONGenerator( |
| TARGET "native_utils" |
| PRINT_NAME "Dawn native utilities" |
| OUTPUT_HEADERS DAWN_NATIVE_UTILS_GEN_HEADERS |
| OUTPUT_SOURCES DAWN_NATIVE_UTILS_GEN_SOURCES |
| ) |
| |
| set(headers |
| "${DAWN_INCLUDE_DIR}/dawn/native/DawnNative.h" |
| "${DAWN_INCLUDE_DIR}/dawn/native/dawn_native_export.h" |
| ) |
| |
| set(private_headers |
| "${DAWN_NATIVE_UTILS_GEN_HEADERS}" |
| "Adapter.h" |
| "ApplyClearColorValueWithDrawHelper.h" |
| "AsyncTask.h" |
| "AttachmentState.h" |
| "BackendConnection.h" |
| "BindGroup.h" |
| "BindGroupLayout.h" |
| "BindGroupLayoutInternal.h" |
| "BindGroupTracker.h" |
| "BindingInfo.h" |
| "BlitBufferToDepthStencil.h" |
| "BlitColorToColorWithDraw.h" |
| "BlitDepthToDepth.h" |
| "BlitTextureToBuffer.h" |
| "Blob.h" |
| "BlobCache.h" |
| "BuddyAllocator.h" |
| "BuddyMemoryAllocator.h" |
| "Buffer.h" |
| "CachedObject.h" |
| "CacheKey.h" |
| "CacheRequest.h" |
| "CacheResult.h" |
| "CallbackTaskManager.h" |
| "ChainUtils.h" |
| "CommandAllocator.h" |
| "CommandBuffer.h" |
| "CommandBufferStateTracker.h" |
| "CommandEncoder.h" |
| "Commands.h" |
| "CommandValidation.h" |
| "CompilationMessages.h" |
| "ComputePassEncoder.h" |
| "ComputePipeline.h" |
| "CopyTextureForBrowserHelper.h" |
| "CreatePipelineAsyncEvent.h" |
| "dawn_platform.h" |
| "Device.h" |
| "DynamicUploader.h" |
| "EncodingContext.h" |
| "EnumClassBitmasks.h" |
| "EnumMaskIterator.h" |
| "Error.h" |
| "ErrorData.h" |
| "ErrorInjector.h" |
| "ErrorScope.h" |
| "ErrorSink.h" |
| "EventManager.h" |
| "ExecutionQueue.h" |
| "ExternalTexture.h" |
| "Features.h" |
| "Format.h" |
| "Forward.h" |
| "IndirectDrawMetadata.h" |
| "IndirectDrawValidationEncoder.h" |
| "Instance.h" |
| "IntegerTypes.h" |
| "InternalPipelineStore.h" |
| "Limits.h" |
| "ObjectBase.h" |
| "ObjectContentHasher.h" |
| "PassResourceUsage.h" |
| "PassResourceUsageTracker.h" |
| "PerStage.h" |
| "PhysicalDevice.h" |
| "Pipeline.h" |
| "PipelineCache.h" |
| "PipelineLayout.h" |
| "PooledResourceMemoryAllocator.h" |
| "ProgrammableEncoder.h" |
| "QueryHelper.h" |
| "QuerySet.h" |
| "Queue.h" |
| "RenderBundle.h" |
| "RenderBundleEncoder.h" |
| "RenderEncoderBase.h" |
| "RenderPassEncoder.h" |
| "RenderPassWorkaroundsHelper.h" |
| "RenderPipeline.h" |
| "ResourceHeap.h" |
| "ResourceHeapAllocator.h" |
| "ResourceMemoryAllocation.h" |
| "RingBufferAllocator.h" |
| "Sampler.h" |
| "ScratchBuffer.h" |
| "Serializable.h" |
| "ShaderModule.h" |
| "SharedBufferMemory.h" |
| "SharedFence.h" |
| "SharedResourceMemory.h" |
| "SharedTextureMemory.h" |
| "stream/BlobSource.h" |
| "stream/ByteVectorSink.h" |
| "stream/Sink.h" |
| "stream/Source.h" |
| "stream/Stream.h" |
| "Subresource.h" |
| "SubresourceStorage.h" |
| "Surface.h" |
| "SwapChain.h" |
| "SystemEvent.h" |
| "SystemHandle.h" |
| "Texture.h" |
| "TintUtils.h" |
| "ToBackend.h" |
| "Toggles.h" |
| "UsageValidationMode.h" |
| "utils/WGPUHelpers.h" |
| "VisitableMembers.h" |
| "WaitAnySystemEvent.h" |
| "webgpu_absl_format.h" |
| ) |
| |
| set(sources |
| ${DAWN_NATIVE_UTILS_GEN_SOURCES} |
| "Adapter.cpp" |
| "ApplyClearColorValueWithDrawHelper.cpp" |
| "AsyncTask.cpp" |
| "AttachmentState.cpp" |
| "BackendConnection.cpp" |
| "BindGroup.cpp" |
| "BindGroupLayout.cpp" |
| "BindGroupLayoutInternal.cpp" |
| "BindingInfo.cpp" |
| "BlitBufferToDepthStencil.cpp" |
| "BlitColorToColorWithDraw.cpp" |
| "BlitDepthToDepth.cpp" |
| "BlitTextureToBuffer.cpp" |
| "Blob.cpp" |
| "BlobCache.cpp" |
| "BuddyAllocator.cpp" |
| "BuddyMemoryAllocator.cpp" |
| "Buffer.cpp" |
| "CachedObject.cpp" |
| "CacheKey.cpp" |
| "CacheRequest.cpp" |
| "CallbackTaskManager.cpp" |
| "ChainUtilsImpl.inl" |
| "CommandAllocator.cpp" |
| "CommandBuffer.cpp" |
| "CommandBufferStateTracker.cpp" |
| "CommandEncoder.cpp" |
| "Commands.cpp" |
| "CommandValidation.cpp" |
| "CompilationMessages.cpp" |
| "ComputePassEncoder.cpp" |
| "ComputePipeline.cpp" |
| "CopyTextureForBrowserHelper.cpp" |
| "CreatePipelineAsyncEvent.cpp" |
| "Device.cpp" |
| "DynamicUploader.cpp" |
| "EncodingContext.cpp" |
| "Error.cpp" |
| "ErrorData.cpp" |
| "ErrorInjector.cpp" |
| "ErrorScope.cpp" |
| "EventManager.cpp" |
| "ExecutionQueue.cpp" |
| "ExternalTexture.cpp" |
| "Features.cpp" |
| "Format.cpp" |
| "IndirectDrawMetadata.cpp" |
| "IndirectDrawValidationEncoder.cpp" |
| "Instance.cpp" |
| "InternalPipelineStore.cpp" |
| "Limits.cpp" |
| "ObjectBase.cpp" |
| "ObjectContentHasher.cpp" |
| "PassResourceUsage.cpp" |
| "PassResourceUsageTracker.cpp" |
| "PerStage.cpp" |
| "PhysicalDevice.cpp" |
| "Pipeline.cpp" |
| "PipelineCache.cpp" |
| "PipelineLayout.cpp" |
| "PooledResourceMemoryAllocator.cpp" |
| "ProgrammableEncoder.cpp" |
| "QueryHelper.cpp" |
| "QuerySet.cpp" |
| "Queue.cpp" |
| "RenderBundle.cpp" |
| "RenderBundleEncoder.cpp" |
| "RenderEncoderBase.cpp" |
| "RenderPassEncoder.cpp" |
| "RenderPassWorkaroundsHelper.cpp" |
| "RenderPipeline.cpp" |
| "ResourceMemoryAllocation.cpp" |
| "RingBufferAllocator.cpp" |
| "Sampler.cpp" |
| "ScratchBuffer.cpp" |
| "ShaderModule.cpp" |
| "SharedBufferMemory.cpp" |
| "SharedFence.cpp" |
| "SharedResourceMemory.cpp" |
| "SharedTextureMemory.cpp" |
| "stream/BlobSource.cpp" |
| "stream/ByteVectorSink.cpp" |
| "stream/Stream.cpp" |
| "Subresource.cpp" |
| "Surface.cpp" |
| "SwapChain.cpp" |
| "SystemEvent.cpp" |
| "SystemHandle.cpp" |
| "Texture.cpp" |
| "TintUtils.cpp" |
| "Toggles.cpp" |
| "utils/WGPUHelpers.cpp" |
| "webgpu_absl_format.cpp" |
| ) |
| |
| set(conditional_public_platform_depends) |
| set(conditional_private_depends) |
| set(conditional_public_depends) |
| |
| if (DAWN_USE_X11) |
| find_package(X11 REQUIRED) |
| list(APPEND private_headers |
| "X11Functions.h" |
| ) |
| list(APPEND sources |
| "X11Functions.cpp" |
| ) |
| endif() |
| |
| if (ANDROID) |
| list(APPEND private_headers |
| "AHBFunctions.h" |
| ) |
| list(APPEND sources |
| "AHBFunctions.cpp" |
| ) |
| endif() |
| |
| find_package(Threads REQUIRED) |
| list(APPEND conditional_private_platform_depends |
| Threads::Threads |
| ${CMAKE_DL_LIBS} |
| ) |
| |
| # Only win32 app needs to link with user32.lib |
| # In UWP, all availiable APIs are defined in WindowsApp.lib |
| # and is automatically linked when WINDOWS_STORE set |
| if (WIN32 AND NOT WINDOWS_STORE) |
| list(APPEND conditional_private_platform_depends user32.lib) |
| endif() |
| |
| # DXGIGetDebugInterface1 is defined in dxgi.lib |
| # But this API is tagged as a development-only capability |
| # which implies that linking to this function will cause |
| # the application to fail Windows store certification |
| # So we only link to it in debug build when compiling for UWP. |
| # In win32 we load dxgi.dll using LoadLibrary |
| # so no need for static linking. |
| if (WINDOWS_STORE) |
| list(APPEND conditional_private_platform_depends debug dxgi.lib) |
| endif() |
| |
| if (DAWN_ENABLE_D3D11 OR DAWN_ENABLE_D3D12) |
| list(APPEND headers |
| "${DAWN_INCLUDE_DIR}/dawn/native/D3DBackend.h" |
| ) |
| list(APPEND private_headers |
| "d3d/BackendD3D.h" |
| "d3d/BlobD3D.h" |
| "d3d/d3d_platform.h" |
| "d3d/D3DCompilationRequest.h" |
| "d3d/D3DError.h" |
| "d3d/DeviceD3D.h" |
| "d3d/Forward.h" |
| "d3d/KeyedMutex.h" |
| "d3d/PhysicalDeviceD3D.h" |
| "d3d/PlatformFunctions.h" |
| "d3d/QueueD3D.h" |
| "d3d/ShaderUtils.h" |
| "d3d/SharedFenceD3D.h" |
| "d3d/SharedTextureMemoryD3D.h" |
| "d3d/SwapChainD3D.h" |
| "d3d/TextureD3D.h" |
| "d3d/UtilsD3D.h" |
| ) |
| list(APPEND sources |
| "d3d/BackendD3D.cpp" |
| "d3d/BlobD3D.cpp" |
| "d3d/D3DError.cpp" |
| "d3d/DeviceD3D.cpp" |
| "d3d/KeyedMutex.cpp" |
| "d3d/PhysicalDeviceD3D.cpp" |
| "d3d/PlatformFunctions.cpp" |
| "d3d/QueueD3D.cpp" |
| "d3d/ShaderUtils.cpp" |
| "d3d/SharedFenceD3D.cpp" |
| "d3d/SharedTextureMemoryD3D.cpp" |
| "d3d/SwapChainD3D.cpp" |
| "d3d/TextureD3D.cpp" |
| "d3d/UtilsD3D.cpp" |
| ) |
| list(APPEND conditional_private_platform_depends dxguid.lib) |
| endif() |
| |
| if (DAWN_ENABLE_D3D11) |
| list(APPEND headers |
| "${DAWN_INCLUDE_DIR}/dawn/native/D3D11Backend.h" |
| ) |
| list(APPEND private_headers |
| "d3d11/BackendD3D11.h" |
| "d3d11/BindGroupD3D11.h" |
| "d3d11/BindGroupLayoutD3D11.h" |
| "d3d11/BindGroupTrackerD3D11.h" |
| "d3d11/BufferD3D11.h" |
| "d3d11/CommandBufferD3D11.h" |
| "d3d11/CommandRecordingContextD3D11.h" |
| "d3d11/ComputePipelineD3D11.h" |
| "d3d11/DeviceD3D11.h" |
| "d3d11/DeviceInfoD3D11.h" |
| "d3d11/Forward.h" |
| "d3d11/PhysicalDeviceD3D11.h" |
| "d3d11/PipelineLayoutD3D11.h" |
| "d3d11/PlatformFunctionsD3D11.h" |
| "d3d11/QuerySetD3D11.h" |
| "d3d11/QueueD3D11.h" |
| "d3d11/RenderPipelineD3D11.h" |
| "d3d11/SamplerD3D11.h" |
| "d3d11/ShaderModuleD3D11.h" |
| "d3d11/SharedFenceD3D11.h" |
| "d3d11/SharedTextureMemoryD3D11.h" |
| "d3d11/SwapChainD3D11.h" |
| "d3d11/TextureD3D11.h" |
| "d3d11/UtilsD3D11.h" |
| ) |
| list(APPEND sources |
| "d3d11/BackendD3D11.cpp" |
| "d3d11/BindGroupD3D11.cpp" |
| "d3d11/BindGroupLayoutD3D11.cpp" |
| "d3d11/BindGroupTrackerD3D11.cpp" |
| "d3d11/BufferD3D11.cpp" |
| "d3d11/CommandBufferD3D11.cpp" |
| "d3d11/CommandRecordingContextD3D11.cpp" |
| "d3d11/ComputePipelineD3D11.cpp" |
| "d3d11/DeviceD3D11.cpp" |
| "d3d11/DeviceInfoD3D11.cpp" |
| "d3d11/PhysicalDeviceD3D11.cpp" |
| "d3d11/PipelineLayoutD3D11.cpp" |
| "d3d11/PlatformFunctionsD3D11.cpp" |
| "d3d11/QuerySetD3D11.cpp" |
| "d3d11/QueueD3D11.cpp" |
| "d3d11/RenderPipelineD3D11.cpp" |
| "d3d11/SamplerD3D11.cpp" |
| "d3d11/ShaderModuleD3D11.cpp" |
| "d3d11/SharedFenceD3D11.cpp" |
| "d3d11/SharedTextureMemoryD3D11.cpp" |
| "d3d11/SwapChainD3D11.cpp" |
| "d3d11/TextureD3D11.cpp" |
| "d3d11/UtilsD3D11.cpp" |
| ) |
| endif() |
| |
| if (DAWN_ENABLE_D3D12) |
| list(APPEND headers |
| "${DAWN_INCLUDE_DIR}/dawn/native/D3D12Backend.h" |
| ) |
| list(APPEND private_headers |
| "d3d12/BackendD3D12.h" |
| "d3d12/BindGroupD3D12.h" |
| "d3d12/BindGroupLayoutD3D12.h" |
| "d3d12/BufferD3D12.h" |
| "d3d12/CommandBufferD3D12.h" |
| "d3d12/CommandRecordingContext.h" |
| "d3d12/ComputePipelineD3D12.h" |
| "d3d12/CPUDescriptorHeapAllocationD3D12.h" |
| "d3d12/d3d12_platform.h" |
| "d3d12/D3D12Info.h" |
| "d3d12/DeviceD3D12.h" |
| "d3d12/Forward.h" |
| "d3d12/GPUDescriptorHeapAllocationD3D12.h" |
| "d3d12/HeapAllocatorD3D12.h" |
| "d3d12/HeapD3D12.h" |
| "d3d12/IntegerTypes.h" |
| "d3d12/PageableD3D12.h" |
| "d3d12/PhysicalDeviceD3D12.h" |
| "d3d12/PipelineLayoutD3D12.h" |
| "d3d12/PlatformFunctionsD3D12.h" |
| "d3d12/QuerySetD3D12.h" |
| "d3d12/QueueD3D12.h" |
| "d3d12/RenderPassBuilderD3D12.h" |
| "d3d12/RenderPipelineD3D12.h" |
| "d3d12/ResidencyManagerD3D12.h" |
| "d3d12/ResourceAllocatorManagerD3D12.h" |
| "d3d12/ResourceHeapAllocationD3D12.h" |
| "d3d12/SamplerD3D12.h" |
| "d3d12/SamplerHeapCacheD3D12.h" |
| "d3d12/ShaderModuleD3D12.h" |
| "d3d12/ShaderVisibleDescriptorAllocatorD3D12.h" |
| "d3d12/SharedBufferMemoryD3D12.h" |
| "d3d12/SharedFenceD3D12.h" |
| "d3d12/SharedTextureMemoryD3D12.h" |
| "d3d12/StagingDescriptorAllocatorD3D12.h" |
| "d3d12/SwapChainD3D12.h" |
| "d3d12/TextureCopySplitter.h" |
| "d3d12/TextureD3D12.h" |
| "d3d12/UtilsD3D12.h" |
| ) |
| list(APPEND sources |
| "d3d12/BackendD3D12.cpp" |
| "d3d12/BindGroupD3D12.cpp" |
| "d3d12/BindGroupLayoutD3D12.cpp" |
| "d3d12/BufferD3D12.cpp" |
| "d3d12/CommandBufferD3D12.cpp" |
| "d3d12/CommandRecordingContext.cpp" |
| "d3d12/ComputePipelineD3D12.cpp" |
| "d3d12/CPUDescriptorHeapAllocationD3D12.cpp" |
| "d3d12/D3D12Info.cpp" |
| "d3d12/DeviceD3D12.cpp" |
| "d3d12/GPUDescriptorHeapAllocationD3D12.cpp" |
| "d3d12/HeapAllocatorD3D12.cpp" |
| "d3d12/HeapD3D12.cpp" |
| "d3d12/PageableD3D12.cpp" |
| "d3d12/PhysicalDeviceD3D12.cpp" |
| "d3d12/PipelineLayoutD3D12.cpp" |
| "d3d12/PlatformFunctionsD3D12.cpp" |
| "d3d12/QuerySetD3D12.cpp" |
| "d3d12/QueueD3D12.cpp" |
| "d3d12/RenderPassBuilderD3D12.cpp" |
| "d3d12/RenderPipelineD3D12.cpp" |
| "d3d12/ResidencyManagerD3D12.cpp" |
| "d3d12/ResourceAllocatorManagerD3D12.cpp" |
| "d3d12/ResourceHeapAllocationD3D12.cpp" |
| "d3d12/SamplerD3D12.cpp" |
| "d3d12/SamplerHeapCacheD3D12.cpp" |
| "d3d12/ShaderModuleD3D12.cpp" |
| "d3d12/ShaderVisibleDescriptorAllocatorD3D12.cpp" |
| "d3d12/SharedBufferMemoryD3D12.cpp" |
| "d3d12/SharedFenceD3D12.cpp" |
| "d3d12/SharedTextureMemoryD3D12.cpp" |
| "d3d12/StagingDescriptorAllocatorD3D12.cpp" |
| "d3d12/StreamImplD3D12.cpp" |
| "d3d12/SwapChainD3D12.cpp" |
| "d3d12/TextureCopySplitter.cpp" |
| "d3d12/TextureD3D12.cpp" |
| "d3d12/UtilsD3D12.cpp" |
| ) |
| endif() |
| |
| if (DAWN_ENABLE_METAL) |
| list(APPEND headers |
| "${DAWN_INCLUDE_DIR}/dawn/native/MetalBackend.h" |
| ) |
| list(APPEND private_headers |
| "metal/BackendMTL.h" |
| "metal/BindGroupLayoutMTL.h" |
| "metal/BindGroupMTL.h" |
| "metal/BufferMTL.h" |
| "metal/CommandBufferMTL.h" |
| "metal/CommandRecordingContext.h" |
| "metal/ComputePipelineMTL.h" |
| "metal/DeviceMTL.h" |
| "metal/Forward.h" |
| "metal/MultiDrawEncoder.h" |
| "metal/MultiDrawEncoder.mm" |
| "metal/PhysicalDeviceMTL.h" |
| "metal/PipelineLayoutMTL.h" |
| "metal/QuerySetMTL.h" |
| "metal/QueueMTL.h" |
| "metal/RenderPipelineMTL.h" |
| "metal/SamplerMTL.h" |
| "metal/ShaderModuleMTL.h" |
| "metal/SharedFenceMTL.h" |
| "metal/SharedTextureMemoryMTL.h" |
| "metal/SwapChainMTL.h" |
| "metal/TextureMTL.h" |
| "metal/UtilsMetal.h" |
| ) |
| list(APPEND sources |
| "metal/BackendMTL.mm" |
| "metal/BindGroupLayoutMTL.mm" |
| "metal/BindGroupMTL.mm" |
| "metal/BufferMTL.mm" |
| "metal/CommandBufferMTL.mm" |
| "metal/CommandRecordingContext.mm" |
| "metal/ComputePipelineMTL.mm" |
| "metal/DeviceMTL.mm" |
| "metal/PhysicalDeviceMTL.mm" |
| "metal/PipelineLayoutMTL.mm" |
| "metal/QuerySetMTL.mm" |
| "metal/QueueMTL.mm" |
| "metal/RenderPipelineMTL.mm" |
| "metal/SamplerMTL.mm" |
| "metal/ShaderModuleMTL.mm" |
| "metal/SharedFenceMTL.mm" |
| "metal/SharedTextureMemoryMTL.mm" |
| "metal/SwapChainMTL.mm" |
| "metal/TextureMTL.mm" |
| "metal/UtilsMetal.mm" |
| "Surface_metal.mm" |
| ) |
| if (DAWN_TARGET_MACOS) |
| list(APPEND conditional_private_platform_depends "-framework Cocoa") |
| endif() |
| list(APPEND conditional_private_platform_depends |
| "-framework Foundation" |
| "-framework IOKit" |
| "-framework IOSurface" |
| "-framework QuartzCore" |
| "-framework Metal" |
| ) |
| endif() |
| |
| if (DAWN_ENABLE_NULL) |
| list(APPEND headers |
| "${DAWN_INCLUDE_DIR}/dawn/native/NullBackend.h" |
| ) |
| list(APPEND private_headers |
| "null/DeviceNull.h" |
| ) |
| list(APPEND sources |
| "null/DeviceNull.cpp" |
| ) |
| endif() |
| |
| if ((DAWN_ENABLE_OPENGL OR DAWN_ENABLE_VULKAN) AND DAWN_ENABLE_SPIRV_VALIDATION) |
| list(APPEND private_headers |
| "SpirvValidation.h" |
| ) |
| list(APPEND sources |
| "SpirvValidation.cpp" |
| ) |
| list(APPEND conditional_private_depends |
| SPIRV-Tools-opt |
| ) |
| endif() |
| |
| if (DAWN_ENABLE_OPENGL) |
| DawnGenerator( |
| SCRIPT "${Dawn_SOURCE_DIR}/generator/opengl_loader_generator.py" |
| PRINT_NAME "OpenGL function loader" |
| EXTRA_PARAMETERS "--gl-xml" |
| "${Dawn_SOURCE_DIR}/third_party/khronos/OpenGL-Registry/xml/gl.xml" |
| "--supported-extensions" |
| "${Dawn_SOURCE_DIR}/src/dawn/native/opengl/supported_extensions.json" |
| OUTPUT_HEADERS DAWN_NATIVE_OPENGL_AUTOGEN_HEADERS |
| OUTPUT_SOURCES DAWN_NATIVE_OPENGL_AUTOGEN_SOURCES |
| ) |
| |
| list(APPEND headers |
| "${DAWN_INCLUDE_DIR}/dawn/native/OpenGLBackend.h" |
| ) |
| list(APPEND private_headers |
| ${DAWN_NATIVE_OPENGL_AUTOGEN_HEADERS} |
| "opengl/BackendGL.h" |
| "opengl/BindGroupGL.h" |
| "opengl/BindGroupLayoutGL.h" |
| "opengl/BindingPoint.h" |
| "opengl/BufferGL.h" |
| "opengl/CommandBufferGL.h" |
| "opengl/ComputePipelineGL.h" |
| "opengl/ContextEGL.h" |
| "opengl/DeviceGL.h" |
| "opengl/DisplayEGL.h" |
| "opengl/EGLFunctions.h" |
| "opengl/Forward.h" |
| "opengl/GLFormat.h" |
| "opengl/opengl_platform.h" |
| "opengl/OpenGLFunctions.h" |
| "opengl/OpenGLVersion.h" |
| "opengl/PersistentPipelineStateGL.h" |
| "opengl/PhysicalDeviceGL.h" |
| "opengl/PipelineGL.h" |
| "opengl/PipelineLayoutGL.h" |
| "opengl/QuerySetGL.h" |
| "opengl/QueueGL.h" |
| "opengl/RenderPipelineGL.h" |
| "opengl/SamplerGL.h" |
| "opengl/ShaderModuleGL.h" |
| "opengl/SharedTextureMemoryEGL.h" |
| "opengl/SharedTextureMemoryGL.h" |
| "opengl/SwapChainEGL.h" |
| "opengl/TextureGL.h" |
| "opengl/UtilsEGL.h" |
| "opengl/UtilsGL.h" |
| ) |
| list(APPEND sources |
| ${DAWN_NATIVE_OPENGL_AUTOGEN_SOURCES} |
| "opengl/BackendGL.cpp" |
| "opengl/BindGroupGL.cpp" |
| "opengl/BindGroupLayoutGL.cpp" |
| "opengl/BufferGL.cpp" |
| "opengl/CommandBufferGL.cpp" |
| "opengl/ComputePipelineGL.cpp" |
| "opengl/ContextEGL.cpp" |
| "opengl/DeviceGL.cpp" |
| "opengl/DisplayEGL.cpp" |
| "opengl/EGLFunctions.cpp" |
| "opengl/GLFormat.cpp" |
| "opengl/OpenGLFunctions.cpp" |
| "opengl/OpenGLVersion.cpp" |
| "opengl/PersistentPipelineStateGL.cpp" |
| "opengl/PhysicalDeviceGL.cpp" |
| "opengl/PipelineGL.cpp" |
| "opengl/PipelineLayoutGL.cpp" |
| "opengl/QuerySetGL.cpp" |
| "opengl/QueueGL.cpp" |
| "opengl/RenderPipelineGL.cpp" |
| "opengl/SamplerGL.cpp" |
| "opengl/ShaderModuleGL.cpp" |
| "opengl/SharedTextureMemoryEGL.cpp" |
| "opengl/SharedTextureMemoryGL.cpp" |
| "opengl/SwapChainEGL.cpp" |
| "opengl/TextureGL.cpp" |
| "opengl/UtilsEGL.cpp" |
| "opengl/UtilsGL.cpp" |
| ) |
| |
| list(APPEND conditional_private_depends dawn_khronos_platform) |
| endif() |
| |
| if (DAWN_ENABLE_VULKAN) |
| list(APPEND headers |
| "${DAWN_INCLUDE_DIR}/dawn/native/VulkanBackend.h" |
| ) |
| list(APPEND private_headers |
| "vulkan/BackendVk.h" |
| "vulkan/BindGroupLayoutVk.h" |
| "vulkan/BindGroupVk.h" |
| "vulkan/BufferVk.h" |
| "vulkan/CommandBufferVk.h" |
| "vulkan/CommandRecordingContext.h" |
| "vulkan/ComputePipelineVk.h" |
| "vulkan/DescriptorSetAllocation.h" |
| "vulkan/DescriptorSetAllocator.h" |
| "vulkan/DeviceVk.h" |
| "vulkan/ExternalHandle.h" |
| "vulkan/FencedDeleter.h" |
| "vulkan/Forward.h" |
| "vulkan/PhysicalDeviceVk.h" |
| "vulkan/PipelineVk.h" |
| "vulkan/PipelineCacheVk.h" |
| "vulkan/PipelineLayoutVk.h" |
| "vulkan/QuerySetVk.h" |
| "vulkan/QueueVk.h" |
| "vulkan/RefCountedVkHandle.h" |
| "vulkan/RenderPassCache.h" |
| "vulkan/RenderPipelineVk.h" |
| "vulkan/ResolveTextureLoadingUtilsVk.h" |
| "vulkan/ResourceHeapVk.h" |
| "vulkan/ResourceMemoryAllocatorVk.h" |
| "vulkan/SamplerVk.h" |
| "vulkan/ShaderModuleVk.h" |
| "vulkan/SharedFenceVk.h" |
| "vulkan/SharedTextureMemoryVk.h" |
| "vulkan/SwapChainVk.h" |
| "vulkan/TextureVk.h" |
| "vulkan/UniqueVkHandle.h" |
| "vulkan/UtilsVulkan.h" |
| "vulkan/VulkanError.h" |
| "vulkan/VulkanExtensions.h" |
| "vulkan/VulkanFunctions.h" |
| "vulkan/VulkanInfo.h" |
| "vulkan/external_memory/MemoryImportParams.h" |
| "vulkan/external_memory/MemoryService.h" |
| "vulkan/external_memory/MemoryServiceImplementation.h" |
| "vulkan/external_semaphore/SemaphoreService.h" |
| "vulkan/external_semaphore/SemaphoreServiceImplementation.h" |
| ) |
| list(APPEND sources |
| "vulkan/BackendVk.cpp" |
| "vulkan/BindGroupLayoutVk.cpp" |
| "vulkan/BindGroupVk.cpp" |
| "vulkan/BufferVk.cpp" |
| "vulkan/CommandBufferVk.cpp" |
| "vulkan/ComputePipelineVk.cpp" |
| "vulkan/DescriptorSetAllocator.cpp" |
| "vulkan/DeviceVk.cpp" |
| "vulkan/FencedDeleter.cpp" |
| "vulkan/PhysicalDeviceVk.cpp" |
| "vulkan/PipelineVk.cpp" |
| "vulkan/PipelineCacheVk.cpp" |
| "vulkan/PipelineLayoutVk.cpp" |
| "vulkan/QuerySetVk.cpp" |
| "vulkan/QueueVk.cpp" |
| "vulkan/RenderPassCache.cpp" |
| "vulkan/RenderPipelineVk.cpp" |
| "vulkan/ResolveTextureLoadingUtilsVk.cpp" |
| "vulkan/ResourceHeapVk.cpp" |
| "vulkan/ResourceMemoryAllocatorVk.cpp" |
| "vulkan/SamplerVk.cpp" |
| "vulkan/ShaderModuleVk.cpp" |
| "vulkan/SharedFenceVk.cpp" |
| "vulkan/SharedTextureMemoryVk.cpp" |
| "vulkan/StreamImplVk.cpp" |
| "vulkan/SwapChainVk.cpp" |
| "vulkan/TextureVk.cpp" |
| "vulkan/UtilsVulkan.cpp" |
| "vulkan/VulkanError.cpp" |
| "vulkan/VulkanExtensions.cpp" |
| "vulkan/VulkanFunctions.cpp" |
| "vulkan/VulkanInfo.cpp" |
| "vulkan/external_memory/MemoryService.cpp" |
| "vulkan/external_memory/MemoryServiceImplementation.cpp" |
| "vulkan/external_semaphore/SemaphoreService.cpp" |
| "vulkan/external_semaphore/SemaphoreServiceImplementation.cpp" |
| ) |
| |
| list(APPEND conditional_public_depends |
| Vulkan-Headers |
| VulkanUtilityHeaders |
| ) |
| |
| if (ANDROID) |
| list(APPEND private_headers |
| "vulkan/external_memory/MemoryServiceImplementationAHardwareBuffer.h" |
| "vulkan/external_semaphore/SemaphoreServiceImplementationFD.h" |
| ) |
| list(APPEND sources |
| "vulkan/external_memory/MemoryServiceImplementationAHardwareBuffer.cpp" |
| "vulkan/external_semaphore/SemaphoreServiceImplementationFD.cpp" |
| ) |
| elseif (UNIX AND NOT APPLE) |
| list(APPEND private_headers |
| "vulkan/external_memory/MemoryServiceImplementationDmaBuf.h" |
| "vulkan/external_memory/MemoryServiceImplementationOpaqueFD.h" |
| "vulkan/external_semaphore/SemaphoreServiceImplementationFD.h" |
| ) |
| list(APPEND sources |
| "vulkan/external_memory/MemoryServiceImplementationDmaBuf.cpp" |
| "vulkan/external_memory/MemoryServiceImplementationOpaqueFD.cpp" |
| "vulkan/external_semaphore/SemaphoreServiceImplementationFD.cpp" |
| ) |
| endif() |
| endif() |
| |
| set(dawn_component_srcs) |
| list(APPEND dawn_component_srcs "DawnNative.cpp") |
| if (DAWN_ENABLE_D3D11 OR DAWN_ENABLE_D3D12) |
| list(APPEND dawn_component_srcs "d3d/D3DBackend.cpp") |
| endif() |
| if (DAWN_ENABLE_D3D11) |
| list(APPEND dawn_component_srcs "d3d11/D3D11Backend.cpp") |
| endif() |
| if (DAWN_ENABLE_D3D12) |
| list(APPEND dawn_component_srcs "d3d12/D3D12Backend.cpp") |
| endif() |
| if (DAWN_ENABLE_METAL) |
| list(APPEND dawn_component_srcs "metal/MetalBackend.mm") |
| endif() |
| if (DAWN_ENABLE_NULL) |
| list(APPEND dawn_component_srcs "null/NullBackend.cpp") |
| endif() |
| if (DAWN_ENABLE_OPENGL) |
| list(APPEND dawn_component_srcs "opengl/OpenGLBackend.cpp") |
| endif() |
| if (DAWN_ENABLE_VULKAN) |
| list(APPEND dawn_component_srcs "vulkan/VulkanBackend.cpp") |
| endif() |
| |
| set(dawn_native_public_depends |
| dawn::dawn_common |
| dawn::dawn_platform |
| dawn::dawncpp_headers |
| dawn::partition_alloc |
| ${conditional_public_depends} |
| ) |
| set(dawn_native_private_depends |
| absl::flat_hash_map |
| absl::flat_hash_set |
| absl::inlined_vector |
| absl::str_format_internal |
| absl::strings |
| libtint |
| ${conditional_private_depends} |
| ) |
| |
| # The same object files are reused to build |
| # 1. dawn_native (which gets used by tests, samples, benchmarks) |
| # 2. webgpu_dawn bundle (which gets installed via CMake install rules) |
| dawn_add_library( |
| dawn_native_objects |
| UTILITY_TARGET dawn_internal_config |
| FORCE_OBJECT |
| HEADERS |
| ${headers} |
| PRIVATE_HEADERS |
| ${private_headers} |
| SOURCES |
| ${sources} |
| DEPENDS |
| ${dawn_native_public_depends} |
| PRIVATE_DEPENDS |
| ${dawn_native_private_depends} |
| ${conditional_private_platform_depends} |
| ) |
| |
| dawn_add_library( |
| dawn_native |
| UTILITY_TARGET dawn_internal_config |
| SOURCES |
| ${dawn_component_srcs} |
| DEPENDS |
| dawn::dawn_native_objects |
| ${dawn_native_public_depends} |
| PRIVATE_DEPENDS |
| ${dawn_native_private_depends} |
| ${conditional_private_platform_depends} |
| ) |
| |
| target_compile_definitions(dawn_native PRIVATE "DAWN_NATIVE_IMPLEMENTATION") |
| if(BUILD_SHARED_LIBS) |
| target_compile_definitions(dawn_native PUBLIC "DAWN_NATIVE_SHARED_LIBRARY") |
| endif() |
| |
| if (DAWN_USE_X11) |
| target_include_directories(dawn_native PRIVATE ${X11_INCLUDE_DIR}) |
| endif() |
| |
| if (DAWN_ENABLE_D3D12) |
| if (DAWN_USE_BUILT_DXC) |
| target_compile_definitions(dawn_native PRIVATE "DAWN_USE_BUILT_DXC") |
| target_compile_definitions(dawn_native_objects PRIVATE "DAWN_USE_BUILT_DXC") |
| add_dependencies(dawn_native copy_dxil_dll) |
| endif() |
| endif() |
| |
| if ((DAWN_ENABLE_OPENGL OR DAWN_ENABLE_VULKAN) AND DAWN_ENABLE_SPIRV_VALIDATION) |
| target_compile_definitions(dawn_native PRIVATE "DAWN_ENABLE_SPIRV_VALIDATION") |
| target_compile_definitions(dawn_native_objects PRIVATE "DAWN_ENABLE_SPIRV_VALIDATION") |
| endif() |
| |
| if (DAWN_ENABLE_SWIFTSHADER) |
| target_compile_definitions(dawn_native PRIVATE "DAWN_ENABLE_SWIFTSHADER") |
| target_compile_definitions(dawn_native_objects PRIVATE "DAWN_ENABLE_SWIFTSHADER") |
| endif() |
| |
| if (IOS) |
| target_compile_options(dawn_native_objects PRIVATE -fno-objc-arc) |
| target_compile_options(dawn_native PRIVATE -fno-objc-arc) |
| endif() |
| |
| if (DAWN_BUILD_MONOLITHIC_LIBRARY) |
| ############################################################################### |
| # Do the 'complete_lib' build. |
| # A convenience target that bundles dawn_native and procs calling it directly so that |
| # applications link against it and have WebGPU work without jumping through more hoops. |
| # Note that this library name is referenced in several places, search for it and things like: |
| # "{{.*}}_dawn" when you rename it. |
| ############################################################################### |
| DawnJSONGenerator( |
| TARGET "webgpu_dawn_native_proc" |
| PRINT_NAME "Dawn native WebGPU procs" |
| OUTPUT_SOURCES WEBGPU_DAWN_NATIVE_PROC_GEN_SOURCES |
| ) |
| # Bundle all objects of dawn_native, it's public dependencies and private dependencies. |
| include(BundleLibraries) |
| bundle_libraries(webgpu_dawn dawn::dawn_native_objects) |
| add_library(dawn::webgpu_dawn ALIAS webgpu_dawn) |
| # Compile backend specific sources along with webgpu_dawn_native_proc sources for export macros to get applied. |
| target_sources(webgpu_dawn |
| PRIVATE |
| ${WEBGPU_DAWN_NATIVE_PROC_GEN_SOURCES} |
| ${dawn_component_srcs} |
| ) |
| target_compile_definitions(webgpu_dawn |
| PRIVATE |
| "WGPU_IMPLEMENTATION" |
| "DAWN_NATIVE_IMPLEMENTATION" |
| PUBLIC |
| "WGPU_SHARED_LIBRARY" |
| "DAWN_NATIVE_SHARED_LIBRARY" |
| ) |
| # Apart from dawn_public_config, everything else goes inside PRIVATE, otherwise install rules will complain that they were not exported. |
| target_link_libraries(webgpu_dawn |
| PUBLIC |
| dawn_public_config |
| PRIVATE |
| dawn_internal_config |
| ${dawn_native_public_depends} |
| ${dawn_native_private_depends} |
| ${conditional_private_platform_depends} |
| ) |
| set(webgpu_dawn_public_headers) |
| foreach(dawn_target_name IN ITEMS dawn_headers dawncpp_headers dawn_native_objects) |
| get_target_property(headers "${dawn_target_name}" INTERFACE_SOURCES) |
| list(INSERT webgpu_dawn_public_headers 0 "${headers}") |
| endforeach() |
| if (DAWN_ENABLE_INSTALL) |
| dawn_install_target(dawn_public_config) |
| dawn_install_target(webgpu_dawn |
| HEADERS ${webgpu_dawn_public_headers}) |
| endif () |
| endif () |
| |
| # Linking with dxcompiler after bundling so that the bundling process |
| # doesn't see the dxcompiler and end up with unresolved linker errors. |
| # They happen because dxcompiler is declared a shared library and bundle_libraries |
| # doesn't work well with shared libs |
| if (DAWN_USE_BUILT_DXC) |
| target_link_libraries(dawn_native PRIVATE dxcompiler) |
| endif() |