#include "main/fbobject.h"
#include "main/teximage.h"
#include "main/texobj.h"
+#include "util/u_memory.h"
#include "swrast/swrast.h"
#include "swrast/s_context.h"
}
static unsigned int
-texture_slices(struct gl_texture_image *texImage)
+texture_slices(const struct gl_texture_image *texImage)
{
if (texImage->TexObject->Target == GL_TEXTURE_1D_ARRAY)
return texImage->Height;
{
struct swrast_texture_image *swImg = swrast_texture_image(texImage);
- if ((texImage->Width == 1 || _mesa_is_pow_two(texImage->Width2)) &&
- (texImage->Height == 1 || _mesa_is_pow_two(texImage->Height2)) &&
- (texImage->Depth == 1 || _mesa_is_pow_two(texImage->Depth2)))
+ if ((texImage->Width == 1 || util_is_power_of_two_or_zero(texImage->Width2)) &&
+ (texImage->Height == 1 || util_is_power_of_two_or_zero(texImage->Height2)) &&
+ (texImage->Depth == 1 || util_is_power_of_two_or_zero(texImage->Depth2)))
swImg->_IsPowerOfTwo = GL_TRUE;
else
swImg->_IsPowerOfTwo = GL_FALSE;
assert(y < texImage->Height || texImage->Height == 0);
assert(x + w <= texImage->Width);
assert(y + h <= texImage->Height);
+ assert(slice < texture_slices(texImage));
}
/**
assert(swImage->Buffer);
assert(swImage->Buffer == swImage->ImageSlices[0]);
- assert(slice < texture_slices(texImage));
map = swImage->ImageSlices[slice];
/* apply x/y offset to map address */
int unit;
for (unit = 0; unit <= ctx->Texture._MaxEnabledTexImageUnit; unit++) {
- if (ctx->Texture.Unit[unit]._ReallyEnabled) {
- struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current;
+ struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current;
+ if (texObj)
_swrast_map_texture(ctx, texObj);
- }
}
}
{
int unit;
for (unit = 0; unit <= ctx->Texture._MaxEnabledTexImageUnit; unit++) {
- if (ctx->Texture.Unit[unit]._ReallyEnabled) {
- struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current;
+ struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current;
+ if (texObj)
_swrast_unmap_texture(ctx, texObj);
- }
}
}