aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/dri/i965')
-rw-r--r--src/mesa/drivers/dri/i965/blorp.c14
-rw-r--r--src/mesa/drivers/dri/i965/blorp.h10
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp.c6
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp.h2
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.c7
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.h3
6 files changed, 42 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/blorp.c b/src/mesa/drivers/dri/i965/blorp.c
index de627deb619..cb2cb59eb7e 100644
--- a/src/mesa/drivers/dri/i965/blorp.c
+++ b/src/mesa/drivers/dri/i965/blorp.c
@@ -31,6 +31,20 @@
#include "brw_state.h"
void
+blorp_init(struct blorp_context *blorp, void *driver_ctx,
+ struct isl_device *isl_dev)
+{
+ blorp->driver_ctx = driver_ctx;
+ blorp->isl_dev = isl_dev;
+}
+
+void
+blorp_finish(struct blorp_context *blorp)
+{
+ blorp->driver_ctx = NULL;
+}
+
+void
brw_blorp_surface_info_init(struct brw_context *brw,
struct brw_blorp_surface_info *info,
const struct brw_blorp_surf *surf,
diff --git a/src/mesa/drivers/dri/i965/blorp.h b/src/mesa/drivers/dri/i965/blorp.h
index c20e2be8b01..7dbf022b74b 100644
--- a/src/mesa/drivers/dri/i965/blorp.h
+++ b/src/mesa/drivers/dri/i965/blorp.h
@@ -37,6 +37,16 @@ struct brw_wm_prog_key;
extern "C" {
#endif
+struct blorp_context {
+ void *driver_ctx;
+
+ const struct isl_device *isl_dev;
+};
+
+void blorp_init(struct blorp_context *blorp, void *driver_ctx,
+ struct isl_device *isl_dev);
+void blorp_finish(struct blorp_context *blorp);
+
struct brw_blorp_surf
{
const struct isl_surf *surf;
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c
index f4c2740f6c1..727be632560 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.c
+++ b/src/mesa/drivers/dri/i965/brw_blorp.c
@@ -37,6 +37,12 @@
#define FILE_DEBUG_FLAG DEBUG_BLORP
+void
+brw_blorp_init(struct brw_context *brw)
+{
+ blorp_init(&brw->blorp, brw, &brw->isl_dev);
+}
+
static void
apply_gen6_stencil_hiz_offset(struct isl_surf *surf,
struct intel_mipmap_tree *mt,
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h b/src/mesa/drivers/dri/i965/brw_blorp.h
index 1291916e9f0..94de3075e9c 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -31,6 +31,8 @@
extern "C" {
#endif
+void brw_blorp_init(struct brw_context *brw);
+
void
brw_blorp_blit_miptrees(struct brw_context *brw,
struct intel_mipmap_tree *src_mt,
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index 888097d297a..41c972c568a 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -51,6 +51,7 @@
#include "brw_context.h"
#include "brw_defines.h"
+#include "brw_blorp.h"
#include "brw_compiler.h"
#include "brw_draw.h"
#include "brw_state.h"
@@ -1048,6 +1049,9 @@ brwCreateContext(gl_api api,
brw_init_surface_formats(brw);
+ if (brw->gen >= 6)
+ brw_blorp_init(brw);
+
brw->max_vs_threads = devinfo->max_vs_threads;
brw->max_hs_threads = devinfo->max_hs_threads;
brw->max_ds_threads = devinfo->max_ds_threads;
@@ -1130,6 +1134,9 @@ intelDestroyContext(__DRIcontext * driContextPriv)
brw_destroy_shader_time(brw);
}
+ if (brw->gen >= 6)
+ blorp_finish(&brw->blorp);
+
brw_destroy_state(brw);
brw_draw_destroy(brw);
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index 1a4efa3cb0c..d8aa2ba47f3 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -41,6 +41,7 @@
#include "intel_aub.h"
#include "isl/isl.h"
+#include "blorp.h"
#ifdef __cplusplus
extern "C" {
@@ -893,6 +894,8 @@ struct brw_context
struct isl_device isl_dev;
+ struct blorp_context blorp;
+
GLuint NewGLState;
struct {
struct brw_state_flags pipelines[BRW_NUM_PIPELINES];