Add detection for:

Texture::F_rgba16
Texture::F_rgba32

Change Lru debug display to error level, so it can still display in OPT4.

Set shader model to 0 if Cg is not used.
This commit is contained in:
aignacio_sf 2006-12-08 22:46:04 +00:00
parent c8c7eaf6fb
commit 65aee90d3c

View File

@ -1068,23 +1068,23 @@ DBG_S dxgsg9_cat.debug ( ) << "@@@@@@@@@@ end_frame \n"; DBG_E
frames = dx_lru_debug_frames_til_output; frames = dx_lru_debug_frames_til_output;
if (dx_lru_debug && frames > 0 && (_lru -> _m.current_frame_identifier % frames) == 0) { if (dx_lru_debug && frames > 0 && (_lru -> _m.current_frame_identifier % frames) == 0) {
if (dxgsg9_cat.is_debug()) { if (dxgsg9_cat.is_error()) {
UINT available_texture_memory; UINT available_texture_memory;
available_texture_memory = _d3d_device->GetAvailableTextureMem ( ); available_texture_memory = _d3d_device->GetAvailableTextureMem ( );
dxgsg9_cat.debug() << "* LRU: total_pages " << _lru -> _m.total_pages << "/" << _lru -> _m.maximum_pages << " upf " << dx_lru_maximum_page_updates_per_frame << " fto " << dx_lru_debug_frames_til_output << "\n"; dxgsg9_cat.error() << "* LRU: total_pages " << _lru -> _m.total_pages << "/" << _lru -> _m.maximum_pages << " upf " << dx_lru_maximum_page_updates_per_frame << " fto " << dx_lru_debug_frames_til_output << "\n";
dxgsg9_cat.debug() << "* DX available_texture_memory = " << available_texture_memory << "\n"; dxgsg9_cat.error() << "* DX available_texture_memory = " << available_texture_memory << "\n";
dxgsg9_cat.debug() << "* delta_memory " << _available_texture_memory - (available_texture_memory + (_lru -> _m.maximum_memory - _lru -> _m.available_memory)) << "\n"; dxgsg9_cat.error() << "* delta_memory " << _available_texture_memory - (available_texture_memory + (_lru -> _m.maximum_memory - _lru -> _m.available_memory)) << "\n";
dxgsg9_cat.debug() << "* available_memory " << _lru -> _m.available_memory << "/" << _lru -> _m.maximum_memory << "\n"; dxgsg9_cat.error() << "* available_memory " << _lru -> _m.available_memory << "/" << _lru -> _m.maximum_memory << "\n";
dxgsg9_cat.debug() << "* total lifetime pages created " << _lru -> _m.identifier << "\n"; dxgsg9_cat.error() << "* total lifetime pages created " << _lru -> _m.identifier << "\n";
dxgsg9_cat.debug() << "* total_lifetime_page_ins " << _lru -> _m.total_lifetime_page_ins << "\n"; dxgsg9_cat.error() << "* total_lifetime_page_ins " << _lru -> _m.total_lifetime_page_ins << "\n";
dxgsg9_cat.debug() << "* total_lifetime_page_outs " << _lru -> _m.total_lifetime_page_outs << "\n"; dxgsg9_cat.error() << "* total_lifetime_page_outs " << _lru -> _m.total_lifetime_page_outs << "\n";
dxgsg9_cat.debug() << "* total_page_access " << _lru -> _m.total_page_access << " avg page access " << ((float) _lru -> _m.total_page_access / (float) frames) << "\n"; dxgsg9_cat.error() << "* total_page_access " << _lru -> _m.total_page_access << " avg page access " << ((float) _lru -> _m.total_page_access / (float) frames) << "\n";
dxgsg9_cat.debug() << "* total_lru_pages_in_pool " << _lru -> _m.total_lru_pages_in_pool << "\n"; dxgsg9_cat.error() << "* total_lru_pages_in_pool " << _lru -> _m.total_lru_pages_in_pool << "\n";
dxgsg9_cat.debug() << "* total_lru_pages_in_free_pool " << _lru -> _m.total_lru_pages_in_free_pool << "\n"; dxgsg9_cat.error() << "* total_lru_pages_in_free_pool " << _lru -> _m.total_lru_pages_in_free_pool << "\n";
dxgsg9_cat.debug() << "* avg unique page access size " << (_lru -> _m.total_page_access_size / (double) frames) << "\n"; dxgsg9_cat.error() << "* avg unique page access size " << (_lru -> _m.total_page_access_size / (double) frames) << "\n";
dxgsg9_cat.debug() << "* avg of all page access size " << ((_lru -> _m.total_page_access_size + _lru -> _m.total_page_all_access_size) / (double) frames) << "\n"; dxgsg9_cat.error() << "* avg of all page access size " << ((_lru -> _m.total_page_access_size + _lru -> _m.total_page_all_access_size) / (double) frames) << "\n";
_lru -> _m.total_page_access = 0; _lru -> _m.total_page_access = 0;
_lru -> _m.total_page_access_size = 0; _lru -> _m.total_page_access_size = 0;
@ -1096,7 +1096,7 @@ DBG_S dxgsg9_cat.debug ( ) << "@@@@@@@@@@ end_frame \n"; DBG_E
for (index = 0; index < LPP_TotalPriorities; index++) { for (index = 0; index < LPP_TotalPriorities; index++) {
if (_lru -> _m.lru_page_count_array [index]) { if (_lru -> _m.lru_page_count_array [index]) {
dxgsg9_cat.debug() << "* priority " << index << " pages " << _lru -> _m.lru_page_count_array [index] << "\n"; dxgsg9_cat.error() << "* priority " << index << " pages " << _lru -> _m.lru_page_count_array [index] << "\n";
} }
} }
@ -1106,7 +1106,7 @@ DBG_S dxgsg9_cat.debug ( ) << "@@@@@@@@@@ end_frame \n"; DBG_E
PageTypeStatistics *page_type_statistics; PageTypeStatistics *page_type_statistics;
page_type_statistics = &_lru -> _m.page_type_statistics_array [index]; page_type_statistics = &_lru -> _m.page_type_statistics_array [index];
dxgsg9_cat.debug() << "\n" << dxgsg9_cat.error() << "\n" <<
" page type " << index << " page type " << index <<
" total pages " << page_type_statistics -> total_pages << " total pages " << page_type_statistics -> total_pages <<
" in " << page_type_statistics -> total_pages_in << " in " << page_type_statistics -> total_pages_in <<
@ -2396,6 +2396,7 @@ reset() {
_vertex_shader_maximum_constants = d3d_caps.MaxVertexShaderConst; _vertex_shader_maximum_constants = d3d_caps.MaxVertexShaderConst;
#ifdef HAVE_CGDX9
switch (_pixel_shader_version_major) switch (_pixel_shader_version_major)
{ {
case 0: case 0:
@ -2419,6 +2420,9 @@ reset() {
_shader_model = SM_40; _shader_model = SM_40;
break; break;
} }
#else
_shader_model = SM_00;
#endif
_auto_detect_shader_model = _shader_model; _auto_detect_shader_model = _shader_model;
_supports_stream_offset = (d3d_caps.DevCaps2 & D3DDEVCAPS2_STREAMOFFSET) != 0; _supports_stream_offset = (d3d_caps.DevCaps2 & D3DDEVCAPS2_STREAMOFFSET) != 0;
@ -2497,9 +2501,9 @@ reset() {
vertex_profile = cgD3D9GetLatestVertexProfile( ); vertex_profile = cgD3D9GetLatestVertexProfile( );
pixel_profile = cgD3D9GetLatestPixelProfile( ); pixel_profile = cgD3D9GetLatestPixelProfile( );
const char *vertex_profile_str = const char *vertex_profile_str =
cgGetProfileString(vertex_profile); cgGetProfileString(vertex_profile);
const char *pixel_profile_str = const char *pixel_profile_str =
cgGetProfileString(pixel_profile); cgGetProfileString(pixel_profile);
if (vertex_profile_str == NULL) { if (vertex_profile_str == NULL) {
@ -2717,6 +2721,17 @@ reset() {
} }
} }
_screen->_supports_rgba16f_texture_format = false;
hr = _screen->_d3d9->CheckDeviceFormat(_screen->_card_id, D3DDEVTYPE_HAL, _screen->_display_mode.Format, 0x0, D3DRTYPE_TEXTURE, D3DFMT_A16B16G16R16F);
if (SUCCEEDED(hr)){
_screen->_supports_rgba16f_texture_format = true;
}
_screen->_supports_rgba32f_texture_format = false;
hr = _screen->_d3d9->CheckDeviceFormat(_screen->_card_id, D3DDEVTYPE_HAL, _screen->_display_mode.Format, 0x0, D3DRTYPE_TEXTURE, D3DFMT_A32B32G32R32F);
if (SUCCEEDED(hr)){
_screen->_supports_rgba32f_texture_format = true;
}
// s3 virge drivers sometimes give crap values for these // s3 virge drivers sometimes give crap values for these
if (_screen->_d3dcaps.MaxTextureWidth == 0) if (_screen->_d3dcaps.MaxTextureWidth == 0)
_screen->_d3dcaps.MaxTextureWidth = 256; _screen->_d3dcaps.MaxTextureWidth = 256;
@ -3775,12 +3790,12 @@ update_standard_texture_bindings() {
// that there are 3-d texture coordinates, because of the // that there are 3-d texture coordinates, because of the
// 3-component texture coordinate in get_constant_value(). // 3-component texture coordinate in get_constant_value().
{ {
set_texture_stage_state(i, D3DTSS_TEXCOORDINDEX, set_texture_stage_state(i, D3DTSS_TEXCOORDINDEX,
texcoord_index | D3DTSS_TCI_CAMERASPACEPOSITION); texcoord_index | D3DTSS_TCI_CAMERASPACEPOSITION);
texcoord_dimensions = 3; texcoord_dimensions = 3;
const TexCoord3f &v = _effective_tex_gen->get_constant_value(stage); const TexCoord3f &v = _effective_tex_gen->get_constant_value(stage);
CPT(TransformState) squash = CPT(TransformState) squash =
TransformState::make_pos_hpr_scale(v, LVecBase3f::zero(), TransformState::make_pos_hpr_scale(v, LVecBase3f::zero(),
LVecBase3f::zero()); LVecBase3f::zero());
tex_mat = tex_mat->compose(squash); tex_mat = tex_mat->compose(squash);
@ -4748,7 +4763,7 @@ DBG_S dxgsg9_cat.debug ( ) << "- - - - - DXGraphicsStateGuardian9::show_frame\n"
print_memory_stats ( ); print_memory_stats ( );
reset_memory_stats ( ); reset_memory_stats ( );
*/ */
HRESULT hr; HRESULT hr;