Compare commits
8 Commits
intel_2009
...
mesa_7_4_r
Author | SHA1 | Date | |
---|---|---|---|
|
17db2db9dc | ||
|
dba79af9bc | ||
|
b009a32bf4 | ||
|
7122490982 | ||
|
6ada1d47d9 | ||
|
55865335f4 | ||
|
918e5221ef | ||
|
9feb26584a |
9
Makefile
9
Makefile
@@ -174,10 +174,11 @@ ultrix-gcc:
|
||||
|
||||
# Rules for making release tarballs
|
||||
|
||||
DIRECTORY = Mesa-7.4
|
||||
LIB_NAME = MesaLib-7.4
|
||||
DEMO_NAME = MesaDemos-7.4
|
||||
GLUT_NAME = MesaGLUT-7.4
|
||||
VERSION=7.4-rc1
|
||||
DIRECTORY = Mesa-$(VERSION)
|
||||
LIB_NAME = MesaLib-$(VERSION)
|
||||
DEMO_NAME = MesaDemos-$(VERSION)
|
||||
GLUT_NAME = MesaGLUT-$(VERSION)
|
||||
|
||||
MAIN_FILES = \
|
||||
$(DIRECTORY)/Makefile* \
|
||||
|
@@ -9,9 +9,9 @@
|
||||
<H1>Downloading</H1>
|
||||
|
||||
<p>
|
||||
Current development release: <b>7.3</b>
|
||||
Current stable release: <b>7.4</b>
|
||||
<br>
|
||||
Last stable release: <b>7.2</b>
|
||||
Last unstable/development release: <b>7.3</b>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
@@ -11,6 +11,13 @@
|
||||
<H1>News</H1>
|
||||
|
||||
|
||||
<h2>March ??, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes-7.4.html">Mesa 7.4</a> is released.
|
||||
This is a stable release fixing bugs since the 7.3 release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>January 22, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes-7.3.html">Mesa 7.3</a> is released.
|
||||
|
@@ -290,8 +290,21 @@ static void upload_polygon_stipple(struct brw_context *brw)
|
||||
bps.header.opcode = CMD_POLY_STIPPLE_PATTERN;
|
||||
bps.header.length = sizeof(bps)/4-2;
|
||||
|
||||
for (i = 0; i < 32; i++)
|
||||
bps.stipple[i] = ctx->PolygonStipple[31 - i]; /* invert */
|
||||
/* Polygon stipple is provided in OpenGL order, i.e. bottom
|
||||
* row first. If we're rendering to a window (i.e. the
|
||||
* default frame buffer object, 0), then we need to invert
|
||||
* it to match our pixel layout. But if we're rendering
|
||||
* to a FBO (i.e. any named frame buffer object), we *don't*
|
||||
* need to invert - we already match the layout.
|
||||
*/
|
||||
if (ctx->DrawBuffer->Name == 0) {
|
||||
for (i = 0; i < 32; i++)
|
||||
bps.stipple[i] = ctx->PolygonStipple[31 - i]; /* invert */
|
||||
}
|
||||
else {
|
||||
for (i = 0; i < 32; i++)
|
||||
bps.stipple[i] = ctx->PolygonStipple[i]; /* don't invert */
|
||||
}
|
||||
|
||||
BRW_CACHED_BATCH_STRUCT(brw, &bps);
|
||||
}
|
||||
@@ -319,8 +332,22 @@ static void upload_polygon_stipple_offset(struct brw_context *brw)
|
||||
bpso.header.opcode = CMD_POLY_STIPPLE_OFFSET;
|
||||
bpso.header.length = sizeof(bpso)/4-2;
|
||||
|
||||
bpso.bits0.x_offset = (32 - (dPriv->x & 31)) & 31;
|
||||
bpso.bits0.y_offset = (32 - ((dPriv->y + dPriv->h) & 31)) & 31;
|
||||
/* If we're drawing to a system window (ctx->DrawBuffer->Name == 0),
|
||||
* we have to invert the Y axis in order to match the OpenGL
|
||||
* pixel coordinate system, and our offset must be matched
|
||||
* to the window position. If we're drawing to a FBO
|
||||
* (ctx->DrawBuffer->Name != 0), then our native pixel coordinate
|
||||
* system works just fine, and there's no window system to
|
||||
* worry about.
|
||||
*/
|
||||
if (brw->intel.ctx.DrawBuffer->Name == 0) {
|
||||
bpso.bits0.x_offset = (32 - (dPriv->x & 31)) & 31;
|
||||
bpso.bits0.y_offset = (32 - ((dPriv->y + dPriv->h) & 31)) & 31;
|
||||
}
|
||||
else {
|
||||
bpso.bits0.y_offset = 0;
|
||||
bpso.bits0.x_offset = 0;
|
||||
}
|
||||
|
||||
BRW_CACHED_BATCH_STRUCT(brw, &bpso);
|
||||
}
|
||||
|
@@ -167,8 +167,14 @@ static void upload_sf_prog(struct brw_context *brw)
|
||||
key.do_twoside_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide);
|
||||
|
||||
/* _NEW_POLYGON */
|
||||
if (key.do_twoside_color)
|
||||
key.frontface_ccw = (ctx->Polygon.FrontFace == GL_CCW);
|
||||
if (key.do_twoside_color) {
|
||||
/* If we're rendering to a FBO, we have to invert the polygon
|
||||
* face orientation, just as we invert the viewport in
|
||||
* sf_unit_create_from_key(). ctx->DrawBuffer->Name will be
|
||||
* nonzero if we're rendering to such an FBO.
|
||||
*/
|
||||
key.frontface_ccw = (ctx->Polygon.FrontFace == GL_CCW) ^ (ctx->DrawBuffer->Name != 0);
|
||||
}
|
||||
|
||||
dri_bo_unreference(brw->sf.prog_bo);
|
||||
brw->sf.prog_bo = brw_search_cache(&brw->cache, BRW_SF_PROG,
|
||||
|
@@ -129,13 +129,13 @@ static void r300SetVertexFormat( GLcontext *ctx )
|
||||
offset = 4;
|
||||
EMIT_PAD(4 * sizeof(float));
|
||||
}
|
||||
|
||||
/*
|
||||
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_POINTSIZE )) {
|
||||
EMIT_ATTR( _TNL_ATTRIB_POINTSIZE, EMIT_1F );
|
||||
vap_fmt_0 |= R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT;
|
||||
offset += 1;
|
||||
}
|
||||
|
||||
*/
|
||||
if (RENDERINPUTS_TEST(index_bitset, _TNL_ATTRIB_COLOR0)) {
|
||||
sz = VB->AttribPtr[VERT_ATTRIB_COLOR0]->size;
|
||||
rmesa->swtcl.coloroffset = offset;
|
||||
|
@@ -2376,8 +2376,16 @@ struct gl_renderbuffer_attachment
|
||||
*/
|
||||
struct gl_framebuffer
|
||||
{
|
||||
_glthread_Mutex Mutex; /**< for thread safety */
|
||||
GLuint Name; /* if zero, this is a window system framebuffer */
|
||||
_glthread_Mutex Mutex; /**< for thread safety */
|
||||
/**
|
||||
* If zero, this is a window system framebuffer. If non-zero, this
|
||||
* is a FBO framebuffer; note that for some devices (i.e. those with
|
||||
* a natural pixel coordinate system for FBOs that differs from the
|
||||
* OpenGL/Mesa coordinate system), this means that the viewport,
|
||||
* polygon face orientation, and polygon stipple will have to be inverted.
|
||||
*/
|
||||
GLuint Name;
|
||||
|
||||
GLint RefCount;
|
||||
GLboolean DeletePending;
|
||||
|
||||
|
@@ -3,7 +3,7 @@
|
||||
* Version: 7.5
|
||||
*
|
||||
* Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2009 VMware, Inc. All Rights Reserved.
|
||||
* Copyright (C) 2009 VMware, Inc. 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"),
|
||||
@@ -125,6 +125,20 @@ get_texobj(GLcontext *ctx, GLenum target)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This is called just prior to changing any texture object state.
|
||||
* Any pending rendering will be flushed out, we'll set the _NEW_TEXTURE
|
||||
* state flag and then mark the texture object as 'incomplete' so that any
|
||||
* per-texture derived state gets recomputed.
|
||||
*/
|
||||
static INLINE void
|
||||
flush(GLcontext *ctx, struct gl_texture_object *texObj)
|
||||
{
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
texObj->_Complete = GL_FALSE;
|
||||
}
|
||||
|
||||
|
||||
/** Set an integer-valued texture parameter */
|
||||
static void
|
||||
set_tex_parameteri(GLcontext *ctx,
|
||||
@@ -138,7 +152,7 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
switch (params[0]) {
|
||||
case GL_NEAREST:
|
||||
case GL_LINEAR:
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->MinFilter = params[0];
|
||||
return;
|
||||
case GL_NEAREST_MIPMAP_NEAREST:
|
||||
@@ -146,7 +160,7 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
case GL_NEAREST_MIPMAP_LINEAR:
|
||||
case GL_LINEAR_MIPMAP_LINEAR:
|
||||
if (texObj->Target != GL_TEXTURE_RECTANGLE_NV) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->MinFilter = params[0];
|
||||
return;
|
||||
}
|
||||
@@ -162,7 +176,7 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
switch (params[0]) {
|
||||
case GL_NEAREST:
|
||||
case GL_LINEAR:
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->MagFilter = params[0];
|
||||
return;
|
||||
default:
|
||||
@@ -174,7 +188,7 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
if (texObj->WrapS == params[0])
|
||||
return;
|
||||
if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->WrapS = params[0];
|
||||
}
|
||||
return;
|
||||
@@ -183,7 +197,7 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
if (texObj->WrapT == params[0])
|
||||
return;
|
||||
if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->WrapT = params[0];
|
||||
}
|
||||
return;
|
||||
@@ -192,7 +206,7 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
if (texObj->WrapR == params[0])
|
||||
return;
|
||||
if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->WrapR = params[0];
|
||||
}
|
||||
return;
|
||||
@@ -205,7 +219,7 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glTexParameter(param)");
|
||||
return;
|
||||
}
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->BaseLevel = params[0];
|
||||
return;
|
||||
|
||||
@@ -216,7 +230,7 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "glTexParameter(param)");
|
||||
return;
|
||||
}
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->MaxLevel = params[0];
|
||||
return;
|
||||
|
||||
@@ -246,8 +260,10 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
|
||||
case GL_GENERATE_MIPMAP_SGIS:
|
||||
if (ctx->Extensions.SGIS_generate_mipmap) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
texObj->GenerateMipmap = params[0] ? GL_TRUE : GL_FALSE;
|
||||
if (texObj->GenerateMipmap != params[0]) {
|
||||
flush(ctx, texObj);
|
||||
texObj->GenerateMipmap = params[0] ? GL_TRUE : GL_FALSE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
@@ -259,8 +275,10 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
if (ctx->Extensions.ARB_shadow &&
|
||||
(params[0] == GL_NONE ||
|
||||
params[0] == GL_COMPARE_R_TO_TEXTURE_ARB)) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
texObj->CompareMode = params[0];
|
||||
if (texObj->CompareMode != params[0]) {
|
||||
flush(ctx, texObj);
|
||||
texObj->CompareMode = params[0];
|
||||
}
|
||||
}
|
||||
else {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
@@ -270,10 +288,12 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
|
||||
case GL_TEXTURE_COMPARE_FUNC_ARB:
|
||||
if (ctx->Extensions.ARB_shadow) {
|
||||
if (texObj->CompareFunc == params[0])
|
||||
return;
|
||||
switch (params[0]) {
|
||||
case GL_LEQUAL:
|
||||
case GL_GEQUAL:
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->CompareFunc = params[0];
|
||||
return;
|
||||
case GL_EQUAL:
|
||||
@@ -283,7 +303,7 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
case GL_ALWAYS:
|
||||
case GL_NEVER:
|
||||
if (ctx->Extensions.EXT_shadow_funcs) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->CompareFunc = params[0];
|
||||
return;
|
||||
}
|
||||
@@ -303,8 +323,10 @@ set_tex_parameteri(GLcontext *ctx,
|
||||
(params[0] == GL_LUMINANCE ||
|
||||
params[0] == GL_INTENSITY ||
|
||||
params[0] == GL_ALPHA)) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
texObj->DepthMode = params[0];
|
||||
if (texObj->DepthMode != params[0]) {
|
||||
flush(ctx, texObj);
|
||||
texObj->DepthMode = params[0];
|
||||
}
|
||||
}
|
||||
else {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
@@ -337,29 +359,31 @@ set_tex_parameterf(GLcontext *ctx,
|
||||
case GL_TEXTURE_MIN_LOD:
|
||||
if (texObj->MinLod == params[0])
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->MinLod = params[0];
|
||||
return;
|
||||
|
||||
case GL_TEXTURE_MAX_LOD:
|
||||
if (texObj->MaxLod == params[0])
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->MaxLod = params[0];
|
||||
return;
|
||||
|
||||
case GL_TEXTURE_PRIORITY:
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->Priority = CLAMP(params[0], 0.0F, 1.0F);
|
||||
return;
|
||||
|
||||
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
|
||||
if (ctx->Extensions.EXT_texture_filter_anisotropic) {
|
||||
if (texObj->MaxAnisotropy == params[0])
|
||||
return;
|
||||
if (params[0] < 1.0) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glTexParameter(param)" );
|
||||
return;
|
||||
}
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
/* clamp to max, that's what NVIDIA does */
|
||||
texObj->MaxAnisotropy = MIN2(params[0],
|
||||
ctx->Const.MaxTextureMaxAnisotropy);
|
||||
@@ -370,10 +394,12 @@ set_tex_parameterf(GLcontext *ctx,
|
||||
}
|
||||
return;
|
||||
|
||||
case GL_SHADOW_AMBIENT_SGIX: /* aka GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
|
||||
case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
|
||||
if (ctx->Extensions.SGIX_shadow_ambient) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
texObj->ShadowAmbient = CLAMP(params[0], 0.0F, 1.0F);
|
||||
if (texObj->ShadowAmbient != params[0]) {
|
||||
flush(ctx, texObj);
|
||||
texObj->ShadowAmbient = CLAMP(params[0], 0.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
else {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
@@ -385,14 +411,14 @@ set_tex_parameterf(GLcontext *ctx,
|
||||
/* NOTE: this is really part of OpenGL 1.4, not EXT_texture_lod_bias */
|
||||
if (ctx->Extensions.EXT_texture_lod_bias) {
|
||||
if (texObj->LodBias != params[0]) {
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->LodBias = params[0];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
flush(ctx, texObj);
|
||||
texObj->BorderColor[RCOMP] = params[0];
|
||||
texObj->BorderColor[GCOMP] = params[1];
|
||||
texObj->BorderColor[BCOMP] = params[2];
|
||||
@@ -445,8 +471,6 @@ _mesa_TexParameterf(GLenum target, GLenum pname, GLfloat param)
|
||||
set_tex_parameterf(ctx, texObj, pname, ¶m);
|
||||
}
|
||||
|
||||
texObj->_Complete = GL_FALSE;
|
||||
|
||||
if (ctx->Driver.TexParameter && ctx->ErrorValue == GL_NO_ERROR) {
|
||||
ctx->Driver.TexParameter(ctx, target, texObj, pname, ¶m);
|
||||
}
|
||||
@@ -504,8 +528,6 @@ _mesa_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params)
|
||||
set_tex_parameterf(ctx, texObj, pname, params);
|
||||
}
|
||||
|
||||
texObj->_Complete = GL_FALSE;
|
||||
|
||||
if (ctx->Driver.TexParameter && ctx->ErrorValue == GL_NO_ERROR) {
|
||||
ctx->Driver.TexParameter(ctx, target, texObj, pname, params);
|
||||
}
|
||||
@@ -541,8 +563,6 @@ _mesa_TexParameteri(GLenum target, GLenum pname, GLint param)
|
||||
set_tex_parameteri(ctx, texObj, pname, ¶m);
|
||||
}
|
||||
|
||||
texObj->_Complete = GL_FALSE;
|
||||
|
||||
if (ctx->Driver.TexParameter && ctx->ErrorValue == GL_NO_ERROR) {
|
||||
GLfloat fparam = (GLfloat) param;
|
||||
ctx->Driver.TexParameter(ctx, target, texObj, pname, &fparam);
|
||||
@@ -590,8 +610,6 @@ _mesa_TexParameteriv(GLenum target, GLenum pname, const GLint *params)
|
||||
set_tex_parameteri(ctx, texObj, pname, params);
|
||||
}
|
||||
|
||||
texObj->_Complete = GL_FALSE;
|
||||
|
||||
if (ctx->Driver.TexParameter && ctx->ErrorValue == GL_NO_ERROR) {
|
||||
GLfloat fparams[4];
|
||||
fparams[0] = INT_TO_FLOAT(params[0]);
|
||||
|
@@ -31,7 +31,7 @@
|
||||
#define MESA_MAJOR 7
|
||||
#define MESA_MINOR 4
|
||||
#define MESA_PATCH 0
|
||||
#define MESA_VERSION_STRING "7.4"
|
||||
#define MESA_VERSION_STRING "7.4-rc1"
|
||||
|
||||
/* To make version comparison easy */
|
||||
#define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
|
||||
|
@@ -442,11 +442,10 @@ _swrast_span_interpolate_z( const GLcontext *ctx, SWspan *span )
|
||||
* Compute mipmap LOD from partial derivatives.
|
||||
* This the ideal solution, as given in the OpenGL spec.
|
||||
*/
|
||||
#if 0
|
||||
static GLfloat
|
||||
compute_lambda(GLfloat dsdx, GLfloat dsdy, GLfloat dtdx, GLfloat dtdy,
|
||||
GLfloat dqdx, GLfloat dqdy, GLfloat texW, GLfloat texH,
|
||||
GLfloat s, GLfloat t, GLfloat q, GLfloat invQ)
|
||||
GLfloat
|
||||
_swrast_compute_lambda(GLfloat dsdx, GLfloat dsdy, GLfloat dtdx, GLfloat dtdy,
|
||||
GLfloat dqdx, GLfloat dqdy, GLfloat texW, GLfloat texH,
|
||||
GLfloat s, GLfloat t, GLfloat q, GLfloat invQ)
|
||||
{
|
||||
GLfloat dudx = texW * ((s + dsdx) / (q + dqdx) - s * invQ);
|
||||
GLfloat dvdx = texH * ((t + dtdx) / (q + dqdx) - t * invQ);
|
||||
@@ -458,13 +457,13 @@ compute_lambda(GLfloat dsdx, GLfloat dsdy, GLfloat dtdx, GLfloat dtdy,
|
||||
GLfloat lambda = LOG2(rho);
|
||||
return lambda;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* Compute mipmap LOD from partial derivatives.
|
||||
* This is a faster approximation than above function.
|
||||
*/
|
||||
#if 0
|
||||
GLfloat
|
||||
_swrast_compute_lambda(GLfloat dsdx, GLfloat dsdy, GLfloat dtdx, GLfloat dtdy,
|
||||
GLfloat dqdx, GLfloat dqdy, GLfloat texW, GLfloat texH,
|
||||
@@ -485,6 +484,7 @@ _swrast_compute_lambda(GLfloat dsdx, GLfloat dsdy, GLfloat dtdx, GLfloat dtdy,
|
||||
lambda = LOG2(rho);
|
||||
return lambda;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user