[Mesa-dev] [PATCH 02/11] i965: initialize SPIR-V capabilities
Alejandro Piñeiro
apinheiro at igalia.com
Mon Mar 26 14:52:58 UTC 2018
Ping.
This is the only pending patch to review from this series. Although it is independent enough and I could submit to master the rest of the series, I would prefer to push all the series, and move to shape a second batch without pending patches around.
Thanks in advance.
On 08/03/18 09:19, Alejandro Piñeiro wrote:
> Needed for ARB_gl_spirv. Right now those are the same that the intel
> vulkan driver, but those are not shared. From the ARB_spirv_extensions
> spec:
>
> "3. If a new GL extension is added that includes SPIR-V support via
> a new SPIR-V extension does it's SPIR-V extension also get
> enumerated by the SPIR_V_EXTENSIONS_ARB query?.
>
> RESOLVED. Yes. It's good to include it for consistency. Any SPIR-V
> functionality supported beyond the SPIR-V version that is required
> for the GL API version should be enumerated."
>
> Reading between lines, there is the possibility of specific GL
> extensions enabling specific SPIR-V extensions (so capabilities). That
> would mean that it is possible that OpenGL and Vulkan not having the
> same capabilities supported, even for the same driver. So for now we
> keep them separate. Perhaps in the future it is better to keep them
> the same and synced.
>
> Note: we initialize SPIR-V capabilities at brwCreateContext instead of
> the usual brw_initialize_context_constants because we want to do that
> only for version >= 3.3. At brw_initialize_context_constans GL version
> is still not computed.
>
> v2:
> * Rebase update (SpirVCapabilities not a pointer anymore)
> * Fill spirv capabilities for OpenGL >= 3.3 (Ian Romanick)
> ---
> src/mesa/drivers/dri/i965/brw_context.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index fca5c8e3072..abd1592c0f5 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
> ***************************************/
> @@ -343,6 +344,21 @@ brw_init_driver_functions(struct brw_context *brw,
> brw_deserialize_program_binary;
> }
>
> +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;
> +
> + 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.multiview = true;
> + ctx->Const.SpirVCapabilities.variable_pointers = true;
> +}
> +
> static void
> brw_initialize_context_constants(struct brw_context *brw)
> {
> @@ -1063,6 +1079,10 @@ brwCreateContext(gl_api api,
> _mesa_override_extensions(ctx);
> _mesa_compute_version(ctx);
>
> + /* GL_ARB_gl_spirv */
> + if (ctx->Version >= 33)
> + brw_initialize_spirv_supported_capabilities(brw);
> +
> _mesa_initialize_dispatch_tables(ctx);
> _mesa_initialize_vbo_vtxfmt(ctx);
>
More information about the mesa-dev
mailing list