st/nine: Properly initialize GLSL types for NIR shaders.
authorTimur Kristóf <timur.kristof@gmail.com>
Wed, 28 Aug 2019 23:23:37 +0000 (01:23 +0200)
committerJason Ekstrand <jason@jlekstrand.net>
Wed, 28 Aug 2019 23:31:34 +0000 (23:31 +0000)
NIR shaders use GLSL types (note: these live outside libglsl), and
nine needs to properly initialize these just like the other state
trackers. This fixes an assertion failure when TTN is used.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
src/gallium/state_trackers/nine/device9.c

index 6d29378a7bc3b41003d163a169282a619a4e7fc0..0e3333a257d5bb518038994a028f2fc1ed13d6a3 100644 (file)
@@ -51,6 +51,7 @@
 #include "util/u_surface.h"
 #include "util/u_upload_mgr.h"
 #include "hud/hud_context.h"
+#include "compiler/glsl_types.h"
 
 #include "cso_cache/cso_context.h"
 
@@ -144,6 +145,9 @@ NineDevice9_ctor( struct NineDevice9 *This,
 
     if (FAILED(hr)) { return hr; }
 
+    /* NIR shaders need to use GLSL types so let's initialize them here */
+    glsl_type_singleton_init_or_ref();
+
     list_inithead(&This->update_buffers);
     list_inithead(&This->update_textures);
     list_inithead(&This->managed_buffers);
@@ -583,6 +587,7 @@ NineDevice9_dtor( struct NineDevice9 *This )
     if (This->d3d9) { IDirect3D9_Release(This->d3d9); }
 
     NineUnknown_dtor(&This->base);
+    glsl_type_singleton_decref();
 }
 
 struct pipe_screen *