i965: fix DEPTH_TEXTURE_MODE (bug #14220)
This commit is contained in:
parent
c9c64a100d
commit
6e620162a1
|
@ -724,9 +724,6 @@ static void emit_tex( struct brw_wm_compile *c,
|
||||||
responseLength,
|
responseLength,
|
||||||
msgLength,
|
msgLength,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
if (shadow)
|
|
||||||
brw_MOV(p, dst[3], brw_imm_f(1.0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ static GLuint translate_tex_target( GLenum target )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static GLuint translate_tex_format( GLuint mesa_format )
|
static GLuint translate_tex_format( GLuint mesa_format, GLenum depth_mode )
|
||||||
{
|
{
|
||||||
switch( mesa_format ) {
|
switch( mesa_format ) {
|
||||||
case MESA_FORMAT_L8:
|
case MESA_FORMAT_L8:
|
||||||
|
@ -114,7 +114,12 @@ static GLuint translate_tex_format( GLuint mesa_format )
|
||||||
return BRW_SURFACEFORMAT_FXT1;
|
return BRW_SURFACEFORMAT_FXT1;
|
||||||
|
|
||||||
case MESA_FORMAT_Z16:
|
case MESA_FORMAT_Z16:
|
||||||
|
if (depth_mode == GL_INTENSITY)
|
||||||
return BRW_SURFACEFORMAT_I16_UNORM;
|
return BRW_SURFACEFORMAT_I16_UNORM;
|
||||||
|
else if (depth_mode == GL_ALPHA)
|
||||||
|
return BRW_SURFACEFORMAT_A16_UNORM;
|
||||||
|
else
|
||||||
|
return BRW_SURFACEFORMAT_L16_UNORM;
|
||||||
|
|
||||||
case MESA_FORMAT_RGB_DXT1:
|
case MESA_FORMAT_RGB_DXT1:
|
||||||
return BRW_SURFACEFORMAT_DXT1_RGB;
|
return BRW_SURFACEFORMAT_DXT1_RGB;
|
||||||
|
@ -143,7 +148,7 @@ static GLuint translate_tex_format( GLuint mesa_format )
|
||||||
}
|
}
|
||||||
|
|
||||||
struct brw_wm_surface_key {
|
struct brw_wm_surface_key {
|
||||||
GLenum target;
|
GLenum target, depthmode;
|
||||||
dri_bo *bo;
|
dri_bo *bo;
|
||||||
GLint format;
|
GLint format;
|
||||||
GLint first_level, last_level;
|
GLint first_level, last_level;
|
||||||
|
@ -163,7 +168,7 @@ brw_create_texture_surface( struct brw_context *brw,
|
||||||
|
|
||||||
surf.ss0.mipmap_layout_mode = BRW_SURFACE_MIPMAPLAYOUT_BELOW;
|
surf.ss0.mipmap_layout_mode = BRW_SURFACE_MIPMAPLAYOUT_BELOW;
|
||||||
surf.ss0.surface_type = translate_tex_target(key->target);
|
surf.ss0.surface_type = translate_tex_target(key->target);
|
||||||
surf.ss0.surface_format = translate_tex_format(key->format);
|
surf.ss0.surface_format = translate_tex_format(key->format, key->depthmode);
|
||||||
|
|
||||||
/* This is ok for all textures with channel width 8bit or less:
|
/* This is ok for all textures with channel width 8bit or less:
|
||||||
*/
|
*/
|
||||||
|
@ -219,6 +224,7 @@ brw_update_texture_surface( GLcontext *ctx, GLuint unit )
|
||||||
|
|
||||||
memset(&key, 0, sizeof(key));
|
memset(&key, 0, sizeof(key));
|
||||||
key.target = tObj->Target;
|
key.target = tObj->Target;
|
||||||
|
key.depthmode = tObj->DepthMode;
|
||||||
key.format = firstImage->TexFormat->MesaFormat;
|
key.format = firstImage->TexFormat->MesaFormat;
|
||||||
key.bo = intelObj->mt->region->buffer;
|
key.bo = intelObj->mt->region->buffer;
|
||||||
key.first_level = intelObj->firstLevel;
|
key.first_level = intelObj->firstLevel;
|
||||||
|
|
Loading…
Reference in New Issue