 Brian
					
					17 anos atrás
						Brian
					
					17 anos atrás
				| @@ -6,6 +6,7 @@ LIBNAME = i965simple | |||
| C_SOURCES = \ | |||
| brw_blit.c \ | |||
| brw_flush.c \ | |||
| brw_screen.c \ | |||
| brw_strings.c \ | |||
| brw_surface.c \ | |||
| brw_cc.c \ | |||
| @@ -40,15 +40,14 @@ | |||
| #include "pipe/p_winsys.h" | |||
| #include "pipe/p_context.h" | |||
| #include "pipe/p_util.h" | |||
| #include "pipe/p_screen.h" | |||
| /*************************************** | |||
| * Mesa's Driver Functions | |||
| ***************************************/ | |||
| #ifndef BRW_DEBUG | |||
| int BRW_DEBUG = (0); | |||
| #endif | |||
| static void brw_destroy(struct pipe_context *pipe) | |||
| { | |||
| struct brw_context *brw = brw_context(pipe); | |||
| @@ -56,6 +55,7 @@ static void brw_destroy(struct pipe_context *pipe) | |||
| FREE(brw); | |||
| } | |||
| static void brw_clear(struct pipe_context *pipe, struct pipe_surface *ps, | |||
| unsigned clearValue) | |||
| { | |||
| @@ -74,64 +74,17 @@ static void brw_clear(struct pipe_context *pipe, struct pipe_surface *ps, | |||
| static int | |||
| brw_get_param(struct pipe_context *pipe, int param) | |||
| { | |||
| switch (param) { | |||
| case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS: | |||
| return 8; | |||
| case PIPE_CAP_NPOT_TEXTURES: | |||
| return 1; | |||
| case PIPE_CAP_TWO_SIDED_STENCIL: | |||
| return 1; | |||
| case PIPE_CAP_GLSL: | |||
| return 0; | |||
| case PIPE_CAP_S3TC: | |||
| return 0; | |||
| case PIPE_CAP_ANISOTROPIC_FILTER: | |||
| return 0; | |||
| case PIPE_CAP_POINT_SPRITE: | |||
| return 0; | |||
| case PIPE_CAP_MAX_RENDER_TARGETS: | |||
| return 1; | |||
| case PIPE_CAP_OCCLUSION_QUERY: | |||
| return 0; | |||
| case PIPE_CAP_TEXTURE_SHADOW_MAP: | |||
| return 1; | |||
| case PIPE_CAP_MAX_TEXTURE_2D_LEVELS: | |||
| return 11; /* max 1024x1024 */ | |||
| case PIPE_CAP_MAX_TEXTURE_3D_LEVELS: | |||
| return 8; /* max 128x128x128 */ | |||
| case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: | |||
| return 11; /* max 1024x1024 */ | |||
| default: | |||
| return 0; | |||
| } | |||
| return pipe->screen->get_param(pipe->screen, param); | |||
| } | |||
| static float | |||
| brw_get_paramf(struct pipe_context *pipe, int param) | |||
| { | |||
| switch (param) { | |||
| case PIPE_CAP_MAX_LINE_WIDTH: | |||
| /* fall-through */ | |||
| case PIPE_CAP_MAX_LINE_WIDTH_AA: | |||
| return 7.5; | |||
| case PIPE_CAP_MAX_POINT_WIDTH: | |||
| /* fall-through */ | |||
| case PIPE_CAP_MAX_POINT_WIDTH_AA: | |||
| return 255.0; | |||
| case PIPE_CAP_MAX_TEXTURE_ANISOTROPY: | |||
| return 4.0; | |||
| case PIPE_CAP_MAX_TEXTURE_LOD_BIAS: | |||
| return 16.0; | |||
| default: | |||
| return 0; | |||
| } | |||
| return pipe->screen->get_paramf(pipe->screen, param); | |||
| } | |||
| static boolean | |||
| brw_is_format_supported( struct pipe_context *pipe, | |||
| enum pipe_format format, uint type ) | |||
| @@ -200,22 +153,23 @@ brw_is_format_supported( struct pipe_context *pipe, | |||
| struct pipe_context *brw_create(struct pipe_winsys *pipe_winsys, | |||
| struct pipe_context *brw_create(struct pipe_screen *screen, | |||
| struct brw_winsys *brw_winsys, | |||
| unsigned pci_id) | |||
| { | |||
| struct brw_context *brw; | |||
| pipe_winsys->printf(pipe_winsys, | |||
| "%s: creating brw_context with pci id 0x%x\n", | |||
| __FUNCTION__, pci_id); | |||
| screen->winsys->printf(screen->winsys, | |||
| "%s: creating brw_context with pci id 0x%x\n", | |||
| __FUNCTION__, pci_id); | |||
| brw = CALLOC_STRUCT(brw_context); | |||
| if (brw == NULL) | |||
| return NULL; | |||
| brw->winsys = brw_winsys; | |||
| brw->pipe.winsys = pipe_winsys; | |||
| brw->pipe.winsys = screen->winsys; | |||
| brw->pipe.screen = screen; | |||
| brw->pipe.destroy = brw_destroy; | |||
| brw->pipe.is_format_supported = brw_is_format_supported; | |||
| @@ -0,0 +1,168 @@ | |||
| /************************************************************************** | |||
| * | |||
| * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. | |||
| * All Rights Reserved. | |||
| * | |||
| * Permission is hereby granted, free of charge, to any person obtaining a | |||
| * copy of this software and associated documentation files (the | |||
| * "Software"), to deal in the Software without restriction, including | |||
| * without limitation the rights to use, copy, modify, merge, publish, | |||
| * distribute, sub license, and/or sell copies of the Software, and to | |||
| * permit persons to whom the Software is furnished to do so, subject to | |||
| * the following conditions: | |||
| * | |||
| * The above copyright notice and this permission notice (including the | |||
| * next paragraph) shall be included in all copies or substantial portions | |||
| * of the Software. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |||
| * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |||
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. | |||
| * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR | |||
| * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |||
| * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |||
| * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
| * | |||
| **************************************************************************/ | |||
| #include "pipe/p_util.h" | |||
| #include "pipe/p_winsys.h" | |||
| #include "brw_context.h" | |||
| #include "brw_screen.h" | |||
| #include "brw_tex_layout.h" | |||
| static const char * | |||
| brw_get_vendor( struct pipe_screen *screen ) | |||
| { | |||
| return "Tungsten Graphics, Inc."; | |||
| } | |||
| static const char * | |||
| brw_get_name( struct pipe_screen *screen ) | |||
| { | |||
| static char buffer[128]; | |||
| const char *chipset; | |||
| switch (brw_screen(screen)->pci_id) { | |||
| case PCI_CHIP_I965_Q: | |||
| chipset = "Intel(R) 965Q"; | |||
| break; | |||
| case PCI_CHIP_I965_G: | |||
| case PCI_CHIP_I965_G_1: | |||
| chipset = "Intel(R) 965G"; | |||
| break; | |||
| case PCI_CHIP_I965_GM: | |||
| chipset = "Intel(R) 965GM"; | |||
| break; | |||
| case PCI_CHIP_I965_GME: | |||
| chipset = "Intel(R) 965GME/GLE"; | |||
| break; | |||
| default: | |||
| chipset = "unknown"; | |||
| break; | |||
| } | |||
| sprintf(buffer, "i965 (chipset: %s)", chipset); | |||
| return buffer; | |||
| } | |||
| static int | |||
| brw_get_param(struct pipe_screen *screen, int param) | |||
| { | |||
| switch (param) { | |||
| case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS: | |||
| return 8; | |||
| case PIPE_CAP_NPOT_TEXTURES: | |||
| return 1; | |||
| case PIPE_CAP_TWO_SIDED_STENCIL: | |||
| return 1; | |||
| case PIPE_CAP_GLSL: | |||
| return 0; | |||
| case PIPE_CAP_S3TC: | |||
| return 0; | |||
| case PIPE_CAP_ANISOTROPIC_FILTER: | |||
| return 0; | |||
| case PIPE_CAP_POINT_SPRITE: | |||
| return 0; | |||
| case PIPE_CAP_MAX_RENDER_TARGETS: | |||
| return 1; | |||
| case PIPE_CAP_OCCLUSION_QUERY: | |||
| return 0; | |||
| case PIPE_CAP_TEXTURE_SHADOW_MAP: | |||
| return 1; | |||
| case PIPE_CAP_MAX_TEXTURE_2D_LEVELS: | |||
| return 11; /* max 1024x1024 */ | |||
| case PIPE_CAP_MAX_TEXTURE_3D_LEVELS: | |||
| return 8; /* max 128x128x128 */ | |||
| case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: | |||
| return 11; /* max 1024x1024 */ | |||
| default: | |||
| return 0; | |||
| } | |||
| } | |||
| static float | |||
| brw_get_paramf(struct pipe_screen *screen, int param) | |||
| { | |||
| switch (param) { | |||
| case PIPE_CAP_MAX_LINE_WIDTH: | |||
| /* fall-through */ | |||
| case PIPE_CAP_MAX_LINE_WIDTH_AA: | |||
| return 7.5; | |||
| case PIPE_CAP_MAX_POINT_WIDTH: | |||
| /* fall-through */ | |||
| case PIPE_CAP_MAX_POINT_WIDTH_AA: | |||
| return 255.0; | |||
| case PIPE_CAP_MAX_TEXTURE_ANISOTROPY: | |||
| return 4.0; | |||
| case PIPE_CAP_MAX_TEXTURE_LOD_BIAS: | |||
| return 16.0; | |||
| default: | |||
| return 0; | |||
| } | |||
| } | |||
| static void | |||
| brw_destroy_screen( struct pipe_screen *screen ) | |||
| { | |||
| FREE(screen); | |||
| } | |||
| /** | |||
| * Create a new brw_screen object | |||
| */ | |||
| struct pipe_screen * | |||
| brw_create_screen(struct pipe_winsys *winsys, uint pci_id) | |||
| { | |||
| struct brw_screen *brwscreen = CALLOC_STRUCT(brw_screen); | |||
| if (!brwscreen) | |||
| return NULL; | |||
| brwscreen->pci_id = pci_id; | |||
| brwscreen->screen.winsys = winsys; | |||
| brwscreen->screen.destroy = brw_destroy_screen; | |||
| brwscreen->screen.get_name = brw_get_name; | |||
| brwscreen->screen.get_vendor = brw_get_vendor; | |||
| brwscreen->screen.get_param = brw_get_param; | |||
| brwscreen->screen.get_paramf = brw_get_paramf; | |||
| brw_init_screen_texture_funcs(&brwscreen->screen); | |||
| return &brwscreen->screen; | |||
| } | |||
| @@ -0,0 +1,68 @@ | |||
| /************************************************************************** | |||
| * | |||
| * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. | |||
| * All Rights Reserved. | |||
| * | |||
| * Permission is hereby granted, free of charge, to any person obtaining a | |||
| * copy of this software and associated documentation files (the | |||
| * "Software"), to deal in the Software without restriction, including | |||
| * without limitation the rights to use, copy, modify, merge, publish, | |||
| * distribute, sub license, and/or sell copies of the Software, and to | |||
| * permit persons to whom the Software is furnished to do so, subject to | |||
| * the following conditions: | |||
| * | |||
| * The above copyright notice and this permission notice (including the | |||
| * next paragraph) shall be included in all copies or substantial portions | |||
| * of the Software. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |||
| * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |||
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. | |||
| * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR | |||
| * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |||
| * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |||
| * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
| * | |||
| **************************************************************************/ | |||
| #ifndef BRW_SCREEN_H | |||
| #define BRW_SCREEN_H | |||
| #include "pipe/p_screen.h" | |||
| #ifdef __cplusplus | |||
| extern "C" { | |||
| #endif | |||
| /** | |||
| * Subclass of pipe_screen | |||
| */ | |||
| struct brw_screen | |||
| { | |||
| struct pipe_screen screen; | |||
| uint pci_id; | |||
| }; | |||
| /** cast wrapper */ | |||
| static INLINE struct brw_screen * | |||
| brw_screen(struct pipe_screen *pscreen) | |||
| { | |||
| return (struct brw_screen *) pscreen; | |||
| } | |||
| extern struct pipe_screen * | |||
| brw_create_screen(struct pipe_winsys *winsys, uint pci_id); | |||
| #ifdef __cplusplus | |||
| } | |||
| #endif | |||
| #endif /* BRW_SCREEN_H */ | |||
| @@ -28,39 +28,18 @@ | |||
| #include "brw_context.h" | |||
| #include "brw_reg.h" | |||
| #include "pipe/p_screen.h" | |||
| static const char *brw_get_vendor( struct pipe_context *pipe ) | |||
| { | |||
| return "Tungsten Graphics, Inc."; | |||
| return pipe->screen->get_vendor(pipe->screen); | |||
| } | |||
| static const char *brw_get_name( struct pipe_context *pipe ) | |||
| { | |||
| static char buffer[128]; | |||
| const char *chipset; | |||
| switch (brw_context(pipe)->pci_id) { | |||
| case PCI_CHIP_I965_Q: | |||
| chipset = "Intel(R) 965Q"; | |||
| break; | |||
| case PCI_CHIP_I965_G: | |||
| case PCI_CHIP_I965_G_1: | |||
| chipset = "Intel(R) 965G"; | |||
| break; | |||
| case PCI_CHIP_I965_GM: | |||
| chipset = "Intel(R) 965GM"; | |||
| break; | |||
| case PCI_CHIP_I965_GME: | |||
| chipset = "Intel(R) 965GME/GLE"; | |||
| break; | |||
| default: | |||
| chipset = "unknown"; | |||
| break; | |||
| } | |||
| sprintf(buffer, "i965 (chipset: %s)", chipset); | |||
| return buffer; | |||
| return pipe->screen->get_name(pipe->screen); | |||
| } | |||
| @@ -71,8 +71,6 @@ static unsigned minify( unsigned d ) | |||
| } | |||
| static boolean brw_miptree_layout(struct pipe_context *, struct brw_texture *); | |||
| static void intel_miptree_set_image_offset(struct brw_texture *tex, | |||
| unsigned level, | |||
| unsigned img, | |||
| @@ -199,7 +197,7 @@ static void i945_miptree_layout_2d(struct brw_texture *tex) | |||
| } | |||
| } | |||
| static boolean brw_miptree_layout(struct pipe_context *pipe, struct brw_texture *tex) | |||
| static boolean brw_miptree_layout(struct brw_texture *tex) | |||
| { | |||
| struct pipe_texture *pt = &tex->base; | |||
| /* XXX: these vary depending on image format: | |||
| @@ -304,17 +302,26 @@ static struct pipe_texture * | |||
| brw_texture_create(struct pipe_context *pipe, | |||
| const struct pipe_texture *templat) | |||
| { | |||
| return pipe->screen->texture_create(pipe->screen, templat); | |||
| } | |||
| static struct pipe_texture * | |||
| brw_texture_create_screen(struct pipe_screen *screen, | |||
| const struct pipe_texture *templat) | |||
| { | |||
| struct pipe_winsys *ws = screen->winsys; | |||
| struct brw_texture *tex = CALLOC_STRUCT(brw_texture); | |||
| if (tex) { | |||
| tex->base = *templat; | |||
| tex->base.refcount = 1; | |||
| if (brw_miptree_layout(pipe, tex)) | |||
| tex->buffer = pipe->winsys->buffer_create(pipe->winsys, 64, | |||
| PIPE_BUFFER_USAGE_PIXEL, | |||
| tex->pitch * tex->base.cpp * | |||
| tex->total_height); | |||
| if (brw_miptree_layout(tex)) | |||
| tex->buffer = ws->buffer_create(ws, 64, | |||
| PIPE_BUFFER_USAGE_PIXEL, | |||
| tex->pitch * tex->base.cpp * | |||
| tex->total_height); | |||
| if (!tex->buffer) { | |||
| FREE(tex); | |||
| @@ -328,6 +335,14 @@ brw_texture_create(struct pipe_context *pipe, | |||
| static void | |||
| brw_texture_release(struct pipe_context *pipe, struct pipe_texture **pt) | |||
| { | |||
| pipe->screen->texture_release(pipe->screen, pt); | |||
| } | |||
| static void | |||
| brw_texture_release_screen(struct pipe_screen *screen, | |||
| struct pipe_texture **pt) | |||
| { | |||
| if (!*pt) | |||
| return; | |||
| @@ -337,6 +352,7 @@ brw_texture_release(struct pipe_context *pipe, struct pipe_texture **pt) | |||
| __FUNCTION__, (void *) *pt, (*pt)->refcount - 1); | |||
| */ | |||
| if (--(*pt)->refcount <= 0) { | |||
| struct pipe_winsys *ws = screen->winsys; | |||
| struct brw_texture *tex = (struct brw_texture *)*pt; | |||
| uint i; | |||
| @@ -344,7 +360,7 @@ brw_texture_release(struct pipe_context *pipe, struct pipe_texture **pt) | |||
| DBG("%s deleting %p\n", __FUNCTION__, (void *) tex); | |||
| */ | |||
| pipe_buffer_reference(pipe->winsys, &tex->buffer, NULL); | |||
| pipe_buffer_reference(ws, &tex->buffer, NULL); | |||
| for (i = 0; i < PIPE_MAX_TEXTURE_LEVELS; i++) | |||
| if (tex->image_offset[i]) | |||
| @@ -371,6 +387,16 @@ brw_get_tex_surface(struct pipe_context *pipe, | |||
| struct pipe_texture *pt, | |||
| unsigned face, unsigned level, unsigned zslice) | |||
| { | |||
| return pipe->screen->get_tex_surface(pipe->screen, pt, face, level, zslice); | |||
| } | |||
| static struct pipe_surface * | |||
| brw_get_tex_surface_screen(struct pipe_screen *screen, | |||
| struct pipe_texture *pt, | |||
| unsigned face, unsigned level, unsigned zslice) | |||
| { | |||
| struct pipe_winsys *ws = screen->winsys; | |||
| struct brw_texture *tex = (struct brw_texture *)pt; | |||
| struct pipe_surface *ps; | |||
| unsigned offset; /* in bytes */ | |||
| @@ -388,11 +414,11 @@ brw_get_tex_surface(struct pipe_context *pipe, | |||
| assert(zslice == 0); | |||
| } | |||
| ps = pipe->winsys->surface_alloc(pipe->winsys); | |||
| ps = ws->surface_alloc(ws); | |||
| if (ps) { | |||
| assert(ps->format); | |||
| assert(ps->refcount); | |||
| pipe_buffer_reference(pipe->winsys, &ps->buffer, tex->buffer); | |||
| pipe_buffer_reference(ws, &ps->buffer, tex->buffer); | |||
| ps->format = pt->format; | |||
| ps->cpp = pt->cpp; | |||
| ps->width = pt->width[level]; | |||
| @@ -412,3 +438,13 @@ brw_init_texture_functions(struct brw_context *brw) | |||
| brw->pipe.texture_update = brw_texture_update; | |||
| brw->pipe.get_tex_surface = brw_get_tex_surface; | |||
| } | |||
| void | |||
| brw_init_screen_texture_funcs(struct pipe_screen *screen) | |||
| { | |||
| screen->texture_create = brw_texture_create_screen; | |||
| screen->texture_release = brw_texture_release_screen; | |||
| screen->get_tex_surface = brw_get_tex_surface_screen; | |||
| } | |||
| @@ -1,12 +1,44 @@ | |||
| /* | |||
| Copyright (C) Intel Corp. 2006. All Rights Reserved. | |||
| Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to | |||
| develop this 3D driver. | |||
| Permission is hereby granted, free of charge, to any person obtaining | |||
| a copy of this software and associated documentation files (the | |||
| "Software"), to deal in the Software without restriction, including | |||
| without limitation the rights to use, copy, modify, merge, publish, | |||
| distribute, sublicense, and/or sell copies of the Software, and to | |||
| permit persons to whom the Software is furnished to do so, subject to | |||
| the following conditions: | |||
| The above copyright notice and this permission notice (including the | |||
| next paragraph) shall be included in all copies or substantial | |||
| portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |||
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |||
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | |||
| IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE | |||
| LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | |||
| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |||
| WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
| **********************************************************************/ | |||
| #ifndef BRW_TEX_LAYOUT_H | |||
| #define BRW_TEX_LAYOUT_H | |||
| struct brw_context; | |||
| struct pipe_screen; | |||
| extern void | |||
| brw_init_texture_functions(struct brw_context *brw); | |||
| extern void | |||
| brw_init_screen_texture_funcs(struct pipe_screen *screen); | |||
| #endif | |||
| @@ -53,6 +53,8 @@ | |||
| struct pipe_buffer; | |||
| struct pipe_fence_handle; | |||
| struct pipe_winsys; | |||
| struct pipe_screen; | |||
| /* The pipe driver currently understands the following chipsets: | |||
| */ | |||
| @@ -181,7 +183,7 @@ struct brw_winsys { | |||
| #define BRW_BUFFER_USAGE_LIT_VERTEX (PIPE_BUFFER_USAGE_CUSTOM << 0) | |||
| struct pipe_context *brw_create(struct pipe_winsys *, | |||
| struct pipe_context *brw_create(struct pipe_screen *, | |||
| struct brw_winsys *, | |||
| unsigned pci_id); | |||
| @@ -40,6 +40,7 @@ | |||
| #include "pipe/p_util.h" | |||
| #include "pipe/p_inlines.h" | |||
| #include "i965simple/brw_winsys.h" | |||
| #include "i965simple/brw_screen.h" | |||
| #include "brw_aub.h" | |||
| #include "xm_winsys_aub.h" | |||
| @@ -565,6 +566,7 @@ struct pipe_context * | |||
| xmesa_create_i965simple( struct pipe_winsys *winsys ) | |||
| { | |||
| struct aub_brw_winsys *iws = CALLOC_STRUCT( aub_brw_winsys ); | |||
| struct pipe_screen *screen = brw_create_screen(winsys, 0/* XXX pci_id */); | |||
| /* Fill in this struct with callbacks that i965simple will need to | |||
| * communicate with the window system, buffer manager, etc. | |||
| @@ -583,7 +585,7 @@ xmesa_create_i965simple( struct pipe_winsys *winsys ) | |||
| /* Create the i965simple context: | |||
| */ | |||
| return brw_create( winsys, | |||
| return brw_create( screen, | |||
| &iws->winsys, | |||
| 0 ); | |||
| } | |||