Skip to content

Commit

Permalink
GL/Vulkan: not discard fragment when hits NEVER comparsion (#2156)
Browse files Browse the repository at this point in the history
GL/Vulkan: return no operation when comparison is never
  • Loading branch information
raven02 committed Sep 26, 2016
1 parent 7884356 commit 528b2d6
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 9 deletions.
6 changes: 2 additions & 4 deletions rpcs3/Emu/RSX/GL/GLFragmentProgram.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -349,10 +349,6 @@ void GLFragmentDecompilerThread::insertMainEnd(std::stringstream & OS)
{
auto make_comparison_test = [](rsx::comparison_function compare_func, const std::string &test, const std::string &a, const std::string &b) -> std::string
{
if (compare_func == rsx::comparison_function::always) return{};

if (compare_func == rsx::comparison_function::never) return " discard;\n";

std::string compare;
switch (compare_func)
{
Expand All @@ -362,6 +358,8 @@ void GLFragmentDecompilerThread::insertMainEnd(std::stringstream & OS)
case rsx::comparison_function::less: compare = " < "; break;
case rsx::comparison_function::greater: compare = " > "; break;
case rsx::comparison_function::greater_or_equal: compare = " >= "; break;
default:
return "";
}

return " if (" + test + "!(" + a + compare + b + ")) discard;\n";
Expand Down
8 changes: 3 additions & 5 deletions rpcs3/Emu/RSX/VK/VKFragmentProgram.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -356,10 +356,6 @@ void VKFragmentDecompilerThread::insertMainEnd(std::stringstream & OS)
{
auto make_comparison_test = [](rsx::comparison_function compare_func, const std::string &test, const std::string &a, const std::string &b) -> std::string
{
if (compare_func == rsx::comparison_function::always) return{};

if (compare_func == rsx::comparison_function::never) return " discard;\n";

std::string compare;
switch (compare_func)
{
Expand All @@ -368,7 +364,9 @@ void VKFragmentDecompilerThread::insertMainEnd(std::stringstream & OS)
case rsx::comparison_function::less_or_equal: compare = " <= "; break;
case rsx::comparison_function::less: compare = " < "; break;
case rsx::comparison_function::greater: compare = " > "; break;
case rsx::comparison_function::greater_or_equal: compare = " >= "; break;
case rsx::comparison_function::greater_or_equal: compare = " >= "; break;
default:
return "";
}

return " if (" + test + "!(" + a + compare + b + ")) discard;\n";
Expand Down

0 comments on commit 528b2d6

Please sign in to comment.