From: Timothy Arceri Date: Tue, 13 Feb 2018 03:25:51 +0000 (+1100) Subject: st: add NIR GL_ARB_get_program_binary support X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c6b70a0eaea63e824e3733b16cb90e1595b01c1d;p=mesa.git st: add NIR GL_ARB_get_program_binary support Reviewed-by: Marek Olšák --- diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 7e721572e0a..e23f9fd70b0 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -758,6 +758,17 @@ st_init_driver_functions(struct pipe_screen *screen, /* GL_ARB_get_program_binary */ functions->GetProgramBinaryDriverSHA1 = st_get_program_binary_driver_sha1; - functions->ProgramBinarySerializeDriverBlob = st_serialise_tgsi_program; - functions->ProgramBinaryDeserializeDriverBlob = st_deserialise_tgsi_program; + + enum pipe_shader_ir preferred_ir = (enum pipe_shader_ir) + screen->get_shader_param(screen, PIPE_SHADER_VERTEX, + PIPE_SHADER_CAP_PREFERRED_IR); + if (preferred_ir == PIPE_SHADER_IR_NIR) { + functions->ProgramBinarySerializeDriverBlob = st_serialise_nir_program; + functions->ProgramBinaryDeserializeDriverBlob = + st_deserialise_nir_program; + } else { + functions->ProgramBinarySerializeDriverBlob = st_serialise_tgsi_program; + functions->ProgramBinaryDeserializeDriverBlob = + st_deserialise_tgsi_program; + } }