summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2020-10-05 02:45:03 -0400
committerMarge Bot <eric+marge@anholt.net>2020-12-01 11:52:11 +0000
commit9a8b54285d24e84facc6f7aefe486a568b6e80c4 (patch)
tree9831010ffe437eb9cb8d18fffc3deb58fe14c607 /src/mesa/drivers/dri
parent7fa9d9d06c44e9cf3d39b2ce5126bf1b0abff586 (diff)
mesa: reorganize gl_texture and sampler structures for glPush/PopAttrib
Put the fields saved by glPush/PopAttrib into the sub-structure declared as Attrib. This will make glPush/PopAttrib much faster because it will only save and restore that structure. Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6946>
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r--src/mesa/drivers/dri/i915/i830_texstate.c28
-rw-r--r--src/mesa/drivers/dri/i915/i915_texstate.c42
-rw-r--r--src/mesa/drivers/dri/i915/intel_screen.c2
-rw-r--r--src/mesa/drivers/dri/i915/intel_tex_image.c10
-rw-r--r--src/mesa/drivers/dri/i915/intel_tex_validate.c18
-rw-r--r--src/mesa/drivers/dri/i965/brw_draw.c8
-rw-r--r--src/mesa/drivers/dri/i965/brw_generate_mipmap.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm.c16
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c26
-rw-r--r--src/mesa/drivers/dri/i965/genX_state_upload.c79
-rw-r--r--src/mesa/drivers/dri/i965/intel_screen.c2
-rw-r--r--src/mesa/drivers/dri/i965/intel_tex_image.c6
-rw-r--r--src/mesa/drivers/dri/i965/intel_tex_validate.c10
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_texture.c28
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_context.c2
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_frag.c2
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_tex.c24
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_frag.c2
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_tex.c24
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_tex.c36
-rw-r--r--src/mesa/drivers/dri/r200/r200_tex.c20
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c30
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_tex.c20
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_texstate.c2
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_texture.c10
25 files changed, 226 insertions, 225 deletions
diff --git a/src/mesa/drivers/dri/i915/i830_texstate.c b/src/mesa/drivers/dri/i915/i830_texstate.c
index d8f1026b818..e4b95cb1b16 100644
--- a/src/mesa/drivers/dri/i915/i830_texstate.c
+++ b/src/mesa/drivers/dri/i915/i830_texstate.c
@@ -141,9 +141,9 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
/* Get first image here, since intelObj->firstLevel will get set in
* the intel_finalize_mipmap_tree() call above.
*/
- firstImage = tObj->Image[0][tObj->BaseLevel];
+ firstImage = tObj->Image[0][tObj->Attrib.BaseLevel];
- intel_miptree_get_image_offset(intelObj->mt, tObj->BaseLevel, 0,
+ intel_miptree_get_image_offset(intelObj->mt, tObj->Attrib.BaseLevel, 0,
&dst_x, &dst_y);
drm_intel_bo_reference(intelObj->mt->region->bo);
@@ -193,7 +193,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
float maxlod;
uint32_t minlod_fixed, maxlod_fixed;
- switch (sampler->MinFilter) {
+ switch (sampler->Attrib.MinFilter) {
case GL_NEAREST:
minFilt = FILTER_NEAREST;
mipFilt = MIPFILTER_NONE;
@@ -222,14 +222,14 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
return false;
}
- if (sampler->MaxAnisotropy > 1.0) {
+ if (sampler->Attrib.MaxAnisotropy > 1.0) {
minFilt = FILTER_ANISOTROPIC;
magFilt = FILTER_ANISOTROPIC;
/* no trilinear + anisotropic */
mipFilt = MIPFILTER_NEAREST;
}
else {
- switch (sampler->MagFilter) {
+ switch (sampler->Attrib.MagFilter) {
case GL_NEAREST:
magFilt = FILTER_NEAREST;
break;
@@ -241,7 +241,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
}
- lodbias = (int) ((tUnit->LodBias + sampler->LodBias) * 16.0);
+ lodbias = (int) ((tUnit->LodBias + sampler->Attrib.LodBias) * 16.0);
if (lodbias < -64)
lodbias = -64;
if (lodbias > 63)
@@ -261,8 +261,8 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
* addressable (smallest resolution) LOD. Use it to cover both
* MAX_LEVEL and MAX_LOD.
*/
- minlod_fixed = U_FIXED(CLAMP(sampler->MinLod, 0.0, 11), 4);
- maxlod = MIN2(sampler->MaxLod, tObj->_MaxLevel - tObj->BaseLevel);
+ minlod_fixed = U_FIXED(CLAMP(sampler->Attrib.MinLod, 0.0, 11), 4);
+ maxlod = MIN2(sampler->Attrib.MaxLod, tObj->_MaxLevel - tObj->Attrib.BaseLevel);
if (intel->intelScreen->deviceID == PCI_CHIP_I855_GM ||
intel->intelScreen->deviceID == PCI_CHIP_I865_G) {
maxlod_fixed = U_FIXED(CLAMP(maxlod, 0.0, 11.75), 2);
@@ -281,8 +281,8 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
{
- GLenum ws = sampler->WrapS;
- GLenum wt = sampler->WrapT;
+ GLenum ws = sampler->Attrib.WrapS;
+ GLenum wt = sampler->Attrib.WrapT;
/* 3D textures not available on i830
@@ -302,10 +302,10 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
/* convert border color from float to ubyte */
- CLAMPED_FLOAT_TO_UBYTE(border[0], sampler->BorderColor.f[0]);
- CLAMPED_FLOAT_TO_UBYTE(border[1], sampler->BorderColor.f[1]);
- CLAMPED_FLOAT_TO_UBYTE(border[2], sampler->BorderColor.f[2]);
- CLAMPED_FLOAT_TO_UBYTE(border[3], sampler->BorderColor.f[3]);
+ CLAMPED_FLOAT_TO_UBYTE(border[0], sampler->Attrib.BorderColor.f[0]);
+ CLAMPED_FLOAT_TO_UBYTE(border[1], sampler->Attrib.BorderColor.f[1]);
+ CLAMPED_FLOAT_TO_UBYTE(border[2], sampler->Attrib.BorderColor.f[2]);
+ CLAMPED_FLOAT_TO_UBYTE(border[3], sampler->Attrib.BorderColor.f[3]);
state[I830_TEXREG_TM0S4] = PACK_COLOR_8888(border[3],
border[0],
diff --git a/src/mesa/drivers/dri/i915/i915_texstate.c b/src/mesa/drivers/dri/i915/i915_texstate.c
index 6b4f6ed38e2..2f6a6536a93 100644
--- a/src/mesa/drivers/dri/i915/i915_texstate.c
+++ b/src/mesa/drivers/dri/i915/i915_texstate.c
@@ -166,14 +166,14 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
/* Get first image here, since intelObj->firstLevel will get set in
* the intel_finalize_mipmap_tree() call above.
*/
- firstImage = tObj->Image[0][tObj->BaseLevel];
+ firstImage = tObj->Image[0][tObj->Attrib.BaseLevel];
drm_intel_bo_reference(intelObj->mt->region->bo);
i915->state.tex_buffer[unit] = intelObj->mt->region->bo;
i915->state.tex_offset[unit] = intelObj->mt->offset;
format = translate_texture_format(firstImage->TexFormat,
- tObj->DepthMode);
+ tObj->Attrib.DepthMode);
state[I915_TEXREG_MS3] =
(((firstImage->Height - 1) << MS3_HEIGHT_SHIFT) |
@@ -189,7 +189,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
* (lowest resolution) LOD. Use it to cover both MAX_LEVEL and
* MAX_LOD.
*/
- maxlod = MIN2(sampler->MaxLod, tObj->_MaxLevel - tObj->BaseLevel);
+ maxlod = MIN2(sampler->Attrib.MaxLod, tObj->_MaxLevel - tObj->Attrib.BaseLevel);
state[I915_TEXREG_MS4] =
((((intelObj->mt->region->pitch / 4) - 1) << MS4_PITCH_SHIFT) |
MS4_CUBE_FACE_ENA_MASK |
@@ -200,7 +200,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
{
GLuint minFilt, mipFilt, magFilt;
- switch (sampler->MinFilter) {
+ switch (sampler->Attrib.MinFilter) {
case GL_NEAREST:
minFilt = FILTER_NEAREST;
mipFilt = MIPFILTER_NONE;
@@ -229,16 +229,16 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
return false;
}
- if (sampler->MaxAnisotropy > 1.0) {
+ if (sampler->Attrib.MaxAnisotropy > 1.0) {
minFilt = FILTER_ANISOTROPIC;
magFilt = FILTER_ANISOTROPIC;
- if (sampler->MaxAnisotropy > 2.0)
+ if (sampler->Attrib.MaxAnisotropy > 2.0)
aniso = SS2_MAX_ANISO_4;
else
aniso = SS2_MAX_ANISO_2;
}
else {
- switch (sampler->MagFilter) {
+ switch (sampler->Attrib.MagFilter) {
case GL_NEAREST:
magFilt = FILTER_NEAREST;
break;
@@ -250,7 +250,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
}
- lodbias = (int) ((tUnit->LodBias + sampler->LodBias) * 16.0);
+ lodbias = (int) ((tUnit->LodBias + sampler->Attrib.LodBias) * 16.0);
if (lodbias < -256)
lodbias = -256;
if (lodbias > 255)
@@ -266,14 +266,14 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
/* Shadow:
*/
- if (sampler->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB &&
+ if (sampler->Attrib.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB &&
tObj->Target != GL_TEXTURE_3D) {
if (tObj->Target == GL_TEXTURE_1D)
return false;
state[I915_TEXREG_SS2] |=
(SS2_SHADOW_ENABLE |
- intel_translate_shadow_compare_func(sampler->CompareFunc));
+ intel_translate_shadow_compare_func(sampler->Attrib.CompareFunc));
minFilt = FILTER_4X4_FLAT;
magFilt = FILTER_4X4_FLAT;
@@ -286,9 +286,9 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
{
- GLenum ws = sampler->WrapS;
- GLenum wt = sampler->WrapT;
- GLenum wr = sampler->WrapR;
+ GLenum ws = sampler->Attrib.WrapS;
+ GLenum wt = sampler->Attrib.WrapT;
+ GLenum wr = sampler->Attrib.WrapR;
float minlod;
/* We program 1D textures as 2D textures, so the 2D texcoord could
@@ -306,8 +306,8 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
* clamp_to_border.
*/
if (tObj->Target == GL_TEXTURE_3D &&
- (sampler->MinFilter != GL_NEAREST ||
- sampler->MagFilter != GL_NEAREST) &&
+ (sampler->Attrib.MinFilter != GL_NEAREST ||
+ sampler->Attrib.MagFilter != GL_NEAREST) &&
(ws == GL_CLAMP ||
wt == GL_CLAMP ||
wr == GL_CLAMP ||
@@ -352,24 +352,24 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
(translate_wrap_mode(wt) << SS3_TCY_ADDR_MODE_SHIFT) |
(translate_wrap_mode(wr) << SS3_TCZ_ADDR_MODE_SHIFT));
- minlod = MIN2(sampler->MinLod, tObj->_MaxLevel - tObj->BaseLevel);
+ minlod = MIN2(sampler->Attrib.MinLod, tObj->_MaxLevel - tObj->Attrib.BaseLevel);
state[I915_TEXREG_SS3] |= (unit << SS3_TEXTUREMAP_INDEX_SHIFT);
state[I915_TEXREG_SS3] |= (U_FIXED(CLAMP(minlod, 0.0, 11.0), 4) <<
SS3_MIN_LOD_SHIFT);
}
- if (sampler->sRGBDecode == GL_DECODE_EXT &&
+ if (sampler->Attrib.sRGBDecode == GL_DECODE_EXT &&
(_mesa_get_srgb_format_linear(firstImage->TexFormat) !=
firstImage->TexFormat)) {
state[I915_TEXREG_SS2] |= SS2_REVERSE_GAMMA_ENABLE;
}
/* convert border color from float to ubyte */
- CLAMPED_FLOAT_TO_UBYTE(border[0], sampler->BorderColor.f[0]);
- CLAMPED_FLOAT_TO_UBYTE(border[1], sampler->BorderColor.f[1]);
- CLAMPED_FLOAT_TO_UBYTE(border[2], sampler->BorderColor.f[2]);
- CLAMPED_FLOAT_TO_UBYTE(border[3], sampler->BorderColor.f[3]);
+ CLAMPED_FLOAT_TO_UBYTE(border[0], sampler->Attrib.BorderColor.f[0]);
+ CLAMPED_FLOAT_TO_UBYTE(border[1], sampler->Attrib.BorderColor.f[1]);
+ CLAMPED_FLOAT_TO_UBYTE(border[2], sampler->Attrib.BorderColor.f[2]);
+ CLAMPED_FLOAT_TO_UBYTE(border[3], sampler->Attrib.BorderColor.f[3]);
if (firstImage->_BaseFormat == GL_DEPTH_COMPONENT) {
/* GL specs that border color for depth textures is taken from the
diff --git a/src/mesa/drivers/dri/i915/intel_screen.c b/src/mesa/drivers/dri/i915/intel_screen.c
index 296f24eadd0..60b35d37a6e 100644
--- a/src/mesa/drivers/dri/i915/intel_screen.c
+++ b/src/mesa/drivers/dri/i915/intel_screen.c
@@ -392,7 +392,7 @@ intel_create_image_from_texture(__DRIcontext *context, int target,
return NULL;
}
- if (level < obj->BaseLevel || level > obj->_MaxLevel) {
+ if (level < obj->Attrib.BaseLevel || level > obj->_MaxLevel) {
*error = __DRI_IMAGE_ERROR_BAD_MATCH;
return NULL;
}
diff --git a/src/mesa/drivers/dri/i915/intel_tex_image.c b/src/mesa/drivers/dri/i915/intel_tex_image.c
index 1d037ab3554..7880ba4f3f6 100644
--- a/src/mesa/drivers/dri/i915/intel_tex_image.c
+++ b/src/mesa/drivers/dri/i915/intel_tex_image.c
@@ -44,7 +44,7 @@ intel_miptree_create_for_teximage(struct intel_context *intel,
DBG("%s\n", __func__);
- if (intelImage->base.Base.Level > intelObj->base.BaseLevel &&
+ if (intelImage->base.Base.Level > intelObj->base.Attrib.BaseLevel &&
(width == 1 ||
(intelObj->base.Target != GL_TEXTURE_1D && height == 1) ||
(intelObj->base.Target == GL_TEXTURE_3D && depth == 1))) {
@@ -59,10 +59,10 @@ intel_miptree_create_for_teximage(struct intel_context *intel,
/* If this image disrespects BaseLevel, allocate from level zero.
* Usually BaseLevel == 0, so it's unlikely to happen.
*/
- if (intelImage->base.Base.Level < intelObj->base.BaseLevel)
+ if (intelImage->base.Base.Level < intelObj->base.Attrib.BaseLevel)
firstLevel = 0;
else
- firstLevel = intelObj->base.BaseLevel;
+ firstLevel = intelObj->base.Attrib.BaseLevel;
/* Figure out image dimensions at start level. */
for (i = intelImage->base.Base.Level; i > firstLevel; i--) {
@@ -78,8 +78,8 @@ intel_miptree_create_for_teximage(struct intel_context *intel,
* resizable buffers, or require that buffers implement lazy
* pagetable arrangements.
*/
- if ((intelObj->base.Sampler.MinFilter == GL_NEAREST ||
- intelObj->base.Sampler.MinFilter == GL_LINEAR) &&
+ if ((intelObj->base.Sampler.Attrib.MinFilter == GL_NEAREST ||
+ intelObj->base.Sampler.Attrib.MinFilter == GL_LINEAR) &&
intelImage->base.Base.Level == firstLevel) {
lastLevel = firstLevel;
} else {
diff --git a/src/mesa/drivers/dri/i915/intel_tex_validate.c b/src/mesa/drivers/dri/i915/intel_tex_validate.c
index c2111e5e209..17db3d2e477 100644
--- a/src/mesa/drivers/dri/i915/intel_tex_validate.c
+++ b/src/mesa/drivers/dri/i915/intel_tex_validate.c
@@ -24,9 +24,9 @@ intel_update_max_level(struct intel_texture_object *intelObj,
struct gl_texture_object *tObj = &intelObj->base;
int maxlevel;
- if (sampler->MinFilter == GL_NEAREST ||
- sampler->MinFilter == GL_LINEAR) {
- maxlevel = tObj->BaseLevel;
+ if (sampler->Attrib.MinFilter == GL_NEAREST ||
+ sampler->Attrib.MinFilter == GL_LINEAR) {
+ maxlevel = tObj->Attrib.BaseLevel;
} else {
maxlevel = tObj->_MaxLevel;
}
@@ -62,13 +62,13 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
/* What levels must the tree include at a minimum?
*/
intel_update_max_level(intelObj, sampler);
- if (intelObj->mt && intelObj->mt->first_level != tObj->BaseLevel)
+ if (intelObj->mt && intelObj->mt->first_level != tObj->Attrib.BaseLevel)
intelObj->needs_validate = true;
if (!intelObj->needs_validate)
return true;
- firstImage = intel_texture_image(tObj->Image[0][tObj->BaseLevel]);
+ firstImage = intel_texture_image(tObj->Image[0][tObj->Attrib.BaseLevel]);
/* Check tree can hold all active levels. Check tree matches
* target, imageFormat, etc.
@@ -80,7 +80,7 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
*/
if (intelObj->mt &&
(!intel_miptree_match_image(intelObj->mt, &firstImage->base.Base) ||
- intelObj->mt->first_level != tObj->BaseLevel ||
+ intelObj->mt->first_level != tObj->Attrib.BaseLevel ||
intelObj->mt->last_level < intelObj->_MaxLevel)) {
intel_miptree_release(&intelObj->mt);
}
@@ -95,12 +95,12 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
perf_debug("Creating new %s %dx%dx%d %d..%d miptree to handle finalized "
"texture miptree.\n",
_mesa_get_format_name(firstImage->base.Base.TexFormat),
- width, height, depth, tObj->BaseLevel, intelObj->_MaxLevel);
+ width, height, depth, tObj->Attrib.BaseLevel, intelObj->_MaxLevel);
intelObj->mt = intel_miptree_create(intel,
intelObj->base.Target,
firstImage->base.Base.TexFormat,
- tObj->BaseLevel,
+ tObj->Attrib.BaseLevel,
intelObj->_MaxLevel,
width,
height,
@@ -115,7 +115,7 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
*/
nr_faces = _mesa_num_tex_faces(intelObj->base.Target);
for (face = 0; face < nr_faces; face++) {
- for (i = tObj->BaseLevel; i <= intelObj->_MaxLevel; i++) {
+ for (i = tObj->Attrib.BaseLevel; i <= intelObj->_MaxLevel; i++) {
struct intel_texture_image *intelImage =
intel_texture_image(intelObj->base.Image[face][i]);
/* skip too small size mipmap */
diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c
index f1d233aeae7..c82a7385f2f 100644
--- a/src/mesa/drivers/dri/i965/brw_draw.c
+++ b/src/mesa/drivers/dri/i965/brw_draw.c
@@ -543,7 +543,7 @@ brw_predraw_resolve_inputs(struct brw_context *brw, bool rendering,
struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, i);
enum isl_format view_format =
- translate_tex_format(brw, tex_obj->_Format, sampler->sRGBDecode);
+ translate_tex_format(brw, tex_obj->_Format, sampler->Attrib.sRGBDecode);
unsigned min_level, min_layer, num_levels, num_layers;
if (tex_obj->base.Immutable) {
@@ -553,8 +553,8 @@ brw_predraw_resolve_inputs(struct brw_context *brw, bool rendering,
num_layers = tex_obj->base.Target != GL_TEXTURE_3D ?
tex_obj->base.NumLayers : INTEL_REMAINING_LAYERS;
} else {
- min_level = tex_obj->base.BaseLevel;
- num_levels = tex_obj->_MaxLevel - tex_obj->base.BaseLevel + 1;
+ min_level = tex_obj->base.Attrib.BaseLevel;
+ num_levels = tex_obj->_MaxLevel - tex_obj->base.Attrib.BaseLevel + 1;
min_layer = 0;
num_layers = INTEL_REMAINING_LAYERS;
}
@@ -586,7 +586,7 @@ brw_predraw_resolve_inputs(struct brw_context *brw, bool rendering,
brw_cache_flush_for_read(brw, tex_obj->mt->bo);
- if (tex_obj->base.StencilSampling ||
+ if (tex_obj->base.Attrib.StencilSampling ||
tex_obj->mt->format == MESA_FORMAT_S_UINT8) {
intel_update_r8stencil(brw, tex_obj->mt);
}
diff --git a/src/mesa/drivers/dri/i965/brw_generate_mipmap.c b/src/mesa/drivers/dri/i965/brw_generate_mipmap.c
index 4125ae6e11c..f65c07d219e 100644
--- a/src/mesa/drivers/dri/i965/brw_generate_mipmap.c
+++ b/src/mesa/drivers/dri/i965/brw_generate_mipmap.c
@@ -41,7 +41,7 @@ brw_generate_mipmap(struct gl_context *ctx, GLenum target,
struct brw_context *brw = brw_context(ctx);
struct gen_device_info *devinfo = &brw->screen->devinfo;
struct intel_texture_object *intel_obj = intel_texture_object(tex_obj);
- const unsigned base_level = tex_obj->BaseLevel;
+ const unsigned base_level = tex_obj->Attrib.BaseLevel;
unsigned last_level, first_layer, last_layer;
/* Blorp doesn't handle combined depth/stencil surfaces on Gen4-5 yet. */
@@ -120,7 +120,7 @@ brw_generate_mipmap(struct gl_context *ctx, GLenum target,
* encode and decode steps, sRGB mipmap generation should match
* the mipmap generation for a non-sRGB texture."
*/
- bool do_srgb = tex_obj->Sampler.sRGBDecode == GL_DECODE_EXT;
+ bool do_srgb = tex_obj->Sampler.Attrib.sRGBDecode == GL_DECODE_EXT;
for (unsigned dst_level = base_level + 1;
dst_level <= last_level;
diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c
index e0ce6100f09..a013aa127ee 100644
--- a/src/mesa/drivers/dri/i965/brw_wm.c
+++ b/src/mesa/drivers/dri/i965/brw_wm.c
@@ -206,10 +206,10 @@ brw_populate_sampler_prog_key_data(struct gl_context *ctx,
if (unit->_Current && unit->_Current->Target != GL_TEXTURE_BUFFER) {
const struct gl_texture_object *t = unit->_Current;
- const struct gl_texture_image *img = t->Image[0][t->BaseLevel];
+ const struct gl_texture_image *img = t->Image[0][t->Attrib.BaseLevel];
struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit_id);
- const bool alpha_depth = t->DepthMode == GL_ALPHA &&
+ const bool alpha_depth = t->Attrib.DepthMode == GL_ALPHA &&
(img->_BaseFormat == GL_DEPTH_COMPONENT ||
img->_BaseFormat == GL_DEPTH_STENCIL);
@@ -220,13 +220,13 @@ brw_populate_sampler_prog_key_data(struct gl_context *ctx,
key->swizzles[s] = brw_get_texture_swizzle(ctx, t);
if (devinfo->gen < 8 &&
- sampler->MinFilter != GL_NEAREST &&
- sampler->MagFilter != GL_NEAREST) {
- if (sampler->WrapS == GL_CLAMP)
+ sampler->Attrib.MinFilter != GL_NEAREST &&
+ sampler->Attrib.MagFilter != GL_NEAREST) {
+ if (sampler->Attrib.WrapS == GL_CLAMP)
key->gl_clamp_mask[0] |= 1 << s;
- if (sampler->WrapT == GL_CLAMP)
+ if (sampler->Attrib.WrapT == GL_CLAMP)
key->gl_clamp_mask[1] |= 1 << s;
- if (sampler->WrapR == GL_CLAMP)
+ if (sampler->Attrib.WrapR == GL_CLAMP)
key->gl_clamp_mask[2] |= 1 << s;
}
@@ -245,7 +245,7 @@ brw_populate_sampler_prog_key_data(struct gl_context *ctx,
* leaving normal texture swizzling to SCS.
*/
unsigned src_swizzle =
- devinfo->is_haswell ? t->_Swizzle : key->swizzles[s];
+ devinfo->is_haswell ? t->Attrib._Swizzle : key->swizzles[s];
for (int i = 0; i < 4; i++) {
unsigned src_comp = GET_SWZ(src_swizzle, i);
if (src_comp == SWIZZLE_ONE || src_comp == SWIZZLE_W) {
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index a5fbd1829d9..a448571585b 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -324,7 +324,7 @@ int
brw_get_texture_swizzle(const struct gl_context *ctx,
const struct gl_texture_object *t)
{
- const struct gl_texture_image *img = t->Image[0][t->BaseLevel];
+ const struct gl_texture_image *img = t->Image[0][t->Attrib.BaseLevel];
int swizzles[SWIZZLE_NIL + 1] = {
SWIZZLE_X,
@@ -338,7 +338,7 @@ brw_get_texture_swizzle(const struct gl_context *ctx,
if (img->_BaseFormat == GL_DEPTH_COMPONENT ||
img->_BaseFormat == GL_DEPTH_STENCIL) {
- GLenum depth_mode = t->DepthMode;
+ GLenum depth_mode = t->Attrib.DepthMode;
/* In ES 3.0, DEPTH_TEXTURE_MODE is expected to be GL_RED for textures
* with depth component data specified with a sized internal format.
@@ -434,10 +434,10 @@ brw_get_texture_swizzle(const struct gl_context *ctx,
break;
}
- return MAKE_SWIZZLE4(swizzles[GET_SWZ(t->_Swizzle, 0)],
- swizzles[GET_SWZ(t->_Swizzle, 1)],
- swizzles[GET_SWZ(t->_Swizzle, 2)],
- swizzles[GET_SWZ(t->_Swizzle, 3)]);
+ return MAKE_SWIZZLE4(swizzles[GET_SWZ(t->Attrib._Swizzle, 0)],
+ swizzles[GET_SWZ(t->Attrib._Swizzle, 1)],
+ swizzles[GET_SWZ(t->Attrib._Swizzle, 2)],
+ swizzles[GET_SWZ(t->Attrib._Swizzle, 3)]);
}
/**
@@ -502,8 +502,8 @@ static void brw_update_texture_surface(struct gl_context *ctx,
* texturing functions that return a float, as our code generation always
* selects the .x channel (which would always be 0).
*/
- struct gl_texture_image *firstImage = obj->Image[0][obj->BaseLevel];
- const bool alpha_depth = obj->DepthMode == GL_ALPHA &&
+ struct gl_texture_image *firstImage = obj->Image[0][obj->Attrib.BaseLevel];
+ const bool alpha_depth = obj->Attrib.DepthMode == GL_ALPHA &&
(firstImage->_BaseFormat == GL_DEPTH_COMPONENT ||
firstImage->_BaseFormat == GL_DEPTH_STENCIL);
const unsigned swizzle = (unlikely(alpha_depth) ? SWIZZLE_XYZW :
@@ -526,7 +526,7 @@ static void brw_update_texture_surface(struct gl_context *ctx,
}
enum isl_format format = translate_tex_format(brw, mesa_fmt,
for_txf ? GL_DECODE_EXT :
- sampler->sRGBDecode);
+ sampler->Attrib.sRGBDecode);
/* Implement gen6 and gen7 gather work-around */
bool need_green_to_blue = false;
@@ -566,7 +566,7 @@ static void brw_update_texture_surface(struct gl_context *ctx,
}
}
- if (obj->StencilSampling && firstImage->_BaseFormat == GL_DEPTH_STENCIL) {
+ if (obj->Attrib.StencilSampling && firstImage->_BaseFormat == GL_DEPTH_STENCIL) {
if (devinfo->gen <= 7) {
assert(mt->shadow_mt && !mt->stencil_mt->shadow_needs_update);
mt = mt->shadow_mt;
@@ -587,8 +587,8 @@ static void brw_update_texture_surface(struct gl_context *ctx,
struct isl_view view = {
.format = format,
- .base_level = obj->MinLevel + obj->BaseLevel,
- .levels = intel_obj->_MaxLevel - obj->BaseLevel + 1,
+ .base_level = obj->MinLevel + obj->Attrib.BaseLevel,
+ .levels = intel_obj->_MaxLevel - obj->Attrib.BaseLevel + 1,
.base_array_layer = obj->MinLayer,
.array_len = view_num_layers,
.swizzle = {
@@ -1151,7 +1151,7 @@ is_depth_texture(struct intel_texture_object *iobj)
{
GLenum base_format = _mesa_get_format_base_format(iobj->_Format);
return base_format == GL_DEPTH_COMPONENT ||
- (base_format == GL_DEPTH_STENCIL && !iobj->base.StencilSampling);
+ (base_format == GL_DEPTH_STENCIL && !iobj->base.Attrib.StencilSampling);
}
static void
diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c
index 244746b53fe..d46eb3a49e8 100644
--- a/src/mesa/drivers/dri/i965/genX_state_upload.c
+++ b/src/mesa/drivers/dri/i965/genX_state_upload.c
@@ -23,6 +23,8 @@
#include <assert.h>
+#include "main/samplerobj.h"
+
#include "dev/gen_device_info.h"
#include "common/gen_sample_positions.h"
#include "genxml/gen_macros.h"
@@ -52,7 +54,6 @@
#include "main/fbobject.h"
#include "main/framebuffer.h"
#include "main/glformats.h"
-#include "main/samplerobj.h"
#include "main/shaderapi.h"
#include "main/stencil.h"
#include "main/transformfeedback.h"
@@ -4965,40 +4966,40 @@ genX(upload_default_color)(struct brw_context *brw,
* R channel, while the hardware uses A. Spam R into all the
* channels for safety.
*/
- color.ui[0] = sampler->BorderColor.ui[0];
- color.ui[1] = sampler->BorderColor.ui[0];
- color.ui[2] = sampler->BorderColor.ui[0];
- color.ui[3] = sampler->BorderColor.ui[0];
+ color.ui[0] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[1] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[2] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[3] = sampler->Attrib.BorderColor.ui[0];
break;
case GL_ALPHA:
color.ui[0] = 0u;
color.ui[1] = 0u;
color.ui[2] = 0u;
- color.ui[3] = sampler->BorderColor.ui[3];
+ color.ui[3] = sampler->Attrib.BorderColor.ui[3];
break;
case GL_INTENSITY:
- color.ui[0] = sampler->BorderColor.ui[0];
- color.ui[1] = sampler->BorderColor.ui[0];
- color.ui[2] = sampler->BorderColor.ui[0];
- color.ui[3] = sampler->BorderColor.ui[0];
+ color.ui[0] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[1] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[2] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[3] = sampler->Attrib.BorderColor.ui[0];
break;
case GL_LUMINANCE:
- color.ui[0] = sampler->BorderColor.ui[0];
- color.ui[1] = sampler->BorderColor.ui[0];
- color.ui[2] = sampler->BorderColor.ui[0];
+ color.ui[0] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[1] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[2] = sampler->Attrib.BorderColor.ui[0];
color.ui[3] = float_as_int(1.0);
break;
case GL_LUMINANCE_ALPHA:
- color.ui[0] = sampler->BorderColor.ui[0];
- color.ui[1] = sampler->BorderColor.ui[0];
- color.ui[2] = sampler->BorderColor.ui[0];
- color.ui[3] = sampler->BorderColor.ui[3];
+ color.ui[0] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[1] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[2] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[3] = sampler->Attrib.BorderColor.ui[3];
break;
default:
- color.ui[0] = sampler->BorderColor.ui[0];
- color.ui[1] = sampler->BorderColor.ui[1];
- color.ui[2] = sampler->BorderColor.ui[2];
- color.ui[3] = sampler->BorderColor.ui[3];
+ color.ui[0] = sampler->Attrib.BorderColor.ui[0];
+ color.ui[1] = sampler->Attrib.BorderColor.ui[1];
+ color.ui[2] = sampler->Attrib.BorderColor.ui[2];
+ color.ui[3] = sampler->Attrib.BorderColor.ui[3];
break;
}
@@ -5199,7 +5200,7 @@ genX(update_sampler_state)(struct brw_context *brw,
struct GENX(SAMPLER_STATE) samp_st = { 0 };
/* Select min and mip filters. */
- switch (sampler->MinFilter) {
+ switch (sampler->Attrib.MinFilter) {
case GL_NEAREST:
samp_st.MinModeFilter = MAPFILTER_NEAREST;
samp_st.MipModeFilter = MIPFILTER_NONE;
@@ -5229,21 +5230,21 @@ genX(update_sampler_state)(struct brw_context *brw,
}
/* Select mag filter. */
- samp_st.MagModeFilter = sampler->MagFilter == GL_LINEAR ?
+ samp_st.MagModeFilter = sampler->Attrib.MagFilter == GL_LINEAR ?
MAPFILTER_LINEAR : MAPFILTER_NEAREST;
/* Enable anisotropic filtering if desired. */
samp_st.MaximumAnisotropy = RATIO21;
- if (sampler->MaxAnisotropy > 1.0f) {
+ if (sampler->Attrib.MaxAnisotropy > 1.0f) {
if (samp_st.MinModeFilter == MAPFILTER_LINEAR)
samp_st.MinModeFilter = MAPFILTER_ANISOTROPIC;
if (samp_st.MagModeFilter == MAPFILTER_LINEAR)
samp_st.MagModeFilter = MAPFILTER_ANISOTROPIC;
- if (sampler->MaxAnisotropy > 2.0f) {
+ if (sampler->Attrib.MaxAnisotropy > 2.0f) {
samp_st.MaximumAnisotropy =
- MIN2((sampler->MaxAnisotropy - 2) / 2, RATIO161);
+ MIN2((sampler->Attrib.MaxAnisotropy - 2) / 2, RATIO161);
}
}
@@ -5261,10 +5262,10 @@ genX(update_sampler_state)(struct brw_context *brw,
}
bool either_nearest =
- sampler->MinFilter == GL_NEAREST || sampler->MagFilter == GL_NEAREST;
- unsigned wrap_s = translate_wrap_mode(sampler->WrapS, either_nearest);
- unsigned wrap_t = translate_wrap_mode(sampler->WrapT, either_nearest);
- unsigned wrap_r = translate_wrap_mode(sampler->WrapR, either_nearest);
+ sampler->Attrib.MinFilter == GL_NEAREST || sampler->Attrib.MagFilter == GL_NEAREST;
+ unsigned wrap_s = translate_wrap_mode(sampler->Attrib.WrapS, either_nearest);
+ unsigned wrap_t = translate_wrap_mode(sampler->Attrib.WrapT, either_nearest);
+ unsigned wrap_r = translate_wrap_mode(sampler->Attrib.WrapR, either_nearest);
if (target == GL_TEXTURE_CUBE_MAP ||
target == GL_TEXTURE_CUBE_MAP_ARRAY) {
@@ -5274,7 +5275,7 @@ genX(update_sampler_state)(struct brw_context *brw,
* Ivybridge and Baytrail seem to have problems with CUBE mode and
* integer formats. Fall back to CLAMP for now.
*/
- if ((tex_cube_map_seamless || sampler->CubeMapSeamless) &&
+ if ((tex_cube_map_seamless || sampler->Attrib.CubeMapSeamless) &&
!(GEN_GEN == 7 && !GEN_IS_HASWELL && texObj->_IsIntegerFormat)) {
wrap_s = TCM_CUBE;
wrap_t = TCM_CUBE;
@@ -5298,8 +5299,8 @@ genX(update_sampler_state)(struct brw_context *brw,
samp_st.TCZAddressControlMode = wrap_r;
samp_st.ShadowFunction =
- sampler->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB ?
- intel_translate_shadow_compare_func(sampler->CompareFunc) : 0;
+ sampler->Attrib.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB ?
+ intel_translate_shadow_compare_func(sampler->Attrib.CompareFunc) : 0;
#if GEN_GEN >= 7
/* Set shadow function. */
@@ -5313,14 +5314,14 @@ genX(update_sampler_state)(struct brw_context *brw,
#endif
const float hw_max_lod = GEN_GEN >= 7 ? 14 : 13;
- samp_st.MinLOD = CLAMP(sampler->MinLod, 0, hw_max_lod);
- samp_st.MaxLOD = CLAMP(sampler->MaxLod, 0, hw_max_lod);
+ samp_st.MinLOD = CLAMP(sampler->Attrib.MinLod, 0, hw_max_lod);
+ samp_st.MaxLOD = CLAMP(sampler->Attrib.MaxLod, 0, hw_max_lod);
samp_st.TextureLODBias =
- CLAMP(tex_unit_lod_bias + sampler->LodBias, -16, 15);
+ CLAMP(tex_unit_lod_bias + sampler->Attrib.LodBias, -16, 15);
#if GEN_GEN == 6
samp_st.BaseMipLevel =
- CLAMP(texObj->MinLevel + texObj->BaseLevel, 0, hw_max_lod);
+ CLAMP(texObj->MinLevel + texObj->Attrib.BaseLevel, 0, hw_max_lod);
samp_st.MinandMagStateNotEqual =
samp_st.MinModeFilter != samp_st.MagModeFilter;
#endif
@@ -5335,7 +5336,7 @@ genX(update_sampler_state)(struct brw_context *brw,
wrap_mode_needs_border_color(wrap_r)) {
genX(upload_default_color)(brw, sampler, format, base_format,
texObj->_IsIntegerFormat,
- texObj->StencilSampling,
+ texObj->Attrib.StencilSampling,
&border_color_offset);
}
#if GEN_GEN < 6
@@ -5368,7 +5369,7 @@ update_sampler_state(struct brw_context *brw,
if (texObj->Target == GL_TEXTURE_BUFFER)
return;
- struct gl_texture_image *firstImage = texObj->Image[0][texObj->BaseLevel];
+ struct gl_texture_image *firstImage = texObj->Image[0][texObj->Attrib.BaseLevel];
genX(update_sampler_state)(brw, texObj->Target,
ctx->Texture.CubeMapSeamless,
texUnit->LodBias,
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
index 4492d43c040..e5606f8f7d0 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -611,7 +611,7 @@ intel_create_image_from_texture(__DRIcontext *context, int target,
return NULL;
}
- if (level < obj->BaseLevel || level > obj->_MaxLevel) {
+ if (level < obj->Attrib.BaseLevel || level > obj->_MaxLevel) {
*error = __DRI_IMAGE_ERROR_BAD_MATCH;
return NULL;
}
diff --git a/src/mesa/drivers/dri/i965/intel_tex_image.c b/src/mesa/drivers/dri/i965/intel_tex_image.c
index c0a4a9c2ca9..fd3ea8a6db3 100644
--- a/src/mesa/drivers/dri/i965/intel_tex_image.c
+++ b/src/mesa/drivers/dri/i965/intel_tex_image.c
@@ -105,10 +105,10 @@ intel_miptree_create_for_teximage(struct brw_context *brw,
* resizable buffers, or require that buffers implement lazy
* pagetable arrangements.
*/
- if ((intelObj->base.Sampler.MinFilter == GL_NEAREST ||
- intelObj->base.Sampler.MinFilter == GL_LINEAR) &&
+ if ((intelObj->base.Sampler.Attrib.MinFilter == GL_NEAREST ||
+ intelObj->base.Sampler.Attrib.MinFilter == GL_LINEAR) &&
intelImage->base.Base.Level == 0 &&
- !intelObj->base.GenerateMipmap) {
+ !intelObj->base.Attrib.GenerateMipmap) {
lastLevel = 0;
} else {
lastLevel = _mesa_get_tex_max_num_levels(intelObj->base.Target,
diff --git a/src/mesa/drivers/dri/i965/intel_tex_validate.c b/src/mesa/drivers/dri/i965/intel_tex_validate.c
index 37aa8f43ec9..4af63b74062 100644
--- a/src/mesa/drivers/dri/i965/intel_tex_validate.c
+++ b/src/mesa/drivers/dri/i965/intel_tex_validate.c
@@ -49,9 +49,9 @@ intel_update_max_level(struct gl_texture_object *tObj,
if (!tObj->_MipmapComplete ||
(tObj->_RenderToTexture &&
- (sampler->MinFilter == GL_NEAREST ||
- sampler->MinFilter == GL_LINEAR))) {
- intelObj->_MaxLevel = tObj->BaseLevel;
+ (sampler->Attrib.MinFilter == GL_NEAREST ||
+ sampler->Attrib.MinFilter == GL_LINEAR))) {
+ intelObj->_MaxLevel = tObj->Attrib.BaseLevel;
} else {
intelObj->_MaxLevel = tObj->_MaxLevel;
}
@@ -78,7 +78,7 @@ intel_finalize_mipmap_tree(struct brw_context *brw,
return;
/* What levels does this validated texture image require? */
- int validate_first_level = tObj->BaseLevel;
+ int validate_first_level = tObj->Attrib.BaseLevel;
int validate_last_level = intelObj->_MaxLevel;
/* Skip the loop over images in the common case of no images having
@@ -103,7 +103,7 @@ intel_finalize_mipmap_tree(struct brw_context *brw,
*/
assert(!tObj->Immutable || brw->screen->devinfo.gen < 6);
- firstImage = intel_texture_image(tObj->Image[0][tObj->BaseLevel]);
+ firstImage = intel_texture_image(tObj->Image[0][tObj->Attrib.BaseLevel]);
/* Check tree can hold all active levels. Check tree matches
* target, imageFormat, etc.
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
index b5ab7bafc12..76b59f51734 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
@@ -261,7 +261,7 @@ teximage_fits(struct gl_texture_object *t, int level)
if (!ti || !to_nouveau_teximage(ti)->surface.bo)
return GL_FALSE;
- if (level == t->BaseLevel && (s->offset & 0x7f))
+ if (level == t->Attrib.BaseLevel && (s->offset & 0x7f))
return GL_FALSE;
return t->Target == GL_TEXTURE_RECTANGLE ||
@@ -296,19 +296,19 @@ validate_teximage(struct gl_context *ctx, struct gl_texture_object *t,
static int
get_last_level(struct gl_texture_object *t)
{
- struct gl_texture_image *base = t->Image[0][t->BaseLevel];
+ struct gl_texture_image *base = t->Image[0][t->Attrib.BaseLevel];
- if (t->Sampler.MinFilter == GL_NEAREST ||
- t->Sampler.MinFilter == GL_LINEAR || !base)
- return t->BaseLevel;
+ if (t->Sampler.Attrib.MinFilter == GL_NEAREST ||
+ t->Sampler.Attrib.MinFilter == GL_LINEAR || !base)
+ return t->Attrib.BaseLevel;
else
- return MIN2(t->BaseLevel + base->MaxNumLevels - 1, t->MaxLevel);
+ return MIN2(t->Attrib.BaseLevel + base->MaxNumLevels - 1, t->Attrib.MaxLevel);
}
static void
relayout_texture(struct gl_context *ctx, struct gl_texture_object *t)
{
- struct gl_texture_image *base = t->Image[0][t->BaseLevel];
+ struct gl_texture_image *base = t->Image[0][t->Attrib.BaseLevel];
if (base && t->Target != GL_TEXTURE_RECTANGLE) {
struct nouveau_surface *ss = to_nouveau_texture(t)->surfaces;
@@ -325,7 +325,7 @@ relayout_texture(struct gl_context *ctx, struct gl_texture_object *t)
nouveau_bo_ref(NULL, &ss[i].bo);
/* Relayout the mipmap tree. */
- for (i = t->BaseLevel; i <= last; i++) {
+ for (i = t->Attrib.BaseLevel; i <= last; i++) {
pitch = _mesa_format_row_stride(s->format, width);
size = get_format_blocksy(s->format, height) * pitch;
@@ -348,7 +348,7 @@ relayout_texture(struct gl_context *ctx, struct gl_texture_object *t)
height = minify(height, 1);
}
- if (t->BaseLevel <= last) {
+ if (t->Attrib.BaseLevel <= last) {
/* Get new storage. */
size = align(offset, 64);
assert(size);
@@ -358,7 +358,7 @@ relayout_texture(struct gl_context *ctx, struct gl_texture_object *t)
0, size, NULL, &ss[last].bo);
assert(!ret);
- for (i = t->BaseLevel; i < last; i++)
+ for (i = t->Attrib.BaseLevel; i < last; i++)
nouveau_bo_ref(ss[last].bo, &ss[i].bo);
}
}
@@ -370,7 +370,7 @@ nouveau_texture_validate(struct gl_context *ctx, struct gl_texture_object *t)
struct nouveau_texture *nt = to_nouveau_texture(t);
int i, last = get_last_level(t);
- if (!teximage_fits(t, t->BaseLevel) ||
+ if (!teximage_fits(t, t->Attrib.BaseLevel) ||
!teximage_fits(t, last))
return GL_FALSE;
@@ -378,7 +378,7 @@ nouveau_texture_validate(struct gl_context *ctx, struct gl_texture_object *t)
nt->dirty = GL_FALSE;
/* Copy the teximages to the actual miptree. */
- for (i = t->BaseLevel; i <= last; i++) {
+ for (i = t->Attrib.BaseLevel; i <= last; i++) {
struct nouveau_surface *s = &nt->surfaces[i];
validate_teximage(ctx, t, i, 0, 0, 0,
@@ -394,7 +394,7 @@ nouveau_texture_validate(struct gl_context *ctx, struct gl_texture_object *t)
void
nouveau_texture_reallocate(struct gl_context *ctx, struct gl_texture_object *t)
{
- if (!teximage_fits(t, t->BaseLevel) ||
+ if (!teximage_fits(t, t->Attrib.BaseLevel) ||
!teximage_fits(t, get_last_level(t))) {
texture_dirty(t);
relayout_texture(ctx, t);
@@ -502,7 +502,7 @@ nouveau_teximage(struct gl_context *ctx, GLint dims,
texture_dirty(t);
}
- if (level == t->BaseLevel) {
+ if (level == t->Attrib.BaseLevel) {
if (!teximage_fits(t, level))
relayout_texture(ctx, t);
nouveau_texture_validate(ctx, t);
diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.c b/src/mesa/drivers/dri/nouveau/nv04_context.c
index 60a4e4892a9..d64fcc3ccd7 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_context.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_context.c
@@ -37,7 +37,7 @@ texunit_needs_combiners(struct gl_texture_unit *u,
struct gl_fixedfunc_texture_unit *f)
{
struct gl_texture_object *t = u->_Current;
- struct gl_texture_image *ti = t->Image[0][t->BaseLevel];
+ struct gl_texture_image *ti = t->Image[0][t->Attrib.BaseLevel];
return ti->TexFormat == MESA_FORMAT_A_UNORM8 ||
ti->TexFormat == MESA_FORMAT_L_UNORM8 ||
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c
index 26e2e91a6e0..c57973605ad 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c
@@ -139,7 +139,7 @@ get_input_arg(struct combiner_state *rc, int arg, int flags)
int i = (source == GL_TEXTURE ?
rc->unit : source - GL_TEXTURE0);
struct gl_texture_object *t = rc->ctx->Texture.Unit[i]._Current;
- mesa_format format = t->Image[0][t->BaseLevel]->TexFormat;
+ mesa_format format = t->Image[0][t->Attrib.BaseLevel]->TexFormat;
if (format == MESA_FORMAT_A_UNORM8) {
/* Emulated using I8. */
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
index 15eaa71531b..1078dc821a1 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
@@ -67,35 +67,35 @@ nv04_emit_tex_obj(struct gl_context *ctx, int emit)
if (ctx->Texture.Unit[i]._Current) {
struct gl_texture_object *t = ctx->Texture.Unit[i]._Current;
- struct gl_texture_image *ti = t->Image[0][t->BaseLevel];
+ struct gl_texture_image *ti = t->Image[0][t->Attrib.BaseLevel];
const struct gl_sampler_object *sa = _mesa_get_samplerobj(ctx, i);
int lod_max = 1, lod_bias = 0;
if (!nouveau_texture_validate(ctx, t))
return;
- s = &to_nouveau_texture(t)->surfaces[t->BaseLevel];
+ s = &to_nouveau_texture(t)->surfaces[t->Attrib.BaseLevel];
- if (sa->MinFilter != GL_NEAREST &&
- sa->MinFilter != GL_LINEAR) {
- lod_max = CLAMP(MIN2(sa->MaxLod, t->_MaxLambda),
+ if (sa->Attrib.MinFilter != GL_NEAREST &&
+ sa->Attrib.MinFilter != GL_LINEAR) {
+ lod_max = CLAMP(MIN2(sa->Attrib.MaxLod, t->_MaxLambda),
0, 15) + 1;
lod_bias = CLAMP(ctx->Texture.Unit[i].LodBias +
- sa->LodBias, -16, 15) * 8;
+ sa->Attrib.LodBias, -16, 15) * 8;
}
- format |= nvgl_wrap_mode(sa->WrapT) << 28 |
- nvgl_wrap_mode(sa->WrapS) << 24 |
+ format |= nvgl_wrap_mode(sa->Attrib.WrapT) << 28 |
+ nvgl_wrap_mode(sa->Attrib.WrapS) << 24 |
ti->HeightLog2 << 20 |
ti->WidthLog2 << 16 |
lod_max << 12 |
get_tex_format(ti);
- filter |= log2i(sa->MaxAnisotropy) << 31 |
- nvgl_filter_mode(sa->MagFilter) << 28 |
- log2i(sa->MaxAnisotropy) << 27 |
- nvgl_filter_mode(sa->MinFilter) << 24 |
+ filter |= log2i(sa->Attrib.MaxAnisotropy) << 31 |
+ nvgl_filter_mode(sa->Attrib.MagFilter) << 28 |
+ log2i(sa->Attrib.MaxAnisotropy) << 27 |
+ nvgl_filter_mode(sa->Attrib.MinFilter) << 24 |
(lod_bias & 0xff) << 16;
} else {
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
index 27400d3ebdc..122831b1d6e 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
@@ -170,7 +170,7 @@ get_input_arg(struct combiner_state *rc, int arg, int flags)
int i = (source == GL_TEXTURE ?
rc->unit : source - GL_TEXTURE0);
struct gl_texture_object *t = rc->ctx->Texture.Unit[i]._Current;
- mesa_format format = t->Image[0][t->BaseLevel]->TexFormat;
+ mesa_format format = t->Image[0][t->Attrib.BaseLevel]->TexFormat;
if (format == MESA_FORMAT_A_UNORM8) {
/* Emulated using I8. */
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
index d741d416673..0a0ee683e6d 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
@@ -173,25 +173,25 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
}
t = ctx->Texture.Unit[i]._Current;
- s = &to_nouveau_texture(t)->surfaces[t->BaseLevel];
- ti = t->Image[0][t->BaseLevel];
+ s = &to_nouveau_texture(t)->surfaces[t->Attrib.BaseLevel];
+ ti = t->Image[0][t->Attrib.BaseLevel];
sa = _mesa_get_samplerobj(ctx, i);
if (!nouveau_texture_validate(ctx, t))
return;
/* Recompute the texturing registers. */
- tx_format = nvgl_wrap_mode(sa->WrapT) << 28
- | nvgl_wrap_mode(sa->WrapS) << 24
+ tx_format = nvgl_wrap_mode(sa->Attrib.WrapT) << 28
+ | nvgl_wrap_mode(sa->Attrib.WrapS) << 24
| ti->HeightLog2 << 20
| ti->WidthLog2 << 16
| 5 << 4 | 1 << 12;
- tx_filter = nvgl_filter_mode(sa->MagFilter) << 28
- | nvgl_filter_mode(sa->MinFilter) << 24;
+ tx_filter = nvgl_filter_mode(sa->Attrib.MagFilter) << 28
+ | nvgl_filter_mode(sa->Attrib.MinFilter) << 24;
tx_enable = NV10_3D_TEX_ENABLE_ENABLE
- | log2i(sa->MaxAnisotropy) << 4;
+ | log2i(sa->Attrib.MaxAnisotropy) << 4;
if (t->Target == GL_TEXTURE_RECTANGLE) {
BEGIN_NV04(push, NV10_3D(TEX_NPOT_PITCH(i)), 1);
@@ -204,11 +204,11 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
tx_format |= get_tex_format_pot(ti);
}
- if (sa->MinFilter != GL_NEAREST &&
- sa->MinFilter != GL_LINEAR) {
- int lod_min = sa->MinLod;
- int lod_max = MIN2(sa->MaxLod, t->_MaxLambda);
- int lod_bias = sa->LodBias
+ if (sa->Attrib.MinFilter != GL_NEAREST &&
+ sa->Attrib.MinFilter != GL_LINEAR) {
+ int lod_min = sa->Attrib.MinLod;
+ int lod_max = MIN2(sa->Attrib.MaxLod, t->_MaxLambda);
+ int lod_bias = sa->Attrib.LodBias
+ ctx->Texture.Unit[i].LodBias;
lod_max = CLAMP(lod_max, 0, 15);
diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c
index 9960ae0d449..e1faa3137d0 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c
@@ -180,8 +180,8 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit)
}
t = ctx->Texture.Unit[i]._Current;
- s = &to_nouveau_texture(t)->surfaces[t->BaseLevel];
- ti = t->Image[0][t->BaseLevel];
+ s = &to_nouveau_texture(t)->surfaces[t->Attrib.BaseLevel];
+ ti = t->Image[0][t->Attrib.BaseLevel];
sa = _mesa_get_samplerobj(ctx, i);
if (!nouveau_texture_validate(ctx, t))
@@ -199,24 +199,24 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit)
case GL_TEXTURE_1D:
tx_wrap = NV20_3D_TEX_WRAP_R_CLAMP_TO_EDGE
| NV20_3D_TEX_WRAP_T_CLAMP_TO_EDGE
- | nvgl_wrap_mode_nv20(sa->WrapS) << 0;
+ | nvgl_wrap_mode_nv20(sa->Attrib.WrapS) << 0;
break;
default:
- tx_wrap = nvgl_wrap_mode_nv20(sa->WrapR) << 16
- | nvgl_wrap_mode_nv20(sa->WrapT) << 8
- | nvgl_wrap_mode_nv20(sa->WrapS) << 0;
+ tx_wrap = nvgl_wrap_mode_nv20(sa->Attrib.WrapR) << 16
+ | nvgl_wrap_mode_nv20(sa->Attrib.WrapT) << 8
+ | nvgl_wrap_mode_nv20(sa->Attrib.WrapS) << 0;
break;
}
- tx_filter = nvgl_filter_mode(sa->MagFilter) << 24
- | nvgl_filter_mode(sa->MinFilter) << 16
+ tx_filter = nvgl_filter_mode(sa->Attrib.MagFilter) << 24
+ | nvgl_filter_mode(sa->Attrib.MinFilter) << 16
| 2 << 12;
- r = FLOAT_TO_UBYTE(sa->BorderColor.f[0]);
- g = FLOAT_TO_UBYTE(sa->BorderColor.f[1]);
- b = FLOAT_TO_UBYTE(sa->BorderColor.f[2]);
- a = FLOAT_TO_UBYTE(sa->BorderColor.f[3]);
+ r = FLOAT_TO_UBYTE(sa->Attrib.BorderColor.f[0]);
+ g = FLOAT_TO_UBYTE(sa->Attrib.BorderColor.f[1]);
+ b = FLOAT_TO_UBYTE(sa->Attrib.BorderColor.f[2]);
+ a = FLOAT_TO_UBYTE(sa->Attrib.BorderColor.f[3]);
switch (ti->_BaseFormat) {
case GL_LUMINANCE:
a = 0xff;
@@ -237,7 +237,7 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit)
tx_bcolor = b << 0 | g << 8 | r << 16 | a << 24;
tx_enable = NV20_3D_TEX_ENABLE_ENABLE
- | log2i(sa->MaxAnisotropy) << 4;
+ | log2i(sa->Attrib.MaxAnisotropy) << 4;
if (t->Target == GL_TEXTURE_RECTANGLE) {
BEGIN_NV04(push, NV20_3D(TEX_NPOT_PITCH(i)), 1);
@@ -250,11 +250,11 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit)
tx_format |= get_tex_format_pot(ti);
}
- if (sa->MinFilter != GL_NEAREST &&
- sa->MinFilter != GL_LINEAR) {
- int lod_min = sa->MinLod;
- int lod_max = MIN2(sa->MaxLod, t->_MaxLambda);
- int lod_bias = sa->LodBias
+ if (sa->Attrib.MinFilter != GL_NEAREST &&
+ sa->Attrib.MinFilter != GL_LINEAR) {
+ int lod_min = sa->Attrib.MinLod;
+ int lod_max = MIN2(sa->Attrib.MaxLod, t->_MaxLambda);
+ int lod_bias = sa->Attrib.LodBias
+ ctx->Texture.Unit[i].LodBias;
lod_max = CLAMP(lod_max, 0, 15);
diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c
index 6e51ebe5553..92c82e67d18 100644
--- a/src/mesa/drivers/dri/r200/r200_tex.c
+++ b/src/mesa/drivers/dri/r200/r200_tex.c
@@ -365,10 +365,10 @@ void r200TexUpdateParameters(struct gl_context *ctx, GLuint unit)
struct gl_sampler_object *samp = _mesa_get_samplerobj(ctx, unit);
radeonTexObj* t = radeon_tex_obj(ctx->Texture.Unit[unit]._Current);
- r200SetTexMaxAnisotropy(t , samp->MaxAnisotropy);
- r200SetTexFilter(t, samp->MinFilter, samp->MagFilter);
- r200SetTexWrap(t, samp->WrapS, samp->WrapT, samp->WrapR);
- r200SetTexBorderColor(t, samp->BorderColor.f);
+ r200SetTexMaxAnisotropy(t , samp->Attrib.MaxAnisotropy);
+ r200SetTexFilter(t, samp->Attrib.MinFilter, samp->Attrib.MagFilter);
+ r200SetTexWrap(t, samp->Attrib.WrapS, samp->Attrib.WrapT, samp->Attrib.WrapR);
+ r200SetTexBorderColor(t, samp->Attrib.BorderColor.f);
}
/**
@@ -476,13 +476,13 @@ static struct gl_texture_object *r200NewTextureObject(struct gl_context * ctx,
_mesa_enum_to_string(target), t);
_mesa_initialize_texture_object(ctx, &t->base, name, target);
- t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
+ t->base.Sampler.Attrib.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
/* Initialize hardware state */
- r200SetTexWrap( t, t->base.Sampler.WrapS, t->base.Sampler.WrapT, t->base.Sampler.WrapR );
- r200SetTexMaxAnisotropy( t, t->base.Sampler.MaxAnisotropy );
- r200SetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter);
- r200SetTexBorderColor(t, t->base.Sampler.BorderColor.f);
+ r200SetTexWrap( t, t->base.Sampler.Attrib.WrapS, t->base.Sampler.Attrib.WrapT, t->base.Sampler.Attrib.WrapR );
+ r200SetTexMaxAnisotropy( t, t->base.Sampler.Attrib.MaxAnisotropy );
+ r200SetTexFilter(t, t->base.Sampler.Attrib.MinFilter, t->base.Sampler.Attrib.MagFilter);
+ r200SetTexBorderColor(t, t->base.Sampler.Attrib.BorderColor.f);
return &t->base;
}
@@ -493,7 +493,7 @@ r200NewSamplerObject(struct gl_context *ctx, GLuint name)
r200ContextPtr rmesa = R200_CONTEXT(ctx);
struct gl_sampler_object *samp = _mesa_new_sampler_object(ctx, name);
if (samp)
- samp->MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
+ samp->Attrib.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
return samp;
}
diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
index 09ccc5c6a12..1187803643d 100644
--- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
+++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
@@ -251,16 +251,16 @@ static void calculate_min_max_lod(struct gl_sampler_object *samp, struct gl_text
case GL_TEXTURE_2D:
case GL_TEXTURE_3D:
case GL_TEXTURE_CUBE_MAP:
- if (samp->MinFilter == GL_NEAREST || samp->MinFilter == GL_LINEAR) {
+ if (samp->Attrib.MinFilter == GL_NEAREST || samp->Attrib.MinFilter == GL_LINEAR) {
/* GL_NEAREST and GL_LINEAR only care about GL_TEXTURE_BASE_LEVEL.
*/
- minLod = maxLod = tObj->BaseLevel;
+ minLod = maxLod = tObj->Attrib.BaseLevel;
} else {
- minLod = tObj->BaseLevel + (GLint)(samp->MinLod);
- minLod = MAX2(minLod, tObj->BaseLevel);
- minLod = MIN2(minLod, tObj->MaxLevel);
- maxLod = tObj->BaseLevel + (GLint)(samp->MaxLod + 0.5);
- maxLod = MIN2(maxLod, tObj->MaxLevel);
+ minLod = tObj->Attrib.BaseLevel + (GLint)(samp->Attrib.MinLod);
+ minLod = MAX2(minLod, tObj->Attrib.BaseLevel);
+ minLod = MIN2(minLod, tObj->Attrib.MaxLevel);
+ maxLod = tObj->Attrib.BaseLevel + (GLint)(samp->Attrib.MaxLod + 0.5);
+ maxLod = MIN2(maxLod, tObj->Attrib.MaxLevel);
maxLod = MIN2(maxLod, tObj->Image[0][minLod]->MaxNumLevels - 1 + minLod);
maxLod = MAX2(maxLod, minLod); /* need at least one level */
}
@@ -315,12 +315,12 @@ static GLboolean radeon_miptree_matches_texture(radeon_mipmap_tree *mt, struct g
unsigned numLevels;
radeon_mipmap_level *mtBaseLevel;
- if (texObj->BaseLevel < mt->baseLevel)
+ if (texObj->Attrib.BaseLevel < mt->baseLevel)
return GL_FALSE;
- mtBaseLevel = &mt->levels[texObj->BaseLevel - mt->baseLevel];
- firstImage = texObj->Image[0][texObj->BaseLevel];
- numLevels = MIN2(texObj->_MaxLevel - texObj->BaseLevel + 1, firstImage->MaxNumLevels);
+ mtBaseLevel = &mt->levels[texObj->Attrib.BaseLevel - mt->baseLevel];
+ firstImage = texObj->Image[0][texObj->Attrib.BaseLevel];
+ numLevels = MIN2(texObj->_MaxLevel - texObj->Attrib.BaseLevel + 1, firstImage->MaxNumLevels);
if (radeon_is_debug_enabled(RADEON_TEXTURE,RADEON_TRACE)) {
fprintf(stderr, "Checking if miptree %p matches texObj %p\n", mt, texObj);
@@ -358,7 +358,7 @@ static GLboolean radeon_miptree_matches_texture(radeon_mipmap_tree *mt, struct g
void radeon_try_alloc_miptree(radeonContextPtr rmesa, radeonTexObj *t)
{
struct gl_texture_object *texObj = &t->base;
- struct gl_texture_image *texImg = texObj->Image[0][texObj->BaseLevel];
+ struct gl_texture_image *texImg = texObj->Image[0][texObj->Attrib.BaseLevel];
GLuint numLevels;
assert(!t->mt);
@@ -369,10 +369,10 @@ void radeon_try_alloc_miptree(radeonContextPtr rmesa, radeonTexObj *t)
}
- numLevels = MIN2(texObj->MaxLevel - texObj->BaseLevel + 1, texImg->MaxNumLevels);
+ numLevels = MIN2(texObj->Attrib.MaxLevel - texObj->Attrib.BaseLevel + 1, texImg->MaxNumLevels);
t->mt = radeon_miptree_create(rmesa, t->base.Target,
- texImg->TexFormat, texObj->BaseLevel,
+ texImg->TexFormat, texObj->Attrib.BaseLevel,
numLevels, texImg->Width, texImg->Height,
texImg->Depth, t->tile_bits);
}
@@ -524,7 +524,7 @@ int radeon_validate_texture_miptree(struct gl_context * ctx,
"%s: Validating texture %p now, minLod = %d, maxLod = %d\n",
__func__, texObj ,t->minLod, t->maxLod);
- dst_miptree = get_biggest_matching_miptree(t, t->base.BaseLevel, t->base._MaxLevel);
+ dst_miptree = get_biggest_matching_miptree(t, t->base.Attrib.BaseLevel, t->base._MaxLevel);
radeon_miptree_unreference(&t->mt);
if (!dst_miptree) {
diff --git a/src/mesa/drivers/dri/radeon/radeon_tex.c b/src/mesa/drivers/dri/radeon/radeon_tex.c
index 6a5579b2c2b..bb8d8335f8b 100644
--- a/src/mesa/drivers/dri/radeon/radeon_tex.c
+++ b/src/mesa/drivers/dri/radeon/radeon_tex.c
@@ -315,10 +315,10 @@ void radeonTexUpdateParameters(struct gl_context *ctx, GLuint unit)
struct gl_sampler_object *samp = _mesa_get_samplerobj(ctx, unit);
radeonTexObj* t = radeon_tex_obj(ctx->Texture.Unit[unit]._Current);
- radeonSetTexMaxAnisotropy(t , samp->MaxAnisotropy);
- radeonSetTexFilter(t, samp->MinFilter, samp->MagFilter);
- radeonSetTexWrap(t, samp->WrapS, samp->WrapT);
- radeonSetTexBorderColor(t, samp->BorderColor.f);
+ radeonSetTexMaxAnisotropy(t , samp->Attrib.MaxAnisotropy);
+ radeonSetTexFilter(t, samp->Attrib.MinFilter, samp->Attrib.MagFilter);
+ radeonSetTexWrap(t, samp->Attrib.WrapS, samp->Attrib.WrapT);
+ radeonSetTexBorderColor(t, samp->Attrib.BorderColor.f);
}
@@ -410,7 +410,7 @@ radeonNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target )
radeonTexObj* t = CALLOC_STRUCT(radeon_tex_obj);
_mesa_initialize_texture_object(ctx, &t->base, name, target);
- t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
+ t->base.Sampler.Attrib.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
t->border_fallback = GL_FALSE;
@@ -418,10 +418,10 @@ radeonNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target )
t->pp_txformat = (RADEON_TXFORMAT_ENDIAN_NO_SWAP |
RADEON_TXFORMAT_PERSPECTIVE_ENABLE);
- radeonSetTexWrap( t, t->base.Sampler.WrapS, t->base.Sampler.WrapT );
- radeonSetTexMaxAnisotropy( t, t->base.Sampler.MaxAnisotropy );
- radeonSetTexFilter( t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter );
- radeonSetTexBorderColor( t, t->base.Sampler.BorderColor.f );
+ radeonSetTexWrap( t, t->base.Sampler.Attrib.WrapS, t->base.Sampler.Attrib.WrapT );
+ radeonSetTexMaxAnisotropy( t, t->base.Sampler.Attrib.MaxAnisotropy );
+ radeonSetTexFilter( t, t->base.Sampler.Attrib.MinFilter, t->base.Sampler.Attrib.MagFilter );
+ radeonSetTexBorderColor( t, t->base.Sampler.Attrib.BorderColor.f );
return &t->base;
}
@@ -432,7 +432,7 @@ radeonNewSamplerObject(struct gl_context *ctx, GLuint name)
r100ContextPtr rmesa = R100_CONTEXT(ctx);
struct gl_sampler_object *samp = _mesa_new_sampler_object(ctx, name);
if (samp)
- samp->MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
+ samp->Attrib.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
return samp;
}
diff --git a/src/mesa/drivers/dri/radeon/radeon_texstate.c b/src/mesa/drivers/dri/radeon/radeon_texstate.c
index 79f0095f480..1f77f74da14 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texstate.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texstate.c
@@ -201,7 +201,7 @@ do { \
static GLenum
texture_base_format(const struct gl_texture_object *t)
{
- return t->Image[0][t->BaseLevel]->_BaseFormat;
+ return t->Image[0][t->Attrib.BaseLevel]->_BaseFormat;
}
static GLboolean radeonUpdateTextureEnv( struct gl_context *ctx, int unit )
diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c
index e6ab7a80ecd..21036972d06 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
@@ -651,7 +651,7 @@ static radeon_mipmap_tree *radeon_miptree_create_for_teximage(radeonContextPtr r
height = texImage->Height;
depth = texImage->Depth;
- if (texImage->Level > texObj->BaseLevel &&
+ if (texImage->Level > texObj->Attrib.BaseLevel &&
(width == 1 ||
(texObj->Target != GL_TEXTURE_1D && height == 1) ||
(texObj->Target == GL_TEXTURE_3D && depth == 1))) {
@@ -663,10 +663,10 @@ static radeon_mipmap_tree *radeon_miptree_create_for_teximage(radeonContextPtr r
firstLevel = texImage->Level;
lastLevel = texImage->Level;
} else {
- if (texImage->Level < texObj->BaseLevel)
+ if (texImage->Level < texObj->Attrib.BaseLevel)
firstLevel = 0;
else
- firstLevel = texObj->BaseLevel;
+ firstLevel = texObj->Attrib.BaseLevel;
for (i = texImage->Level; i > firstLevel; i--) {
width <<= 1;
@@ -675,8 +675,8 @@ static radeon_mipmap_tree *radeon_miptree_create_for_teximage(radeonContextPtr r
if (depth != 1)
depth <<= 1;
}
- if ((texObj->Sampler.MinFilter == GL_NEAREST ||
- texObj->Sampler.MinFilter == GL_LINEAR) &&
+ if ((texObj->Sampler.Attrib.MinFilter == GL_NEAREST ||
+ texObj->Sampler.Attrib.MinFilter == GL_LINEAR) &&
texImage->Level == firstLevel) {
lastLevel = firstLevel;
} else {