aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/state_tracker/st_context.c6
-rw-r--r--src/mesa/state_tracker/st_extensions.c4
2 files changed, 10 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 7564a530352..a7b2cfc12ba 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -74,6 +74,7 @@
#include "st_pbo.h"
#include "st_program.h"
#include "st_sampler_view.h"
+#include "st_shader_cache.h"
#include "st_vdpau.h"
#include "st_texture.h"
#include "pipe/p_context.h"
@@ -760,4 +761,9 @@ st_init_driver_functions(struct pipe_screen *screen,
functions->SetBackgroundContext = st_set_background_context;
functions->GetDriverUuid = st_get_device_uuid;
functions->GetDeviceUuid = st_get_driver_uuid;
+
+ /* 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;
}
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index c8411a69951..370d1a7e06b 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -417,6 +417,10 @@ void st_init_limits(struct pipe_screen *screen,
c->GLSLFrontFacingIsSysVal =
screen->get_param(screen, PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL);
+ /* GL_ARB_get_program_binary */
+ if (screen->get_disk_shader_cache && screen->get_disk_shader_cache(screen))
+ c->NumProgramBinaryFormats = 1;
+
c->MaxAtomicBufferBindings =
c->Program[MESA_SHADER_FRAGMENT].MaxAtomicBuffers;