Move compiler.h and imports.h/c from src/mesa/main into src/util
[mesa.git] / src / mesa / state_tracker / st_extensions.c
index 229319af690766a9f90c49df3c051bce131c10ec..7d77ed4151d860d578ec7f9296b1b9c35b0f7f3f 100644 (file)
@@ -28,7 +28,7 @@
 
 #include "compiler/nir/nir.h"
 
-#include "main/imports.h"
+#include "util/imports.h"
 #include "main/context.h"
 #include "main/macros.h"
 #include "main/spirv_extensions.h"
@@ -335,7 +335,15 @@ void st_init_limits(struct pipe_screen *screen,
       if (sh == MESA_SHADER_VERTEX) {
          if (screen->get_param(screen, PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED))
             options->LowerBuiltinVariablesXfb |= VARYING_BIT_POS;
+         if (screen->get_param(screen, PIPE_CAP_PSIZ_CLAMPED))
+            options->LowerBuiltinVariablesXfb |= VARYING_BIT_PSIZ;
       }
+
+      /* Initialize lower precision shader compiler option based on
+       * the value of PIPE_SHADER_CAP_FP16.
+       */
+      options->LowerPrecision =
+         screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_FP16);
    }
 
    c->MaxUserAssignableUniformLocations =
@@ -567,6 +575,12 @@ void st_init_limits(struct pipe_screen *screen,
 
    c->VertexBufferOffsetIsInt32 =
       screen->get_param(screen, PIPE_CAP_SIGNED_VERTEX_BUFFER_OFFSET);
+
+   c->MultiDrawWithUserIndices =
+      screen->get_param(screen, PIPE_CAP_DRAW_INFO_START_WITH_USER_INDICES);
+
+   c->glBeginEndBufferSize =
+      screen->get_param(screen, PIPE_CAP_GL_BEGIN_END_BUFFER_SIZE);
 }
 
 
@@ -1704,4 +1718,6 @@ void st_init_extensions(struct pipe_screen *screen,
       consts->SpirVExtensions = CALLOC_STRUCT(spirv_supported_extensions);
       _mesa_fill_supported_spirv_extensions(consts->SpirVExtensions, spirv_caps);
    }
+
+   consts->AllowDrawOutOfOrder = options->allow_draw_out_of_order;
 }