diff options
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 4e37425099d..2e961a1ef6e 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -78,6 +78,7 @@ #include "common/gen_defines.h" +#include "compiler/spirv/nir_spirv.h" /*************************************** * Mesa's Driver Functions ***************************************/ @@ -344,6 +345,26 @@ brw_init_driver_functions(struct brw_context *brw, } static void +brw_initialize_spirv_supported_capabilities(struct brw_context *brw) +{ + const struct gen_device_info *devinfo = &brw->screen->devinfo; + struct gl_context *ctx = &brw->ctx; + + /* The following SPIR-V capabilities are only supported on gen7+. In theory + * you should enable the extension only on gen7+, but just in case let's + * assert it. + */ + assert(devinfo->gen >= 7); + + ctx->Const.SpirVCapabilities.float64 = devinfo->gen >= 8; + ctx->Const.SpirVCapabilities.int64 = devinfo->gen >= 8; + ctx->Const.SpirVCapabilities.tessellation = true; + ctx->Const.SpirVCapabilities.draw_parameters = true; + ctx->Const.SpirVCapabilities.image_write_without_format = true; + ctx->Const.SpirVCapabilities.variable_pointers = true; +} + +static void brw_initialize_context_constants(struct brw_context *brw) { const struct gen_device_info *devinfo = &brw->screen->devinfo; @@ -1062,6 +1083,10 @@ brwCreateContext(gl_api api, _mesa_override_extensions(ctx); _mesa_compute_version(ctx); + /* GL_ARB_gl_spirv */ + if (ctx->Extensions.ARB_gl_spirv) + brw_initialize_spirv_supported_capabilities(brw); + _mesa_initialize_dispatch_tables(ctx); _mesa_initialize_vbo_vtxfmt(ctx); |