VideoBackends: Clear uid bits that are unused for the current backend

Currently, this is only the logic op bit, but this will be extended to
the framebuffer fetch/blend modes. In the future, when/if we move to
VideoCommon pipelines, this state will be part of the pipeline UID
anyway, and we can mask it out in the backend by using a two-level map,
so the shaders/programs are shared.
This commit is contained in:
Stenzek
2017-09-05 23:33:15 +10:00
parent 6d32cce2f5
commit 84f8ebd95f
7 changed files with 30 additions and 2 deletions

View File

@ -29,6 +29,16 @@ PixelShaderUid GetPixelShaderUid()
return out;
}
void ClearUnusedPixelShaderUidBits(APIType ApiType, PixelShaderUid* uid)
{
pixel_ubershader_uid_data* uid_data = uid->GetUidData<pixel_ubershader_uid_data>();
// OpenGL and Vulkan convert implicitly normalized color outputs to their uint representation.
// Therefore, it is not necessary to use a uint output on these backends.
if (ApiType != APIType::D3D)
uid_data->uint_output = 0;
}
ShaderCode GenPixelShader(APIType ApiType, const ShaderHostConfig& host_config,
const pixel_ubershader_uid_data* uid_data)
{