summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/crocus/crocus_context.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/crocus/crocus_context.c')
-rw-r--r--src/gallium/drivers/crocus/crocus_context.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/gallium/drivers/crocus/crocus_context.c b/src/gallium/drivers/crocus/crocus_context.c
index 44d947de84a..e8d52b6e3ab 100644
--- a/src/gallium/drivers/crocus/crocus_context.c
+++ b/src/gallium/drivers/crocus/crocus_context.c
@@ -32,7 +32,7 @@
#include "crocus_context.h"
#include "crocus_resource.h"
#include "crocus_screen.h"
-#include "common/intel_defines.h"
+#include "common/i915/intel_defines.h"
#include "common/intel_sample_positions.h"
/**
@@ -40,7 +40,7 @@
*/
static void
crocus_set_debug_callback(struct pipe_context *ctx,
- const struct pipe_debug_callback *cb)
+ const struct util_debug_callback *cb)
{
struct crocus_context *ice = (struct crocus_context *)ctx;
@@ -61,7 +61,7 @@ crocus_init_identifier_bo(struct crocus_context *ice)
ice->workaround_bo->kflags |= EXEC_OBJECT_CAPTURE;
ice->workaround_offset = ALIGN(
- intel_debug_write_identifiers(bo_map, 4096, "Crocus") + 8, 8);
+ intel_debug_write_identifiers(bo_map, 4096, "Crocus"), 32);
crocus_bo_unmap(ice->workaround_bo);
@@ -188,12 +188,21 @@ crocus_destroy_context(struct pipe_context *ctx)
{
struct crocus_context *ice = (struct crocus_context *)ctx;
struct crocus_screen *screen = (struct crocus_screen *)ctx->screen;
+
+ blorp_finish(&ice->blorp);
+
if (ctx->stream_uploader)
u_upload_destroy(ctx->stream_uploader);
if (ice->blitter)
util_blitter_destroy(ice->blitter);
screen->vtbl.destroy_state(ice);
+
+ for (unsigned i = 0; i < ARRAY_SIZE(ice->shaders.scratch_bos); i++) {
+ for (unsigned j = 0; j < ARRAY_SIZE(ice->shaders.scratch_bos[i]); j++)
+ crocus_bo_unreference(ice->shaders.scratch_bos[i][j]);
+ }
+
crocus_destroy_program_cache(ice);
u_upload_destroy(ice->query_buffer_uploader);
@@ -258,7 +267,7 @@ crocus_create_context(struct pipe_screen *pscreen, void *priv, unsigned flags)
ctx->stream_uploader = u_upload_create_default(ctx);
if (!ctx->stream_uploader) {
- free(ctx);
+ ralloc_free(ice);
return NULL;
}
ctx->const_uploader = ctx->stream_uploader;
@@ -277,6 +286,7 @@ crocus_create_context(struct pipe_screen *pscreen, void *priv, unsigned flags)
crocus_init_program_functions(ctx);
crocus_init_resource_functions(ctx);
crocus_init_flush_functions(ctx);
+ crocus_init_perfquery_functions(ctx);
crocus_init_program_cache(ice);
@@ -325,8 +335,6 @@ crocus_create_context(struct pipe_screen *pscreen, void *priv, unsigned flags)
return threaded_context_create(ctx, &screen->transfer_pool,
crocus_replace_buffer_storage,
NULL, /* TODO: asynchronous flushes? */
- NULL,
- false,
&ice->thrctx);
}