nv40: depth textures

This commit is contained in:
Ben Skeggs
2007-12-11 14:53:37 +11:00
parent ce0e274c7c
commit b34952c758
3 changed files with 40 additions and 1 deletions
+4 -1
View File
@@ -17,6 +17,7 @@ nv40_is_format_supported(struct pipe_context *pipe, enum pipe_format format,
case PIPE_FORMAT_A8R8G8B8_UNORM:
case PIPE_FORMAT_R5G6B5_UNORM:
case PIPE_FORMAT_Z24S8_UNORM:
case PIPE_FORMAT_Z16_UNORM:
return TRUE;
default:
break;
@@ -32,6 +33,8 @@ nv40_is_format_supported(struct pipe_context *pipe, enum pipe_format format,
case PIPE_FORMAT_U_A8:
case PIPE_FORMAT_U_I8:
case PIPE_FORMAT_U_A8_L8:
case PIPE_FORMAT_Z16_UNORM:
case PIPE_FORMAT_Z24S8_UNORM:
return TRUE;
default:
break;
@@ -83,7 +86,7 @@ nv40_get_param(struct pipe_context *pipe, int param)
case PIPE_CAP_OCCLUSION_QUERY:
return 1;
case PIPE_CAP_TEXTURE_SHADOW_MAP:
return 0;
return 1;
case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
return 13;
case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
+31
View File
@@ -244,6 +244,37 @@ nv40_sampler_state_create(struct pipe_context *pipe,
ps->filt = filter;
if (cso->compare_mode == PIPE_TEX_COMPARE_R_TO_TEXTURE) {
switch (cso->compare_func) {
case PIPE_FUNC_NEVER:
ps->wrap |= (0x0 << 28);
break;
case PIPE_FUNC_GREATER:
ps->wrap |= (0x1 << 28);
break;
case PIPE_FUNC_EQUAL:
ps->wrap |= (0x2 << 28);
break;
case PIPE_FUNC_GEQUAL:
ps->wrap |= (0x3 << 28);
break;
case PIPE_FUNC_LESS:
ps->wrap |= (0x4 << 28);
break;
case PIPE_FUNC_NOTEQUAL:
ps->wrap |= (0x5 << 28);
break;
case PIPE_FUNC_LEQUAL:
ps->wrap |= (0x6 << 28);
break;
case PIPE_FUNC_ALWAYS:
ps->wrap |= (0x7 << 28);
break;
default:
break;
}
}
ps->bcol = ((float_to_ubyte(cso->border_color[3]) << 24) |
(float_to_ubyte(cso->border_color[0]) << 16) |
(float_to_ubyte(cso->border_color[1]) << 8) |
+5
View File
@@ -12,6 +12,9 @@
NV40TCL_TEX_SWIZZLE_S1_Z_##ts1z | NV40TCL_TEX_SWIZZLE_S1_W_##ts1w), \
}
#define NV40TCL_TEX_FORMAT_FORMAT_Z16 0x1200
#define NV40TCL_TEX_FORMAT_FORMAT_Z24 0x1000
struct nv40_texture_format {
boolean defined;
uint pipe;
@@ -29,6 +32,8 @@ nv40_texture_formats[] = {
_(U_A8 , L8 , ZERO, ZERO, ZERO, S1, X, X, X, X),
_(U_I8 , L8 , S1, S1, S1, S1, X, X, X, X),
_(U_A8_L8 , A8L8 , S1, S1, S1, S1, Z, W, X, Y),
_(Z16_UNORM , Z16 , S1, S1, S1, ONE, X, X, X, X),
_(Z24S8_UNORM , Z24 , S1, S1, S1, ONE, X, X, X, X),
// _(RGB_DXT1 , 0x86, S1, S1, S1, ONE, X, Y, Z, W, 0x00, 0x00),
// _(RGBA_DXT1 , 0x86, S1, S1, S1, S1, X, Y, Z, W, 0x00, 0x00),
// _(RGBA_DXT3 , 0x87, S1, S1, S1, S1, X, Y, Z, W, 0x00, 0x00),