Added ctx->Driver.GenerateMipmap() driver hook
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
#include "buffers.h"
|
#include "buffers.h"
|
||||||
#include "context.h"
|
#include "context.h"
|
||||||
#include "framebuffer.h"
|
#include "framebuffer.h"
|
||||||
|
#include "mipmap.h"
|
||||||
#include "program.h"
|
#include "program.h"
|
||||||
#include "prog_execute.h"
|
#include "prog_execute.h"
|
||||||
#include "queryobj.h"
|
#include "queryobj.h"
|
||||||
@@ -99,6 +100,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver)
|
|||||||
driver->CopyTexSubImage1D = _swrast_copy_texsubimage1d;
|
driver->CopyTexSubImage1D = _swrast_copy_texsubimage1d;
|
||||||
driver->CopyTexSubImage2D = _swrast_copy_texsubimage2d;
|
driver->CopyTexSubImage2D = _swrast_copy_texsubimage2d;
|
||||||
driver->CopyTexSubImage3D = _swrast_copy_texsubimage3d;
|
driver->CopyTexSubImage3D = _swrast_copy_texsubimage3d;
|
||||||
|
driver->GenerateMipmap = _mesa_generate_mipmap;
|
||||||
driver->TestProxyTexImage = _mesa_test_proxy_teximage;
|
driver->TestProxyTexImage = _mesa_test_proxy_teximage;
|
||||||
driver->CompressedTexImage1D = _mesa_store_compressed_teximage1d;
|
driver->CompressedTexImage1D = _mesa_store_compressed_teximage1d;
|
||||||
driver->CompressedTexImage2D = _mesa_store_compressed_teximage2d;
|
driver->CompressedTexImage2D = _mesa_store_compressed_teximage2d;
|
||||||
|
@@ -332,6 +332,13 @@ struct dd_function_table {
|
|||||||
GLint x, GLint y,
|
GLint x, GLint y,
|
||||||
GLsizei width, GLsizei height );
|
GLsizei width, GLsizei height );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by glGenerateMipmap() or when GL_GENERATE_MIPMAP_SGIS is enabled.
|
||||||
|
*/
|
||||||
|
void (*GenerateMipmap)(GLcontext *ctx, GLenum target,
|
||||||
|
const struct gl_texture_unit *texUnit,
|
||||||
|
struct gl_texture_object *texObj);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called by glTexImage[123]D when user specifies a proxy texture
|
* Called by glTexImage[123]D when user specifies a proxy texture
|
||||||
* target.
|
* target.
|
||||||
|
@@ -1560,7 +1560,7 @@ _mesa_GenerateMipmapEXT(GLenum target)
|
|||||||
|
|
||||||
/* XXX this might not handle cube maps correctly */
|
/* XXX this might not handle cube maps correctly */
|
||||||
_mesa_lock_texture(ctx, texObj);
|
_mesa_lock_texture(ctx, texObj);
|
||||||
_mesa_generate_mipmap(ctx, target, texUnit, texObj);
|
ctx->Driver.GenerateMipmap(ctx, target, texUnit, texObj);
|
||||||
_mesa_unlock_texture(ctx, texObj);
|
_mesa_unlock_texture(ctx, texObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2917,9 +2917,9 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
|
|
||||||
/* GL_SGIS_generate_mipmap */
|
/* GL_SGIS_generate_mipmap */
|
||||||
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
||||||
_mesa_generate_mipmap(ctx, target,
|
ctx->Driver.GenerateMipmap(ctx, target,
|
||||||
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
||||||
texObj);
|
texObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mesa_unmap_teximage_pbo(ctx, packing);
|
_mesa_unmap_teximage_pbo(ctx, packing);
|
||||||
@@ -3003,9 +3003,9 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
|
|
||||||
/* GL_SGIS_generate_mipmap */
|
/* GL_SGIS_generate_mipmap */
|
||||||
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
||||||
_mesa_generate_mipmap(ctx, target,
|
ctx->Driver.GenerateMipmap(ctx, target,
|
||||||
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
||||||
texObj);
|
texObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mesa_unmap_teximage_pbo(ctx, packing);
|
_mesa_unmap_teximage_pbo(ctx, packing);
|
||||||
@@ -3079,9 +3079,9 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
|
|
||||||
/* GL_SGIS_generate_mipmap */
|
/* GL_SGIS_generate_mipmap */
|
||||||
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
||||||
_mesa_generate_mipmap(ctx, target,
|
ctx->Driver.GenerateMipmap(ctx, target,
|
||||||
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
||||||
texObj);
|
texObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mesa_unmap_teximage_pbo(ctx, packing);
|
_mesa_unmap_teximage_pbo(ctx, packing);
|
||||||
@@ -3127,9 +3127,9 @@ _mesa_store_texsubimage1d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
|
|
||||||
/* GL_SGIS_generate_mipmap */
|
/* GL_SGIS_generate_mipmap */
|
||||||
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
||||||
_mesa_generate_mipmap(ctx, target,
|
ctx->Driver.GenerateMipmap(ctx, target,
|
||||||
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
||||||
texObj);
|
texObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mesa_unmap_teximage_pbo(ctx, packing);
|
_mesa_unmap_teximage_pbo(ctx, packing);
|
||||||
@@ -3182,9 +3182,9 @@ _mesa_store_texsubimage2d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
|
|
||||||
/* GL_SGIS_generate_mipmap */
|
/* GL_SGIS_generate_mipmap */
|
||||||
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
||||||
_mesa_generate_mipmap(ctx, target,
|
ctx->Driver.GenerateMipmap(ctx, target,
|
||||||
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
||||||
texObj);
|
texObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mesa_unmap_teximage_pbo(ctx, packing);
|
_mesa_unmap_teximage_pbo(ctx, packing);
|
||||||
@@ -3237,9 +3237,9 @@ _mesa_store_texsubimage3d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
|
|
||||||
/* GL_SGIS_generate_mipmap */
|
/* GL_SGIS_generate_mipmap */
|
||||||
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
||||||
_mesa_generate_mipmap(ctx, target,
|
ctx->Driver.GenerateMipmap(ctx, target,
|
||||||
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
||||||
texObj);
|
texObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mesa_unmap_teximage_pbo(ctx, packing);
|
_mesa_unmap_teximage_pbo(ctx, packing);
|
||||||
@@ -3313,9 +3313,9 @@ _mesa_store_compressed_teximage2d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
|
|
||||||
/* GL_SGIS_generate_mipmap */
|
/* GL_SGIS_generate_mipmap */
|
||||||
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
||||||
_mesa_generate_mipmap(ctx, target,
|
ctx->Driver.GenerateMipmap(ctx, target,
|
||||||
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
||||||
texObj);
|
texObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mesa_unmap_teximage_pbo(ctx, &ctx->Unpack);
|
_mesa_unmap_teximage_pbo(ctx, &ctx->Unpack);
|
||||||
@@ -3425,9 +3425,9 @@ _mesa_store_compressed_texsubimage2d(GLcontext *ctx, GLenum target,
|
|||||||
|
|
||||||
/* GL_SGIS_generate_mipmap */
|
/* GL_SGIS_generate_mipmap */
|
||||||
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
||||||
_mesa_generate_mipmap(ctx, target,
|
ctx->Driver.GenerateMipmap(ctx, target,
|
||||||
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
|
||||||
texObj);
|
texObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mesa_unmap_teximage_pbo(ctx, &ctx->Unpack);
|
_mesa_unmap_teximage_pbo(ctx, &ctx->Unpack);
|
||||||
|
Reference in New Issue
Block a user