diff --git a/.pick_status.json b/.pick_status.json index aaf8a9de722..5a70009a789 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -517,7 +517,7 @@ "description": "mesa/st: Allocate the gl_context with 16-byte alignment.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "3175b63a0dfa290430f9f7eb651387788933a02b" }, diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index a035d792ce0..95263ea19ad 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -1020,12 +1020,14 @@ st_create_context(gl_api api, struct pipe_context *pipe, if (pipe->set_context_param) funcs.PinDriverToL3Cache = st_pin_driver_to_l3_cache; - ctx = calloc(1, sizeof(struct gl_context)); + /* gl_context must be 16-byte aligned due to the alignment on GLmatrix. */ + ctx = align_malloc(sizeof(struct gl_context), 16); if (!ctx) return NULL; + memset(ctx, 0, sizeof(*ctx)); if (!_mesa_initialize_context(ctx, api, visual, shareCtx, &funcs)) { - free(ctx); + align_free(ctx); return NULL; } @@ -1158,7 +1160,7 @@ st_destroy_context(struct st_context *st) _mesa_destroy_debug_output(ctx); - free(ctx); + align_free(ctx); if (save_ctx == ctx) { /* unbind the context we just deleted */