Commit e16e7061 authored by Jose Fonseca's avatar Jose Fonseca
Browse files

svga: Fix NULL dereference.

Probably introduced with the surface view move from screen to context.
parent 7ea729a1
......@@ -55,7 +55,8 @@ svga_get_tex_sampler_view(struct pipe_context *pipe,
struct pipe_resource *pt,
unsigned min_lod, unsigned max_lod)
{
struct svga_screen *ss = svga_screen(pt->screen);
struct svga_context *svga = svga_context(pipe);
struct svga_screen *ss = svga_screen(pipe->screen);
struct svga_texture *tex = svga_texture(pt);
struct svga_sampler_view *sv = NULL;
SVGA3dSurfaceFlags flags = SVGA3D_SURFACE_HINT_TEXTURE;
......@@ -138,7 +139,7 @@ svga_get_tex_sampler_view(struct pipe_context *pipe,
pt->last_level);
sv->age = tex->age;
sv->handle = svga_texture_view_surface(pipe, tex, flags, format,
sv->handle = svga_texture_view_surface(svga, tex, flags, format,
min_lod,
max_lod - min_lod + 1,
-1, -1,
......
......@@ -100,7 +100,7 @@ svga_texture_copy_handle(struct svga_context *svga,
struct svga_winsys_surface *
svga_texture_view_surface(struct pipe_context *pipe,
svga_texture_view_surface(struct svga_context *svga,
struct svga_texture *tex,
SVGA3dSurfaceFlags flags,
SVGA3dSurfaceFormat format,
......@@ -110,7 +110,7 @@ svga_texture_view_surface(struct pipe_context *pipe,
int zslice_pick,
struct svga_host_surface_cache_key *key) /* OUT */
{
struct svga_screen *ss = svga_screen(pipe->screen);
struct svga_screen *ss = svga_screen(svga->pipe.screen);
struct svga_winsys_surface *handle;
uint32_t i, j;
unsigned z_offset = 0;
......@@ -162,7 +162,7 @@ svga_texture_view_surface(struct pipe_context *pipe,
u_minify(tex->b.b.depth0, i + start_mip) :
1);
svga_texture_copy_handle(svga_context(pipe),
svga_texture_copy_handle(svga,
tex->handle,
0, 0, z_offset,
i + start_mip,
......@@ -184,6 +184,7 @@ svga_create_surface(struct pipe_context *pipe,
struct pipe_resource *pt,
const struct pipe_surface *surf_tmpl)
{
struct svga_context *svga = svga_context(pipe);
struct svga_texture *tex = svga_texture(pt);
struct pipe_screen *screen = pipe->screen;
struct svga_surface *s;
......@@ -259,7 +260,7 @@ svga_create_surface(struct pipe_context *pipe,
SVGA_DBG(DEBUG_VIEWS, "svga: Surface view: yes %p, level %u face %u z %u, %p\n",
pt, surf_tmpl->u.tex.level, face, zslice, s);
s->handle = svga_texture_view_surface(NULL, tex, flags, format,
s->handle = svga_texture_view_surface(svga, tex, flags, format,
surf_tmpl->u.tex.level,
1, face, zslice, &s->key);
s->real_face = 0;
......
......@@ -62,7 +62,7 @@ extern boolean
svga_surface_needs_propagation(struct pipe_surface *surf);
struct svga_winsys_surface *
svga_texture_view_surface(struct pipe_context *pipe,
svga_texture_view_surface(struct svga_context *svga,
struct svga_texture *tex,
SVGA3dSurfaceFlags flags,
SVGA3dSurfaceFormat format,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment