Revert "radv: Enable ray tracing pipelines by default"
authorKonstantin Seurer <konstantin.seurer@gmail.com>
Thu, 15 Jun 2023 15:15:25 +0000 (17:15 +0200)
committerMarge Bot <emma+marge@anholt.net>
Fri, 16 Jun 2023 16:13:34 +0000 (16:13 +0000)
This partially reverts commit 374bd4e1bef25ba2aeef6016ac35b41df07f3a99.

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23677>

docs/envvars.rst
src/amd/ci/gitlab-ci.yml
src/amd/vulkan/radv_debug.h
src/amd/vulkan/radv_instance.c
src/amd/vulkan/radv_rt_common.c
src/util/00-radv-defaults.conf
src/util/driconf.h

index 26faf2c..fece46e 100644 (file)
@@ -1235,6 +1235,8 @@ RADV driver environment variables
       enable NGG streamout
    ``nggc``
       enable NGG culling on GPUs where it's not enabled by default (GFX10.1 only).
+   ``rt``
+      enable rt pipelines whose implementation is still experimental.
    ``sam``
       enable optimizations to move more driver internal objects to VRAM.
    ``rtwave64``
index d9f29fe..6a44ac8 100644 (file)
@@ -373,6 +373,7 @@ vkcts-navi21-valve:
     - .navi21-test-valve
   variables:
     GPU_VERSION: radv-navi21-aco
+    RADV_PERFTEST: rt
 
 # Disabled due to its extremelly-broken nature
 .vkcts-navi21-llvm-valve:
@@ -491,6 +492,7 @@ vkd3d-navi21-valve:
     - .radv-valve-manual-rules
   variables:
     VKD3D_PROTON_RESULTS: radv-navi21-vkd3d
+    RADV_PERFTEST: rt
     VKD3D_CONFIG: dxr11
 
 vkd3d-vangogh-valve:
index dc78eda..ea85539 100644 (file)
@@ -83,12 +83,13 @@ enum {
    RADV_PERFTEST_GE_WAVE_32 = 1u << 5,
    RADV_PERFTEST_NO_SAM = 1u << 6,
    RADV_PERFTEST_SAM = 1u << 7,
-   RADV_PERFTEST_NGGC = 1u << 8,
-   RADV_PERFTEST_EMULATE_RT = 1u << 9,
-   RADV_PERFTEST_RT_WAVE_64 = 1u << 10,
-   RADV_PERFTEST_NGG_STREAMOUT = 1u << 11,
-   RADV_PERFTEST_VIDEO_DECODE = 1u << 12,
-   RADV_PERFTEST_DMA_SHADERS = 1u << 13,
+   RADV_PERFTEST_RT = 1u << 8,
+   RADV_PERFTEST_NGGC = 1u << 9,
+   RADV_PERFTEST_EMULATE_RT = 1u << 10,
+   RADV_PERFTEST_RT_WAVE_64 = 1u << 11,
+   RADV_PERFTEST_NGG_STREAMOUT = 1u << 12,
+   RADV_PERFTEST_VIDEO_DECODE = 1u << 13,
+   RADV_PERFTEST_DMA_SHADERS = 1u << 14,
 };
 
 bool radv_init_trace(struct radv_device *device);
index 716241f..7be8b5a 100644 (file)
@@ -96,6 +96,7 @@ static const struct debug_control radv_perftest_options[] = {
    {"gewave32", RADV_PERFTEST_GE_WAVE_32},
    {"nosam", RADV_PERFTEST_NO_SAM},
    {"sam", RADV_PERFTEST_SAM},
+   {"rt", RADV_PERFTEST_RT},
    {"nggc", RADV_PERFTEST_NGGC},
    {"emulate_rt", RADV_PERFTEST_EMULATE_RT},
    {"rtwave64", RADV_PERFTEST_RT_WAVE_64},
@@ -144,6 +145,7 @@ static const driOptionDescription radv_dri_options[] = {
       DRI_CONF_RADV_FLUSH_BEFORE_QUERY_COPY(false)
       DRI_CONF_RADV_ENABLE_UNIFIED_HEAP_ON_APU(false)
       DRI_CONF_RADV_TEX_NON_UNIFORM(false)
+      DRI_CONF_RADV_RT(false)
       DRI_CONF_RADV_FLUSH_BEFORE_TIMESTAMP_WRITE(false)
       DRI_CONF_RADV_RT_WAVE64(false)
       DRI_CONF_RADV_APP_LAYER()
index 1ef2ec5..415f86a 100644 (file)
@@ -38,8 +38,13 @@ radv_enable_rt(const struct radv_physical_device *pdevice, bool rt_pipelines)
    if (pdevice->rad_info.gfx_level < GFX10_3 && !radv_emulate_rt(pdevice))
       return false;
 
-   if (rt_pipelines && pdevice->use_llvm)
-      return false;
+   if (rt_pipelines) {
+      if (pdevice->use_llvm)
+         return false;
+
+      return (pdevice->instance->perftest_flags & RADV_PERFTEST_RT) ||
+             driQueryOptionb(&pdevice->instance->dri_options, "radv_rt");
+   }
 
    return true;
 }
index 9040034..7ff99aa 100644 (file)
@@ -113,6 +113,7 @@ Application bugs worked around in this file:
 
         <application name="DOOM Eternal" application_name_match="DOOMEternal">
             <option name="radv_zero_vram" value="true" />
+            <option name="radv_rt" value="true" />
         </application>
 
         <application name="No Man's Sky" application_name_match="No Man's Sky">
@@ -143,6 +144,14 @@ Application bugs worked around in this file:
             <option name="radv_enable_unified_heap_on_apu" value="true" />
         </application>
 
+        <application name="Quake II RTX" application_name_match="quake 2 pathtracing">
+            <option name="radv_rt" value="true" />
+        </application>
+
+        <application name="Control (DX12)" application_name_match="Control_DX12.exe">
+            <option name="radv_rt" value="true" />
+        </application>
+
         <application name="Metro Exodus (Linux native)" application_name_match="metroexodus">
             <option name="radv_app_layer" value="metroexodus" />
         </application>
index 2152b96..ab7aa2c 100644 (file)
    DRI_CONF_OPT_B(radv_tex_non_uniform, def, \
                   "Always mark texture sample operations as non-uniform.")
 
+#define DRI_CONF_RADV_RT(def) \
+   DRI_CONF_OPT_B(radv_rt, def, \
+                  "Expose support for VK_KHR_ray_tracing_pipeline")
+
 #define DRI_CONF_RADV_FLUSH_BEFORE_TIMESTAMP_WRITE(def) \
    DRI_CONF_OPT_B(radv_flush_before_timestamp_write, def, \
                   "Wait for previous commands to finish before writing timestamps")