maxwell_3d: Allow texture handles with TIC id zero
Also remove "enabled" field from Tegra::Texture::FullTextureInfo because it would become unused.
This commit is contained in:
parent
e01a9de35f
commit
390721a561
3 changed files with 7 additions and 21 deletions
|
@ -462,13 +462,9 @@ std::vector<Texture::FullTextureInfo> Maxwell3D::GetStageTextures(Regs::ShaderSt
|
||||||
sizeof(Texture::TextureHandle);
|
sizeof(Texture::TextureHandle);
|
||||||
|
|
||||||
// Load the TIC data.
|
// Load the TIC data.
|
||||||
if (tex_handle.tic_id != 0) {
|
auto tic_entry = GetTICEntry(tex_handle.tic_id);
|
||||||
tex_info.enabled = true;
|
// TODO(Subv): Workaround for BitField's move constructor being deleted.
|
||||||
|
std::memcpy(&tex_info.tic, &tic_entry, sizeof(tic_entry));
|
||||||
auto tic_entry = GetTICEntry(tex_handle.tic_id);
|
|
||||||
// TODO(Subv): Workaround for BitField's move constructor being deleted.
|
|
||||||
std::memcpy(&tex_info.tic, &tic_entry, sizeof(tic_entry));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load the TSC data
|
// Load the TSC data
|
||||||
if (tex_handle.tsc_id != 0) {
|
if (tex_handle.tsc_id != 0) {
|
||||||
|
@ -477,8 +473,7 @@ std::vector<Texture::FullTextureInfo> Maxwell3D::GetStageTextures(Regs::ShaderSt
|
||||||
std::memcpy(&tex_info.tsc, &tsc_entry, sizeof(tsc_entry));
|
std::memcpy(&tex_info.tsc, &tsc_entry, sizeof(tsc_entry));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tex_info.enabled)
|
textures.push_back(tex_info);
|
||||||
textures.push_back(tex_info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return textures;
|
return textures;
|
||||||
|
@ -501,13 +496,9 @@ Texture::FullTextureInfo Maxwell3D::GetStageTexture(Regs::ShaderStage stage,
|
||||||
tex_info.index = static_cast<u32>(offset);
|
tex_info.index = static_cast<u32>(offset);
|
||||||
|
|
||||||
// Load the TIC data.
|
// Load the TIC data.
|
||||||
if (tex_handle.tic_id != 0) {
|
auto tic_entry = GetTICEntry(tex_handle.tic_id);
|
||||||
tex_info.enabled = true;
|
// TODO(Subv): Workaround for BitField's move constructor being deleted.
|
||||||
|
std::memcpy(&tex_info.tic, &tic_entry, sizeof(tic_entry));
|
||||||
auto tic_entry = GetTICEntry(tex_handle.tic_id);
|
|
||||||
// TODO(Subv): Workaround for BitField's move constructor being deleted.
|
|
||||||
std::memcpy(&tex_info.tic, &tic_entry, sizeof(tic_entry));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load the TSC data
|
// Load the TSC data
|
||||||
if (tex_handle.tsc_id != 0) {
|
if (tex_handle.tsc_id != 0) {
|
||||||
|
|
|
@ -1008,10 +1008,6 @@ void RasterizerOpenGL::SetupTextures(Maxwell::ShaderStage stage, const Shader& s
|
||||||
auto& unit = state.texture_units[current_bindpoint];
|
auto& unit = state.texture_units[current_bindpoint];
|
||||||
|
|
||||||
const auto texture = maxwell3d.GetStageTexture(entry.GetStage(), entry.GetOffset());
|
const auto texture = maxwell3d.GetStageTexture(entry.GetStage(), entry.GetOffset());
|
||||||
if (!texture.enabled) {
|
|
||||||
unit.texture = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
texture_samplers[current_bindpoint].SyncWithConfig(texture.tsc);
|
texture_samplers[current_bindpoint].SyncWithConfig(texture.tsc);
|
||||||
|
|
||||||
|
|
|
@ -317,7 +317,6 @@ struct FullTextureInfo {
|
||||||
u32 index;
|
u32 index;
|
||||||
TICEntry tic;
|
TICEntry tic;
|
||||||
TSCEntry tsc;
|
TSCEntry tsc;
|
||||||
bool enabled;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Returns the number of bytes per pixel of the input texture format.
|
/// Returns the number of bytes per pixel of the input texture format.
|
||||||
|
|
Loading…
Reference in a new issue