nv40: depth textures
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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) |
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user