diff --git a/panda/src/dxgsg8/dxTextureContext8.cxx b/panda/src/dxgsg8/dxTextureContext8.cxx index 20008e41a7..a6d9e126e1 100644 --- a/panda/src/dxgsg8/dxTextureContext8.cxx +++ b/panda/src/dxgsg8/dxTextureContext8.cxx @@ -38,7 +38,7 @@ DXTextureContext8(Texture *tex) : TextureContext(tex) { if (dxgsg8_cat.is_spam()) { - dxgsg8_cat.spam() + dxgsg8_cat.spam() << "Creating DX texture [" << tex->get_name() << "], minfilter(" << tex->get_minfilter() << "), magfilter(" << tex->get_magfilter() << "), anisodeg(" << tex->get_anisotropic_degree() << ")\n"; } @@ -106,7 +106,7 @@ create_texture(DXScreenData &scrn) { if (num_alpha_bits > 0) { if (num_color_channels == 3) { dxgsg8_cat.error() - << "texture " << _texture->get_name() + << "texture " << _texture->get_name() << " has no inherent alpha channel, but alpha format is requested!\n"; } } @@ -222,7 +222,7 @@ create_texture(DXScreenData &scrn) { } // checks for SQUARE reqmt (nvidia riva128 needs this) - if ((target_width != target_height) && + if ((target_width != target_height) && (scrn._d3dcaps.TextureCaps & D3DPTEXTURECAPS_SQUAREONLY) != 0) { // assume pow2 textures. sum exponents, divide by 2 rounding down // to get sq size @@ -410,7 +410,7 @@ create_texture(DXScreenData &scrn) { nassertr(num_color_channels == 4, false); CHECK_FOR_FMT(A4R4G4B4, Conv32to16_4444); break; - default: + default: nassertr(false, false); // problem in get_bits_per_pixel()? } } @@ -457,7 +457,7 @@ create_texture(DXScreenData &scrn) { // if we've gotten here, haven't found a match dxgsg8_cat.error() << error_message << ": " << _texture->get_name() << endl - << "NumColorChannels: " << num_color_channels << "; NumAlphaBits: " + << "NumColorChannels: " << num_color_channels << "; NumAlphaBits: " << num_alpha_bits << "; targetbpp: " <get_anisotropic_degree(); - if ((aniso_degree>scrn._d3dcaps.MaxAnisotropy) || + if ((aniso_degree>scrn._d3dcaps.MaxAnisotropy) || dx_force_anisotropic_filtering) { aniso_degree = scrn._d3dcaps.MaxAnisotropy; } @@ -711,7 +711,7 @@ delete_texture() { //////////////////////////////////////////////////////////////////// HRESULT DXTextureContext8:: d3d_surface_to_texture(RECT &source_rect, IDirect3DSurface8 *d3d_surface, - bool inverted, Texture *result, int z) { + bool inverted, Texture *result, int z) { // still need custom conversion since d3d/d3dx has no way to convert // arbitrary fmt to ARGB in-memory user buffer @@ -795,7 +795,7 @@ d3d_surface_to_texture(RECT &source_rect, IDirect3DSurface8 *d3d_surface, if (dxgsg8_cat.is_debug()) { dxgsg8_cat.debug() << "d3d_surface_to_texture converting " - << D3DFormatStr(surface_desc.Format) + << D3DFormatStr(surface_desc.Format) << " DDSurf to " << num_components << "-channel panda Texture\n"; } @@ -813,7 +813,7 @@ d3d_surface_to_texture(RECT &source_rect, IDirect3DSurface8 *d3d_surface, source_word = ((DWORD*)surface_bytes) + x_window_offset; memcpy(dest_line, source_word, byte_pitch); dest_line += byte_pitch; - surface_bytes += byte_pitch; + surface_bytes += byte_pitch; } } else { // 24bpp texture case (numComponents == 3) @@ -832,9 +832,9 @@ d3d_surface_to_texture(RECT &source_rect, IDirect3DSurface8 *d3d_surface, *dest_byte++ = b; *dest_byte++ = g; *dest_byte++ = r; - source_word++; + source_word++; } - surface_bytes += byte_pitch; + surface_bytes += byte_pitch; } } break; @@ -854,9 +854,9 @@ d3d_surface_to_texture(RECT &source_rect, IDirect3DSurface8 *d3d_surface, r = *source_byte++; *dest_word = 0xFF000000 | (r << 16) | (g << 8) | b; - dest_word++; + dest_word++; } - surface_bytes += byte_pitch; + surface_bytes += byte_pitch; } } else { // 24bpp texture case (numComponents == 3) @@ -864,7 +864,7 @@ d3d_surface_to_texture(RECT &source_rect, IDirect3DSurface8 *d3d_surface, source_byte = surface_bytes + x_window_offset * 3 * sizeof(BYTE); memcpy(dest_byte, source_byte, byte_pitch); dest_byte += byte_pitch; - surface_bytes += byte_pitch; + surface_bytes += byte_pitch; } } break; @@ -923,10 +923,10 @@ d3d_surface_to_texture(RECT &source_rect, IDirect3DSurface8 *d3d_surface, // alpha is just set to 0xFF *dest_word = 0xFF000000 | (r << 16) | (g << 8) | b; - source_word++; - dest_word++; + source_word++; + dest_word++; } - surface_bytes += byte_pitch; + surface_bytes += byte_pitch; } } else { // 24bpp texture case (numComponents == 3) @@ -940,12 +940,13 @@ d3d_surface_to_texture(RECT &source_rect, IDirect3DSurface8 *d3d_surface, g = (pixel & greenmask) >> greenshift; r = (pixel & redmask) >> redshift; - *dest_byte += b; - *dest_byte += g; - *dest_byte += r; - source_word++; + *dest_byte++ = b; + *dest_byte++ = g; + *dest_byte++ = r; + + source_word++; } - surface_bytes += byte_pitch; + surface_bytes += byte_pitch; } } break; @@ -963,7 +964,7 @@ d3d_surface_to_texture(RECT &source_rect, IDirect3DSurface8 *d3d_surface, //////////////////////////////////////////////////////////////////// // Function: DXTextureContext8::fill_d3d_texture_pixels // Access: Private -// Description: +// Description: //////////////////////////////////////////////////////////////////// HRESULT DXTextureContext8:: fill_d3d_texture_pixels() { @@ -1007,7 +1008,7 @@ fill_d3d_texture_pixels() { if (_texture->get_texture_type() == Texture::TT_cube_map) { nassertr(IS_VALID_PTR(_d3d_cube_texture), E_FAIL); hr = _d3d_cube_texture->GetCubeMapSurface((D3DCUBEMAP_FACES)di, 0, &mip_level_0); - } else { + } else { nassertr(IS_VALID_PTR(_d3d_2d_texture), E_FAIL); hr = _d3d_2d_texture->GetSurfaceLevel(0, &mip_level_0); } @@ -1023,16 +1024,16 @@ fill_d3d_texture_pixels() { source_size.left = source_size.top = 0; source_size.right = orig_width; source_size.bottom = orig_height; - + UINT source_row_byte_length = orig_width * num_color_channels; - + DWORD level_0_filter, mip_filter_flags; using_temp_buffer = false; - + // need filtering if size changes, (also if bitdepth reduced (need // dithering)??) level_0_filter = D3DX_FILTER_LINEAR ; //| D3DX_FILTER_DITHER; //dithering looks ugly on i810 for 4444 textures - + // D3DXLoadSurfaceFromMemory will load black luminance and we want // full white, so convert to explicit luminance-alpha format if (_d3d_format == D3DFMT_A8) { @@ -1044,7 +1045,7 @@ fill_d3d_texture_pixels() { goto exit_FillDDSurf; } using_temp_buffer = true; - + USHORT *out_pixels = temp_buffer; BYTE *source_pixels = pixels + component_width - 1; for (UINT y = 0; y < orig_height; y++) { @@ -1057,17 +1058,17 @@ fill_d3d_texture_pixels() { *out_pixels = ((*source_pixels) << 8 ) | 0xFF; } } - + source_format = D3DFMT_A8L8; source_row_byte_length = orig_width * sizeof(USHORT); pixels = (BYTE*)temp_buffer; - + } else if (component_width != 1) { // Convert from 16-bit per channel (or larger) format down to // 8-bit per channel. This throws away precision in the // original image, but dx8 doesn't support high-precision images // anyway. - + int num_components = _texture->get_num_components(); int num_pixels = orig_width * orig_height * num_components; BYTE *temp_buffer = new BYTE[num_pixels]; @@ -1076,7 +1077,7 @@ fill_d3d_texture_pixels() { goto exit_FillDDSurf; } using_temp_buffer = true; - + BYTE *source_pixels = pixels + component_width - 1; for (int i = 0; i < num_pixels; i++) { temp_buffer[i] = *source_pixels; @@ -1084,15 +1085,15 @@ fill_d3d_texture_pixels() { } pixels = (BYTE*)temp_buffer; } - - + + // filtering may be done here if texture if targetsize != origsize #ifdef DO_PSTATS GraphicsStateGuardian::_data_transferred_pcollector.add_level(source_row_byte_length * orig_height); #endif hr = D3DXLoadSurfaceFromMemory (mip_level_0, (PALETTEENTRY*)NULL, (RECT*)NULL, (LPCVOID)pixels, - source_format, source_row_byte_length, (PALETTEENTRY*)NULL, + source_format, source_row_byte_length, (PALETTEENTRY*)NULL, &source_size, level_0_filter, (D3DCOLOR)0x0); if (FAILED(hr)) { dxgsg8_cat.error() @@ -1100,17 +1101,17 @@ fill_d3d_texture_pixels() { << ", D3DXLoadSurfFromMem failed" << D3DERRORSTRING(hr); goto exit_FillDDSurf; } - + if (_has_mipmaps) { if (!dx_use_triangle_mipgen_filter) { mip_filter_flags = D3DX_FILTER_BOX; } else { mip_filter_flags = D3DX_FILTER_TRIANGLE; } - + // mip_filter_flags| = D3DX_FILTER_DITHER; - - hr = D3DXFilterTexture(_d3d_texture, (PALETTEENTRY*)NULL, 0, + + hr = D3DXFilterTexture(_d3d_texture, (PALETTEENTRY*)NULL, 0, mip_filter_flags); if (FAILED(hr)) { dxgsg8_cat.error() @@ -1125,7 +1126,7 @@ fill_d3d_texture_pixels() { RELEASE(mip_level_0, dxgsg8, "FillDDSurf MipLev0 texture ptr", RELEASE_ONCE); } return hr; - + exit_FillDDSurf: if (using_temp_buffer) { SAFE_DELETE_ARRAY(pixels); @@ -1137,7 +1138,7 @@ fill_d3d_texture_pixels() { //////////////////////////////////////////////////////////////////// // Function: DXTextureContext8::fill_d3d_volume_texture_pixels // Access: Private -// Description: +// Description: //////////////////////////////////////////////////////////////////// HRESULT DXTextureContext8:: fill_d3d_volume_texture_pixels() { @@ -1186,17 +1187,17 @@ fill_d3d_volume_texture_pixels() { source_size.Right = orig_width; source_size.Bottom = orig_height; source_size.Back = orig_depth; - + UINT source_row_byte_length = orig_width * num_color_channels; UINT source_page_byte_length = orig_height * source_row_byte_length; - + DWORD level_0_filter, mip_filter_flags; using_temp_buffer = false; - + // need filtering if size changes, (also if bitdepth reduced (need // dithering)??) level_0_filter = D3DX_FILTER_LINEAR ; //| D3DX_FILTER_DITHER; //dithering looks ugly on i810 for 4444 textures - + // D3DXLoadSurfaceFromMemory will load black luminance and we want // full white, so convert to explicit luminance-alpha format if (_d3d_format == D3DFMT_A8) { @@ -1208,7 +1209,7 @@ fill_d3d_volume_texture_pixels() { goto exit_FillDDSurf; } using_temp_buffer = true; - + USHORT *out_pixels = temp_buffer; BYTE *source_pixels = pixels + component_width - 1; for (UINT z = 0; z < orig_depth; z++) { @@ -1223,18 +1224,18 @@ fill_d3d_volume_texture_pixels() { } } } - + source_format = D3DFMT_A8L8; source_row_byte_length = orig_width * sizeof(USHORT); source_page_byte_length = orig_height * source_row_byte_length; pixels = (BYTE*)temp_buffer; - + } else if (component_width != 1) { // Convert from 16-bit per channel (or larger) format down to // 8-bit per channel. This throws away precision in the // original image, but dx8 doesn't support high-precision images // anyway. - + int num_components = _texture->get_num_components(); int num_pixels = orig_width * orig_height * orig_depth * num_components; BYTE *temp_buffer = new BYTE[num_pixels]; @@ -1243,7 +1244,7 @@ fill_d3d_volume_texture_pixels() { goto exit_FillDDSurf; } using_temp_buffer = true; - + BYTE *source_pixels = pixels + component_width - 1; for (int i = 0; i < num_pixels; i++) { temp_buffer[i] = *source_pixels; @@ -1251,8 +1252,8 @@ fill_d3d_volume_texture_pixels() { } pixels = (BYTE*)temp_buffer; } - - + + // filtering may be done here if texture if targetsize != origsize #ifdef DO_PSTATS GraphicsStateGuardian::_data_transferred_pcollector.add_level(source_page_byte_length * orig_depth); @@ -1260,7 +1261,7 @@ fill_d3d_volume_texture_pixels() { hr = D3DXLoadVolumeFromMemory (mip_level_0, (PALETTEENTRY*)NULL, (D3DBOX*)NULL, (LPCVOID)pixels, source_format, source_row_byte_length, source_page_byte_length, - (PALETTEENTRY*)NULL, + (PALETTEENTRY*)NULL, &source_size, level_0_filter, (D3DCOLOR)0x0); if (FAILED(hr)) { dxgsg8_cat.error() @@ -1268,17 +1269,17 @@ fill_d3d_volume_texture_pixels() { << ", D3DXLoadVolumeFromMem failed" << D3DERRORSTRING(hr); goto exit_FillDDSurf; } - + if (_has_mipmaps) { if (!dx_use_triangle_mipgen_filter) { mip_filter_flags = D3DX_FILTER_BOX; } else { mip_filter_flags = D3DX_FILTER_TRIANGLE; } - + // mip_filter_flags| = D3DX_FILTER_DITHER; - - hr = D3DXFilterTexture(_d3d_texture, (PALETTEENTRY*)NULL, 0, + + hr = D3DXFilterTexture(_d3d_texture, (PALETTEENTRY*)NULL, 0, mip_filter_flags); if (FAILED(hr)) { dxgsg8_cat.error() @@ -1287,7 +1288,7 @@ fill_d3d_volume_texture_pixels() { goto exit_FillDDSurf; } } - + exit_FillDDSurf: if (using_temp_buffer) { SAFE_DELETE_ARRAY(pixels);