OSDN Git Service

i915g: Put the templates at the beggining of the structures.
authorStéphane Marchesin <marcheu@chromium.org>
Thu, 15 Dec 2011 18:59:26 +0000 (10:59 -0800)
committerStéphane Marchesin <marcheu@chromium.org>
Tue, 20 Dec 2011 02:24:39 +0000 (18:24 -0800)
Seriously. This fixes fragment-and-vertex-texturing in piglit and probably
a boatload of other stuff.

src/gallium/drivers/i915/i915_context.h
src/gallium/drivers/i915/i915_state.c

index 7406b7e..bb1b3b1 100644 (file)
@@ -188,6 +188,8 @@ struct i915_depth_stencil_state {
 };
 
 struct i915_rasterizer_state {
+   struct pipe_rasterizer_state templ;
+
    unsigned light_twoside : 1;
    unsigned st;
    enum interp_mode color_interp;
@@ -196,14 +198,12 @@ struct i915_rasterizer_state {
    unsigned LIS7;
    unsigned sc[1];
 
-   struct pipe_rasterizer_state templ;
-
    union { float f; unsigned u; } ds[2];
 };
 
 struct i915_sampler_state {
+   const struct pipe_sampler_state templ;
    unsigned state[3];
-   const struct pipe_sampler_state *templ;
    unsigned minlod;
    unsigned maxlod;
 };
index bb4089e..fc0c868 100644 (file)
@@ -223,12 +223,12 @@ i915_create_sampler_state(struct pipe_context *pipe,
    unsigned minFilt, magFilt;
    unsigned mipFilt;
 
-   cso->templ = sampler;
+   memcpy(&cso->templ, sampler, sizeof(struct pipe_sampler_state));
 
    mipFilt = translate_mip_filter(sampler->min_mip_filter);
    minFilt = translate_img_filter( sampler->min_img_filter );
    magFilt = translate_img_filter( sampler->mag_img_filter );
-   
+
    if (sampler->max_anisotropy > 1)
       minFilt = magFilt = FILTER_ANISOTROPIC;