mirror of
https://github.com/OldUnreal/KTexComp.git
synced 2026-04-02 21:28:59 -07:00
597 lines
18 KiB
C++
597 lines
18 KiB
C++
//
|
|
// Copyright (c) 2016 Intel Corporation
|
|
// Copyright (c) 2020 Sebastian Kaufel
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
|
// software and associated documentation files (the "Software"), to deal in the Software
|
|
// without restriction, including without limitation the rights to use, copy, modify,
|
|
// merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
|
|
// permit persons to whom the Software is furnished to do so, subject to the following
|
|
// conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in all copies
|
|
// or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
//
|
|
|
|
#include "ispc_texcomp.h"
|
|
#include "kernel_bptc_ispc.h"
|
|
#include "memory.h" // memcpy
|
|
|
|
//
|
|
// BC6H Profiles.
|
|
//
|
|
void GetProfile_bc6h_veryfast(bc6h_enc_settings* settings)
|
|
{
|
|
settings->slow_mode = false;
|
|
settings->fast_mode = true;
|
|
settings->fastSkipTreshold = 0;
|
|
settings->refineIterations_1p = 0;
|
|
settings->refineIterations_2p = 0;
|
|
}
|
|
|
|
void GetProfile_bc6h_fast(bc6h_enc_settings* settings)
|
|
{
|
|
settings->slow_mode = false;
|
|
settings->fast_mode = true;
|
|
settings->fastSkipTreshold = 2;
|
|
settings->refineIterations_1p = 0;
|
|
settings->refineIterations_2p = 1;
|
|
}
|
|
|
|
void GetProfile_bc6h_basic(bc6h_enc_settings* settings)
|
|
{
|
|
settings->slow_mode = false;
|
|
settings->fast_mode = false;
|
|
settings->fastSkipTreshold = 4;
|
|
settings->refineIterations_1p = 2;
|
|
settings->refineIterations_2p = 2;
|
|
}
|
|
|
|
void GetProfile_bc6h_slow(bc6h_enc_settings* settings)
|
|
{
|
|
settings->slow_mode = true;
|
|
settings->fast_mode = false;
|
|
settings->fastSkipTreshold = 10;
|
|
settings->refineIterations_1p = 2;
|
|
settings->refineIterations_2p = 2;
|
|
}
|
|
|
|
void GetProfile_bc6h_veryslow(bc6h_enc_settings* settings)
|
|
{
|
|
settings->slow_mode = true;
|
|
settings->fast_mode = false;
|
|
settings->fastSkipTreshold = 32;
|
|
settings->refineIterations_1p = 2;
|
|
settings->refineIterations_2p = 2;
|
|
}
|
|
|
|
//
|
|
// BC7 Development Profile -- For library internal development use only.
|
|
//
|
|
void GetProfile_bc6h_development( bc6h_enc_settings* Settings )
|
|
{
|
|
Settings->slow_mode = true;
|
|
Settings->fast_mode = false;
|
|
Settings->fastSkipTreshold = 32;
|
|
Settings->refineIterations_1p = 2;
|
|
Settings->refineIterations_2p = 2;
|
|
}
|
|
|
|
//
|
|
// BC7 Profiles (w/o alpha).
|
|
//
|
|
void GetProfile_ultrafast( bc7_enc_settings* Settings )
|
|
{
|
|
Settings->channels = 3;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = false;
|
|
Settings->ModeEnabled[2] = false;
|
|
Settings->RefineIterations[0] = 2;
|
|
Settings->RefineIterations[2] = 2;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = false;
|
|
Settings->ModeEnabled[3] = false;
|
|
Settings->ModeEnabled[7] = false;
|
|
Settings->fastSkipTreshold_mode1 = 3;
|
|
Settings->fastSkipTreshold_mode3 = 1;
|
|
Settings->fastSkipTreshold_mode7 = 0;
|
|
Settings->RefineIterations[1] = 2;
|
|
Settings->RefineIterations[3] = 1;
|
|
Settings->RefineIterations[7] = 2;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = false;
|
|
Settings->ModeEnabled[5] = false;
|
|
Settings->mode45_channel0 = 0;
|
|
Settings->refineIterations_channel = 0;
|
|
Settings->RefineIterations[4] = 2;
|
|
Settings->RefineIterations[5] = 2;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 1;
|
|
}
|
|
|
|
void GetProfile_veryfast(bc7_enc_settings* Settings)
|
|
{
|
|
Settings->channels = 3;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = false;
|
|
Settings->ModeEnabled[2] = false;
|
|
Settings->RefineIterations[0] = 2;
|
|
Settings->RefineIterations[2] = 2;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = true;
|
|
Settings->ModeEnabled[3] = true;
|
|
Settings->ModeEnabled[7] = true; // !! Disabled by fastSkipTreshold_mode7==0.
|
|
Settings->fastSkipTreshold_mode1 = 3;
|
|
Settings->fastSkipTreshold_mode3 = 1;
|
|
Settings->fastSkipTreshold_mode7 = 0;
|
|
Settings->RefineIterations[1] = 2;
|
|
Settings->RefineIterations[3] = 1;
|
|
Settings->RefineIterations[7] = 2;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = false;
|
|
Settings->ModeEnabled[5] = false;
|
|
Settings->mode45_channel0 = 0;
|
|
Settings->refineIterations_channel = 0;
|
|
Settings->RefineIterations[4] = 2;
|
|
Settings->RefineIterations[5] = 2;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 1;
|
|
}
|
|
|
|
void GetProfile_fast( bc7_enc_settings* Settings )
|
|
{
|
|
Settings->channels = 3;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = false;
|
|
Settings->ModeEnabled[2] = false;
|
|
Settings->RefineIterations[0] = 2;
|
|
Settings->RefineIterations[2] = 2;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = true;
|
|
Settings->ModeEnabled[3] = true;
|
|
Settings->ModeEnabled[7] = true; // !! Disabled by fastSkipTreshold_mode7==0.
|
|
Settings->fastSkipTreshold_mode1 = 12;
|
|
Settings->fastSkipTreshold_mode3 = 4;
|
|
Settings->fastSkipTreshold_mode7 = 0;
|
|
Settings->RefineIterations[1] = 2;
|
|
Settings->RefineIterations[3] = 1;
|
|
Settings->RefineIterations[7] = 2;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = false;
|
|
Settings->ModeEnabled[5] = false;
|
|
Settings->mode45_channel0 = 0;
|
|
Settings->refineIterations_channel = 0;
|
|
Settings->RefineIterations[4] = 2;
|
|
Settings->RefineIterations[5] = 2;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 2;
|
|
}
|
|
|
|
void GetProfile_basic( bc7_enc_settings* Settings )
|
|
{
|
|
Settings->channels = 3;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = true;
|
|
Settings->ModeEnabled[2] = false;
|
|
Settings->RefineIterations[0] = 2;
|
|
Settings->RefineIterations[2] = 2;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = true;
|
|
Settings->ModeEnabled[3] = true;
|
|
Settings->ModeEnabled[7] = true; // !! Disabled by fastSkipTreshold_mode7==0.
|
|
Settings->fastSkipTreshold_mode1 = 8+4;
|
|
Settings->fastSkipTreshold_mode3 = 8;
|
|
Settings->fastSkipTreshold_mode7 = 0;
|
|
Settings->RefineIterations[1] = 2;
|
|
Settings->RefineIterations[3] = 2;
|
|
Settings->RefineIterations[7] = 2;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = true;
|
|
Settings->ModeEnabled[5] = true;
|
|
Settings->mode45_channel0 = 0;
|
|
Settings->refineIterations_channel = 2;
|
|
Settings->RefineIterations[4] = 2;
|
|
Settings->RefineIterations[5] = 2;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
|
|
Settings->RefineIterations[6] = 2;
|
|
}
|
|
|
|
void GetProfile_slow( bc7_enc_settings* Settings )
|
|
{
|
|
Settings->channels = 3;
|
|
|
|
const int MoreRefineIterations = 2;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = true;
|
|
Settings->ModeEnabled[2] = true;
|
|
Settings->RefineIterations[0] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[2] = 2+MoreRefineIterations;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = true;
|
|
Settings->ModeEnabled[3] = true;
|
|
Settings->ModeEnabled[7] = true;
|
|
Settings->fastSkipTreshold_mode1 = 64;
|
|
Settings->fastSkipTreshold_mode3 = 64;
|
|
Settings->fastSkipTreshold_mode7 = 0; // !! Disabled by fastSkipTreshold_mode7==0.
|
|
Settings->RefineIterations[1] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[3] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[7] = 2+MoreRefineIterations;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = true;
|
|
Settings->ModeEnabled[5] = true;
|
|
Settings->mode45_channel0 = 0;
|
|
Settings->refineIterations_channel = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[4] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[5] = 2+MoreRefineIterations;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 2+MoreRefineIterations;
|
|
}
|
|
|
|
void GetProfile_veryslow( bc7_enc_settings* Settings )
|
|
{
|
|
#if 1
|
|
// Currently vslow profile seems to be only slower, but won't yield a lower psnr.
|
|
GetProfile_slow( Settings );
|
|
#endif
|
|
|
|
Settings->channels = 3;
|
|
|
|
const int MoreRefineIterations = 8; // Was 2 in GetProfile_slow, but even 16 doesn't seem to make any difference at all.
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = true;
|
|
Settings->ModeEnabled[2] = true;
|
|
Settings->RefineIterations[0] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[2] = 2+MoreRefineIterations;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = true;
|
|
Settings->ModeEnabled[3] = true;
|
|
Settings->ModeEnabled[7] = true;
|
|
Settings->fastSkipTreshold_mode1 = 64;
|
|
Settings->fastSkipTreshold_mode3 = 64;
|
|
Settings->fastSkipTreshold_mode7 = 64; // Was 0 in GetProfile_slow, but doesn't seem to make any difference in psnr.
|
|
Settings->RefineIterations[1] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[3] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[7] = 2+MoreRefineIterations;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = true;
|
|
Settings->ModeEnabled[5] = true;
|
|
Settings->mode45_channel0 = 0;
|
|
Settings->refineIterations_channel = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[4] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[5] = 2+MoreRefineIterations;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 2+MoreRefineIterations;
|
|
}
|
|
|
|
//
|
|
// BC7 Profiles (with alpha).
|
|
//
|
|
void GetProfile_alpha_ultrafast( bc7_enc_settings* Settings )
|
|
{
|
|
Settings->channels = 4;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = false;
|
|
Settings->ModeEnabled[2] = false;
|
|
Settings->RefineIterations[0] = 2;
|
|
Settings->RefineIterations[2] = 2;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = false;
|
|
Settings->ModeEnabled[3] = false;
|
|
Settings->ModeEnabled[7] = false;
|
|
Settings->fastSkipTreshold_mode1 = 0;
|
|
Settings->fastSkipTreshold_mode3 = 0;
|
|
Settings->fastSkipTreshold_mode7 = 4;
|
|
Settings->RefineIterations[1] = 1;
|
|
Settings->RefineIterations[3] = 1;
|
|
Settings->RefineIterations[7] = 2;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = true;
|
|
Settings->ModeEnabled[5] = true;
|
|
Settings->mode45_channel0 = 3;
|
|
Settings->refineIterations_channel = 1;
|
|
Settings->RefineIterations[4] = 1;
|
|
Settings->RefineIterations[5] = 1;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 2;
|
|
}
|
|
|
|
void GetProfile_alpha_veryfast( bc7_enc_settings* Settings )
|
|
{
|
|
Settings->channels = 4;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = false;
|
|
Settings->ModeEnabled[2] = false;
|
|
Settings->RefineIterations[0] = 2;
|
|
Settings->RefineIterations[2] = 2;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = true; // !! Disabled by fastSkipTreshold_mode7==0.
|
|
Settings->ModeEnabled[3] = true; // !! Disabled by fastSkipTreshold_mode7==0.
|
|
Settings->ModeEnabled[7] = true;
|
|
Settings->fastSkipTreshold_mode1 = 0;
|
|
Settings->fastSkipTreshold_mode3 = 0;
|
|
Settings->fastSkipTreshold_mode7 = 4;
|
|
Settings->RefineIterations[1] = 1;
|
|
Settings->RefineIterations[3] = 1;
|
|
Settings->RefineIterations[7] = 2;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = true;
|
|
Settings->ModeEnabled[5] =true ;
|
|
Settings->mode45_channel0 = 3;
|
|
Settings->refineIterations_channel = 2;
|
|
Settings->RefineIterations[4] = 2;
|
|
Settings->RefineIterations[5] = 2;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 2;
|
|
}
|
|
|
|
void GetProfile_alpha_fast( bc7_enc_settings* Settings )
|
|
{
|
|
Settings->channels = 4;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = false;
|
|
Settings->ModeEnabled[2] = false;
|
|
Settings->RefineIterations[0] = 2;
|
|
Settings->RefineIterations[2] = 2;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = true;
|
|
Settings->ModeEnabled[3] = true;
|
|
Settings->ModeEnabled[7] = true;
|
|
Settings->fastSkipTreshold_mode1 = 4;
|
|
Settings->fastSkipTreshold_mode3 = 4;
|
|
Settings->fastSkipTreshold_mode7 = 8;
|
|
Settings->RefineIterations[1] = 1;
|
|
Settings->RefineIterations[3] = 1;
|
|
Settings->RefineIterations[7] = 2;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = true;
|
|
Settings->ModeEnabled[5] = true;
|
|
Settings->mode45_channel0 = 3;
|
|
Settings->refineIterations_channel = 2;
|
|
Settings->RefineIterations[4] = 2;
|
|
Settings->RefineIterations[5] = 2;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 2;
|
|
}
|
|
|
|
void GetProfile_alpha_basic( bc7_enc_settings* Settings )
|
|
{
|
|
Settings->channels = 4;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = true;
|
|
Settings->ModeEnabled[2] = true;
|
|
Settings->RefineIterations[0] = 2;
|
|
Settings->RefineIterations[2] = 2;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = true;
|
|
Settings->ModeEnabled[3] = true;
|
|
Settings->ModeEnabled[7] = true;
|
|
Settings->fastSkipTreshold_mode1 = 8+4;
|
|
Settings->fastSkipTreshold_mode3 = 8;
|
|
Settings->fastSkipTreshold_mode7 = 8;
|
|
Settings->RefineIterations[1] = 2;
|
|
Settings->RefineIterations[3] = 2;
|
|
Settings->RefineIterations[7] = 2;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = true;
|
|
Settings->ModeEnabled[5] = true;
|
|
Settings->mode45_channel0 = 0;
|
|
Settings->refineIterations_channel = 2;
|
|
Settings->RefineIterations[4] = 2;
|
|
Settings->RefineIterations[5] = 2;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 2;
|
|
}
|
|
|
|
void GetProfile_alpha_slow( bc7_enc_settings* Settings )
|
|
{
|
|
Settings->channels = 4;
|
|
|
|
const int MoreRefineIterations = 2;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = true;
|
|
Settings->ModeEnabled[2] = true;
|
|
Settings->RefineIterations[0] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[2] = 2+MoreRefineIterations;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = true;
|
|
Settings->ModeEnabled[3] = true;
|
|
Settings->ModeEnabled[7] = true;
|
|
Settings->fastSkipTreshold_mode1 = 64;
|
|
Settings->fastSkipTreshold_mode3 = 64;
|
|
Settings->fastSkipTreshold_mode7 = 64;
|
|
Settings->RefineIterations[1] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[3] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[7] = 2+MoreRefineIterations;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = true;
|
|
Settings->ModeEnabled[5] = true;
|
|
Settings->mode45_channel0 = 0;
|
|
Settings->refineIterations_channel = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[4] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[5] = 2+MoreRefineIterations;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 2+MoreRefineIterations;
|
|
}
|
|
|
|
void GetProfile_alpha_veryslow( bc7_enc_settings* Settings )
|
|
{
|
|
#if 1
|
|
// Currently vslow profile seems to be only slower, but won't yield a lower psnr.
|
|
GetProfile_slow( Settings );
|
|
#endif
|
|
|
|
Settings->channels = 4;
|
|
|
|
const int MoreRefineIterations = 8; // Was 2 in GetProfile_alpha_slow, but even 16 doesn't seem to make any difference at all.
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = true;
|
|
Settings->ModeEnabled[2] = true;
|
|
Settings->RefineIterations[0] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[2] = 2+MoreRefineIterations;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = true;
|
|
Settings->ModeEnabled[3] = true;
|
|
Settings->ModeEnabled[7] = true;
|
|
Settings->fastSkipTreshold_mode1 = 64;
|
|
Settings->fastSkipTreshold_mode3 = 64;
|
|
Settings->fastSkipTreshold_mode7 = 64;
|
|
Settings->RefineIterations[1] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[3] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[7] = 2+MoreRefineIterations;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = true;
|
|
Settings->ModeEnabled[5] = true;
|
|
Settings->mode45_channel0 = 0;
|
|
Settings->refineIterations_channel = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[4] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[5] = 2+MoreRefineIterations;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = true;
|
|
Settings->RefineIterations[6] = 2+MoreRefineIterations;
|
|
}
|
|
|
|
//
|
|
// BC7 Development Profile -- For library internal development use only.
|
|
//
|
|
void GetProfile_development( bc7_enc_settings* Settings )
|
|
{
|
|
Settings->channels = 4;
|
|
|
|
const int MoreRefineIterations = 2;
|
|
|
|
// Modes 0 and 2.
|
|
Settings->ModeEnabled[0] = true;
|
|
Settings->ModeEnabled[2] = false;
|
|
Settings->RefineIterations[0] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[2] = 2+MoreRefineIterations;
|
|
|
|
// Modes 1, 3 and 7.
|
|
Settings->ModeEnabled[1] = false;
|
|
Settings->ModeEnabled[3] = false;
|
|
Settings->ModeEnabled[7] = false;
|
|
Settings->fastSkipTreshold_mode1 = 64;
|
|
Settings->fastSkipTreshold_mode3 = 64;
|
|
Settings->fastSkipTreshold_mode7 = 64;
|
|
Settings->RefineIterations[1] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[3] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[7] = 2+MoreRefineIterations;
|
|
|
|
// Modes 4 and 5.
|
|
Settings->ModeEnabled[4] = false;
|
|
Settings->ModeEnabled[5] = false;
|
|
Settings->mode45_channel0 = 0;
|
|
Settings->refineIterations_channel = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[4] = 2+MoreRefineIterations;
|
|
Settings->RefineIterations[5] = 2+MoreRefineIterations;
|
|
|
|
// Mode 6.
|
|
Settings->ModeEnabled[6] = false;
|
|
Settings->RefineIterations[6] = 2+MoreRefineIterations;
|
|
}
|
|
|
|
//
|
|
// BC6H entry points into ispc code.
|
|
//
|
|
void CompressBlocksBC6H( const rgba_surface* InputSurface, uint8_t* OutputBlocks, bc6h_enc_settings* EncSettings )
|
|
{
|
|
ISPCTC_BC6H_Compress_RGBA16F( (const ISPCTC_Surface_RGBA16F*)InputSurface, OutputBlocks, EncSettings );
|
|
}
|
|
void ISPCTC_BC6H_Compress_RGBA16F( const ISPCTC_Surface_RGBA16F* InputSurface, uint8_t* OutputBlocks, bc6h_enc_settings* EncSettings )
|
|
{
|
|
ispc::CompressBlocksBC6H_ispc( (ispc::rgba_surface*)InputSurface, OutputBlocks, (ispc::bc6h_enc_settings*)EncSettings );
|
|
}
|
|
//void ISPCTC_BC6H_Compress_RGBA32F( const ISPCTC_Surface_RGBA32F* InputSurface, uint8_t* OutputBlocks, bc6h_enc_settings* EncSettings );
|
|
//void ISPCTC_BC6H_CompressSigned_RGBA16F( const ISPCTC_Surface_RGBA16F* InputSurface, uint8_t* OutputBlocks, bc6h_enc_settings* EncSettings );
|
|
//void ISPCTC_BC6H_CompressSigned_RGBA32F( const ISPCTC_Surface_RGBA32F* InputSurface, uint8_t* OutputBlocks, bc6h_enc_settings* EncSettings );
|
|
|
|
//
|
|
// BC7 entry points into ispc code.
|
|
//
|
|
void CompressBlocksBC7( const rgba_surface* InputSurface, uint8_t* OutputBlocks, bc7_enc_settings* EncSettings )
|
|
{
|
|
ISPCTC_BC7_Compress_RGBA8( (const ISPCTC_Surface_RGBA8*)InputSurface, OutputBlocks, EncSettings);
|
|
}
|
|
void ISPCTC_BC7_Compress_RGBA8( const ISPCTC_Surface_RGBA8* InputSurface, uint8_t* OutputBlocks, bc7_enc_settings* EncSettings )
|
|
{
|
|
ispc::BC7_Compress_RGBA8( (ispc::Surface_RGBA8*)InputSurface, OutputBlocks, (ispc::bc7_enc_settings*)EncSettings );
|
|
}
|
|
void ISPCTC_BC7_Compress_RGBA16( const ISPCTC_Surface_RGBA16* InputSurface, uint8_t* OutputBlocks, bc7_enc_settings* EncSettings )
|
|
{
|
|
ispc::BC7_Compress_RGBA16( (ispc::Surface_RGBA16*)InputSurface, OutputBlocks, (ispc::bc7_enc_settings*)EncSettings );
|
|
}
|
|
//void ISPCTC_BC7_Compress_RGBA32F( const ISPCTC_Surface_RGBA32F* InputSurface, uint8_t* OutputBlocks, bc7_enc_settings* EncSettings );
|
|
//{
|
|
// ispc::ETC1_BC7_Compress_RGBA32F( (ispc::Surface_RGBA32F*)InputSurface, OutputBlocks, (ispc::bc7_enc_settings*)EncSettings );
|
|
//}
|
|
|
|
//
|
|
// The End.
|
|
//
|