#include "pipe/p_context.h"
+#include "util/u_inlines.h"
#include "util/u_simple_list.h"
#include "brw_context.h"
-#include "brw_defines.h"
#include "brw_draw.h"
#include "brw_state.h"
#include "brw_batchbuffer.h"
#include "brw_winsys.h"
+#include "brw_resource.h"
#include "brw_screen.h"
brw_pipe_vertex_cleanup( brw );
brw_pipe_clear_cleanup( brw );
+ brw_hw_cc_cleanup( brw );
+
+
FREE(brw->wm.compile_data);
for (i = 0; i < brw->curr.fb.nr_cbufs; i++)
brw->curr.fb.nr_cbufs = 0;
pipe_surface_reference(&brw->curr.fb.zsbuf, NULL);
- brw->sws->bo_unreference(brw->curbe.curbe_bo);
- brw->sws->bo_unreference(brw->vs.prog_bo);
- brw->sws->bo_unreference(brw->vs.state_bo);
- brw->sws->bo_unreference(brw->vs.bind_bo);
- brw->sws->bo_unreference(brw->gs.prog_bo);
- brw->sws->bo_unreference(brw->gs.state_bo);
- brw->sws->bo_unreference(brw->clip.prog_bo);
- brw->sws->bo_unreference(brw->clip.state_bo);
- brw->sws->bo_unreference(brw->clip.vp_bo);
- brw->sws->bo_unreference(brw->sf.prog_bo);
- brw->sws->bo_unreference(brw->sf.state_bo);
- brw->sws->bo_unreference(brw->sf.vp_bo);
- for (i = 0; i < BRW_MAX_TEX_UNIT; i++)
- brw->sws->bo_unreference(brw->wm.sdc_bo[i]);
- brw->sws->bo_unreference(brw->wm.bind_bo);
- for (i = 0; i < BRW_WM_MAX_SURF; i++)
- brw->sws->bo_unreference(brw->wm.surf_bo[i]);
- brw->sws->bo_unreference(brw->wm.sampler_bo);
- brw->sws->bo_unreference(brw->wm.prog_bo);
- brw->sws->bo_unreference(brw->wm.state_bo);
- brw->sws->bo_unreference(brw->cc.prog_bo);
- brw->sws->bo_unreference(brw->cc.state_bo);
- brw->sws->bo_unreference(brw->cc.vp_bo);
+ bo_reference(&brw->curbe.curbe_bo, NULL);
+ bo_reference(&brw->vs.prog_bo, NULL);
+ bo_reference(&brw->vs.state_bo, NULL);
+ bo_reference(&brw->vs.bind_bo, NULL);
+ bo_reference(&brw->gs.prog_bo, NULL);
+ bo_reference(&brw->gs.state_bo, NULL);
+ bo_reference(&brw->clip.prog_bo, NULL);
+ bo_reference(&brw->clip.state_bo, NULL);
+ bo_reference(&brw->clip.vp_bo, NULL);
+ bo_reference(&brw->sf.prog_bo, NULL);
+ bo_reference(&brw->sf.state_bo, NULL);
+ bo_reference(&brw->sf.vp_bo, NULL);
+
+ for (i = 0; i < Elements(brw->wm.sdc_bo); i++)
+ bo_reference(&brw->wm.sdc_bo[i], NULL);
+
+ bo_reference(&brw->wm.bind_bo, NULL);
+
+ for (i = 0; i < Elements(brw->wm.surf_bo); i++)
+ bo_reference(&brw->wm.surf_bo[i], NULL);
+
+ bo_reference(&brw->wm.sampler_bo, NULL);
+ bo_reference(&brw->wm.prog_bo, NULL);
+ bo_reference(&brw->wm.state_bo, NULL);
}
-struct pipe_context *brw_create_context(struct pipe_screen *screen)
+struct pipe_context *brw_create_context(struct pipe_screen *screen,
+ void *priv)
{
struct brw_context *brw = (struct brw_context *) CALLOC_STRUCT(brw_context);
}
brw->base.screen = screen;
+ brw->base.priv = priv;
brw->base.destroy = brw_destroy_context;
brw->sws = brw_screen(screen)->sws;
+ brw->chipset = brw_screen(screen)->chipset;
+ brw_init_resource_functions( brw );
brw_pipe_blend_init( brw );
brw_pipe_depth_stencil_init( brw );
brw_pipe_framebuffer_init( brw );
brw_pipe_vertex_init( brw );
brw_pipe_clear_init( brw );
+ brw_hw_cc_init( brw );
+
brw_init_state( brw );
brw_draw_init( brw );