Mesa (main): dzn: merge util sources

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 19 16:29:46 UTC 2022


Module: Mesa
Branch: main
Commit: 2ca4e21df7750ec4b475c907de2ba7636ef83e4e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ca4e21df7750ec4b475c907de2ba7636ef83e4e

Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date:   Thu Apr  7 18:16:19 2022 +0200

dzn: merge util sources

There, no more C and C++ sources of the same base-name. We can do both
in one source.

This is our last C++ source file, so let's also clean away the C++20
mess in meson.build.

Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15816>

---

 src/microsoft/vulkan/dzn_nir.h     |   8 --
 src/microsoft/vulkan/dzn_private.h |  14 ---
 src/microsoft/vulkan/dzn_util.c    | 149 +++++++++++++++++++++++++++++++
 src/microsoft/vulkan/dzn_util.cpp  | 177 -------------------------------------
 src/microsoft/vulkan/meson.build   |  10 ---
 5 files changed, 149 insertions(+), 209 deletions(-)

diff --git a/src/microsoft/vulkan/dzn_nir.h b/src/microsoft/vulkan/dzn_nir.h
index 5f352c54bbb..a8ac15463d5 100644
--- a/src/microsoft/vulkan/dzn_nir.h
+++ b/src/microsoft/vulkan/dzn_nir.h
@@ -32,10 +32,6 @@
 
 #include "nir.h"
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 struct dzn_indirect_draw_params {
    uint32_t vertex_count;
    uint32_t instance_count;
@@ -134,8 +130,4 @@ dzn_nir_blit_vs(void);
 nir_shader *
 dzn_nir_blit_fs(const struct dzn_nir_blit_info *info);
 
-#ifdef __cplusplus
-}
-#endif
-
 #endif
diff --git a/src/microsoft/vulkan/dzn_private.h b/src/microsoft/vulkan/dzn_private.h
index 0b08e517bdf..d310b0ca871 100644
--- a/src/microsoft/vulkan/dzn_private.h
+++ b/src/microsoft/vulkan/dzn_private.h
@@ -206,10 +206,6 @@ dzn_physical_device_get_mem_type_mask_for_resource(const struct dzn_physical_dev
 #define dzn_debug_ignored_stype(sType) \
    mesa_logd("%s: ignored VkStructureType %u\n", __func__, (sType))
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 IDXGIFactory4 *
 dxgi_get_factory(bool debug);
 
@@ -225,10 +221,6 @@ d3d12_enable_gpu_validation();
 ID3D12Device1 *
 d3d12_create_device(IDXGIAdapter1 *adapter, bool experimental_features);
 
-#ifdef __cplusplus
-}
-#endif
-
 struct dzn_queue {
    struct vk_queue vk;
 
@@ -905,17 +897,11 @@ struct dzn_sampler {
    ((_range)->levelCount == VK_REMAINING_MIP_LEVELS ? \
     (_image)->vk.mip_levels - (_range)->baseMipLevel : (_range)->levelCount)
 
-#ifdef __cplusplus
-extern "C" {
-#endif
 DXGI_FORMAT dzn_pipe_to_dxgi_format(enum pipe_format in);
 D3D12_FILTER dzn_translate_sampler_filter(const VkSamplerCreateInfo *create_info);
 D3D12_COMPARISON_FUNC dzn_translate_compare_op(VkCompareOp in);
 void dzn_translate_viewport(D3D12_VIEWPORT *out, const VkViewport *in);
 void dzn_translate_rect(D3D12_RECT *out, const VkRect2D *in);
-#ifdef __cplusplus
-}
-#endif
 
 #define dzn_foreach_aspect(aspect, mask) \
         for (VkImageAspectFlagBits aspect = VK_IMAGE_ASPECT_COLOR_BIT; \
diff --git a/src/microsoft/vulkan/dzn_util.c b/src/microsoft/vulkan/dzn_util.c
index d4c187e4566..048aa9eb861 100644
--- a/src/microsoft/vulkan/dzn_util.c
+++ b/src/microsoft/vulkan/dzn_util.c
@@ -22,11 +22,16 @@
  */
 
 #define D3D12_IGNORE_SDK_LAYERS
+#define COBJMACROS
 #include <directx/d3d12.h>
 
 #include <vulkan/vulkan.h>
 
 #include "util/format/u_format.h"
+#include "util/log.h"
+
+#include <directx/d3d12sdklayers.h>
+#include <dxgi1_4.h>
 
 static const DXGI_FORMAT formats[PIPE_FORMAT_COUNT] = {
 #define MAP_FORMAT_NORM(FMT) \
@@ -235,3 +240,147 @@ dzn_translate_rect(D3D12_RECT *out,
    out->right = in->offset.x + in->extent.width;
    out->bottom = in->offset.y + in->extent.height;
 }
+
+IDXGIFactory4 *
+dxgi_get_factory(bool debug)
+{
+   static const GUID IID_IDXGIFactory4 = {
+      0x1bc6ea02, 0xef36, 0x464f,
+      { 0xbf, 0x0c, 0x21, 0xca, 0x39, 0xe5, 0x16, 0x8a }
+   };
+
+   HMODULE dxgi_mod = LoadLibraryA("DXGI.DLL");
+   if (!dxgi_mod) {
+      mesa_loge("failed to load DXGI.DLL\n");
+      return NULL;
+   }
+
+   typedef HRESULT(WINAPI *PFN_CREATE_DXGI_FACTORY2)(UINT flags, REFIID riid, void **ppFactory);
+   PFN_CREATE_DXGI_FACTORY2 CreateDXGIFactory2;
+
+   CreateDXGIFactory2 = (PFN_CREATE_DXGI_FACTORY2)GetProcAddress(dxgi_mod, "CreateDXGIFactory2");
+   if (!CreateDXGIFactory2) {
+      mesa_loge("failed to load CreateDXGIFactory2 from DXGI.DLL\n");
+      return NULL;
+   }
+
+   UINT flags = 0;
+   if (debug)
+      flags |= DXGI_CREATE_FACTORY_DEBUG;
+
+   IDXGIFactory4 *factory;
+   HRESULT hr = CreateDXGIFactory2(flags, &IID_IDXGIFactory4, &factory);
+   if (FAILED(hr)) {
+      mesa_loge("CreateDXGIFactory2 failed: %08x\n", hr);
+      return NULL;
+   }
+
+   return factory;
+}
+
+static ID3D12Debug *
+get_debug_interface()
+{
+   typedef HRESULT(WINAPI *PFN_D3D12_GET_DEBUG_INTERFACE)(REFIID riid, void **ppFactory);
+   PFN_D3D12_GET_DEBUG_INTERFACE D3D12GetDebugInterface;
+
+   HMODULE d3d12_mod = LoadLibraryA("D3D12.DLL");
+   if (!d3d12_mod) {
+      mesa_loge("failed to load D3D12.DLL\n");
+      return NULL;
+   }
+
+   D3D12GetDebugInterface = (PFN_D3D12_GET_DEBUG_INTERFACE)GetProcAddress(d3d12_mod, "D3D12GetDebugInterface");
+   if (!D3D12GetDebugInterface) {
+      mesa_loge("failed to load D3D12GetDebugInterface from D3D12.DLL\n");
+      return NULL;
+   }
+
+   ID3D12Debug *debug;
+   if (FAILED(D3D12GetDebugInterface(&IID_ID3D12Debug, &debug))) {
+      mesa_loge("D3D12GetDebugInterface failed\n");
+      return NULL;
+   }
+
+   return debug;
+}
+
+void
+d3d12_enable_debug_layer()
+{
+   ID3D12Debug *debug = get_debug_interface();
+   if (debug) {
+      ID3D12Debug_EnableDebugLayer(debug);
+      ID3D12Debug_Release(debug);
+   }
+}
+
+void
+d3d12_enable_gpu_validation()
+{
+   ID3D12Debug *debug = get_debug_interface();
+   if (debug) {
+      ID3D12Debug3 *debug3;
+      if (SUCCEEDED(ID3D12Debug_QueryInterface(debug,
+                                               &IID_ID3D12Debug3,
+                                               &debug3))) {
+         ID3D12Debug3_SetEnableGPUBasedValidation(debug3, true);
+         ID3D12Debug3_Release(debug3);
+      }
+      ID3D12Debug_Release(debug);
+   }
+}
+
+ID3D12Device1 *
+d3d12_create_device(IDXGIAdapter1 *adapter, bool experimental_features)
+{
+   typedef HRESULT(WINAPI *PFN_D3D12CREATEDEVICE)(IDXGIAdapter1*, D3D_FEATURE_LEVEL, REFIID, void**);
+   PFN_D3D12CREATEDEVICE D3D12CreateDevice;
+
+   HMODULE d3d12_mod = LoadLibraryA("D3D12.DLL");
+   if (!d3d12_mod) {
+      mesa_loge("failed to load D3D12.DLL\n");
+      return NULL;
+   }
+
+#ifdef _WIN32
+   if (experimental_features)
+#endif
+   {
+      typedef HRESULT(WINAPI *PFN_D3D12ENABLEEXPERIMENTALFEATURES)(UINT, const IID*, void*, UINT*);
+      PFN_D3D12ENABLEEXPERIMENTALFEATURES D3D12EnableExperimentalFeatures =
+         (PFN_D3D12ENABLEEXPERIMENTALFEATURES)GetProcAddress(d3d12_mod, "D3D12EnableExperimentalFeatures");
+      if (FAILED(D3D12EnableExperimentalFeatures(1, &D3D12ExperimentalShaderModels, NULL, NULL))) {
+         mesa_loge("failed to enable experimental shader models\n");
+         return NULL;
+      }
+   }
+
+   D3D12CreateDevice = (PFN_D3D12CREATEDEVICE)GetProcAddress(d3d12_mod, "D3D12CreateDevice");
+   if (!D3D12CreateDevice) {
+      mesa_loge("failed to load D3D12CreateDevice from D3D12.DLL\n");
+      return NULL;
+   }
+
+   ID3D12Device1 *dev;
+   if (SUCCEEDED(D3D12CreateDevice(adapter, D3D_FEATURE_LEVEL_11_0,
+                 &IID_ID3D12Device1,
+                 &dev)))
+      return dev;
+
+   mesa_loge("D3D12CreateDevice failed\n");
+   return NULL;
+}
+
+PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE
+d3d12_get_serialize_root_sig(void)
+{
+   HMODULE d3d12_mod = LoadLibraryA("d3d12.dll");
+   if (!d3d12_mod) {
+      mesa_loge("failed to load d3d12.dll\n");
+      return NULL;
+   }
+
+   return (PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)
+      GetProcAddress(d3d12_mod, "D3D12SerializeVersionedRootSignature");
+}
diff --git a/src/microsoft/vulkan/dzn_util.cpp b/src/microsoft/vulkan/dzn_util.cpp
deleted file mode 100644
index 5128c34ce5c..00000000000
--- a/src/microsoft/vulkan/dzn_util.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright © Microsoft Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-#include "dzn_private.h"
-
-#include "vk_enum_to_str.h"
-
-#include <stdarg.h>
-#include <stdio.h>
-
-#define CINTERFACE
-#include <directx/d3d12sdklayers.h>
-#undef CINTERFACE
-
-IDXGIFactory4 *
-dxgi_get_factory(bool debug)
-{
-   static const GUID IID_IDXGIFactory4 = {
-      0x1bc6ea02, 0xef36, 0x464f,
-      { 0xbf, 0x0c, 0x21, 0xca, 0x39, 0xe5, 0x16, 0x8a }
-   };
-
-   HMODULE dxgi_mod = LoadLibraryA("DXGI.DLL");
-   if (!dxgi_mod) {
-      mesa_loge("failed to load DXGI.DLL\n");
-      return NULL;
-   }
-
-   typedef HRESULT(WINAPI *PFN_CREATE_DXGI_FACTORY2)(UINT flags, REFIID riid, void **ppFactory);
-   PFN_CREATE_DXGI_FACTORY2 CreateDXGIFactory2;
-
-   CreateDXGIFactory2 = (PFN_CREATE_DXGI_FACTORY2)GetProcAddress(dxgi_mod, "CreateDXGIFactory2");
-   if (!CreateDXGIFactory2) {
-      mesa_loge("failed to load CreateDXGIFactory2 from DXGI.DLL\n");
-      return NULL;
-   }
-
-   UINT flags = 0;
-   if (debug)
-      flags |= DXGI_CREATE_FACTORY_DEBUG;
-
-   IDXGIFactory4 *factory;
-   HRESULT hr = CreateDXGIFactory2(flags, IID_IDXGIFactory4, (void **)&factory);
-   if (FAILED(hr)) {
-      mesa_loge("CreateDXGIFactory2 failed: %08x\n", hr);
-      return NULL;
-   }
-
-   return factory;
-}
-
-static ID3D12Debug *
-get_debug_interface()
-{
-   typedef HRESULT(WINAPI *PFN_D3D12_GET_DEBUG_INTERFACE)(REFIID riid, void **ppFactory);
-   PFN_D3D12_GET_DEBUG_INTERFACE D3D12GetDebugInterface;
-
-   HMODULE d3d12_mod = LoadLibraryA("D3D12.DLL");
-   if (!d3d12_mod) {
-      mesa_loge("failed to load D3D12.DLL\n");
-      return NULL;
-   }
-
-   D3D12GetDebugInterface = (PFN_D3D12_GET_DEBUG_INTERFACE)GetProcAddress(d3d12_mod, "D3D12GetDebugInterface");
-   if (!D3D12GetDebugInterface) {
-      mesa_loge("failed to load D3D12GetDebugInterface from D3D12.DLL\n");
-      return NULL;
-   }
-
-   ID3D12Debug *debug;
-   if (FAILED(D3D12GetDebugInterface(IID_ID3D12Debug, (void **)&debug))) {
-      mesa_loge("D3D12GetDebugInterface failed\n");
-      return NULL;
-   }
-
-   return debug;
-}
-
-void
-d3d12_enable_debug_layer()
-{
-   ID3D12Debug *debug = get_debug_interface();
-   if (debug) {
-      ID3D12Debug_EnableDebugLayer(debug);
-      ID3D12Debug_Release(debug);
-   }
-}
-
-void
-d3d12_enable_gpu_validation()
-{
-   ID3D12Debug *debug = get_debug_interface();
-   if (debug) {
-      ID3D12Debug3 *debug3;
-      if (SUCCEEDED(ID3D12Debug_QueryInterface(debug,
-                                               IID_ID3D12Debug3,
-                                               (void **)&debug3))) {
-         ID3D12Debug3_SetEnableGPUBasedValidation(debug3, true);
-         ID3D12Debug3_Release(debug3);
-      }
-      ID3D12Debug_Release(debug);
-   }
-}
-
-ID3D12Device1 *
-d3d12_create_device(IDXGIAdapter1 *adapter, bool experimental_features)
-{
-   typedef HRESULT(WINAPI *PFN_D3D12CREATEDEVICE)(IDXGIAdapter1*, D3D_FEATURE_LEVEL, REFIID, void**);
-   PFN_D3D12CREATEDEVICE D3D12CreateDevice;
-
-   HMODULE d3d12_mod = LoadLibraryA("D3D12.DLL");
-   if (!d3d12_mod) {
-      mesa_loge("failed to load D3D12.DLL\n");
-      return NULL;
-   }
-
-#ifdef _WIN32
-   if (experimental_features)
-#endif
-   {
-      typedef HRESULT(WINAPI *PFN_D3D12ENABLEEXPERIMENTALFEATURES)(UINT, const IID*, void*, UINT*);
-      PFN_D3D12ENABLEEXPERIMENTALFEATURES D3D12EnableExperimentalFeatures =
-         (PFN_D3D12ENABLEEXPERIMENTALFEATURES)GetProcAddress(d3d12_mod, "D3D12EnableExperimentalFeatures");
-      if (FAILED(D3D12EnableExperimentalFeatures(1, &D3D12ExperimentalShaderModels, NULL, NULL))) {
-         mesa_loge("failed to enable experimental shader models\n");
-         return nullptr;
-      }
-   }
-
-   D3D12CreateDevice = (PFN_D3D12CREATEDEVICE)GetProcAddress(d3d12_mod, "D3D12CreateDevice");
-   if (!D3D12CreateDevice) {
-      mesa_loge("failed to load D3D12CreateDevice from D3D12.DLL\n");
-      return NULL;
-   }
-
-   ID3D12Device1 *dev;
-   if (SUCCEEDED(D3D12CreateDevice(adapter, D3D_FEATURE_LEVEL_11_0,
-                 IID_ID3D12Device1,
-                 (void **)&dev)))
-      return dev;
-
-   mesa_loge("D3D12CreateDevice failed\n");
-   return NULL;
-}
-
-PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE
-d3d12_get_serialize_root_sig(void)
-{
-   HMODULE d3d12_mod = LoadLibraryA("d3d12.dll");
-   if (!d3d12_mod) {
-      mesa_loge("failed to load d3d12.dll\n");
-      return NULL;
-   }
-
-   return (PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)
-      GetProcAddress(d3d12_mod, "D3D12SerializeVersionedRootSignature");
-}
diff --git a/src/microsoft/vulkan/meson.build b/src/microsoft/vulkan/meson.build
index ac35a87c3c7..65f41bf48a6 100644
--- a/src/microsoft/vulkan/meson.build
+++ b/src/microsoft/vulkan/meson.build
@@ -42,7 +42,6 @@ libdzn_files = files(
   'dzn_pipeline.c',
   'dzn_query.c',
   'dzn_sync.c',
-  'dzn_util.cpp',
   'dzn_util.c',
   'dzn_wsi.c',
 )
@@ -64,14 +63,6 @@ if with_platform_windows
   dzn_flags += '-DVK_USE_PLATFORM_WIN32_KHR'
 endif
 
-if meson.version().version_compare('>= 0.60')
-  cpp_std = 'cpp_std=c++20'
-elif cpp.get_id() == 'msvc'
-  cpp_std = 'cpp_std=c++latest'
-else
-  cpp_std = 'cpp_std=c++2a'
-endif
-
 libvulkan_dzn = shared_library(
   'vulkan_dzn',
   [libdzn_files, dzn_entrypoints, sha1_h],
@@ -87,7 +78,6 @@ libvulkan_dzn = shared_library(
   link_args : [ld_args_bsymbolic, ld_args_gc_sections],
   name_prefix : host_machine.system() == 'windows' ? '' : 'lib',
   install : true,
-  override_options: [cpp_std]
 )
 
 icd_file_name = 'libvulkan_dzn.so'



More information about the mesa-commit mailing list