From a7a779dd311e2095dfe8a1898353b5fd730af0a5 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Wed, 30 Nov 2016 08:32:05 +0100 Subject: [PATCH] Fix race condition --- src/r_drawers.cpp | 347 +++++++++++++++++++++++----------------------- src/r_drawers.h | 3 + 2 files changed, 175 insertions(+), 175 deletions(-) diff --git a/src/r_drawers.cpp b/src/r_drawers.cpp index f94f409c45..ab45ad939c 100644 --- a/src/r_drawers.cpp +++ b/src/r_drawers.cpp @@ -209,184 +209,181 @@ extern "C" ///////////////////////////////////////////////////////////////////////////// +Drawers::Drawers() +{ + DrawColumn = DrawColumn_SSE2; + DrawColumnAdd = DrawColumnAdd_SSE2; + DrawColumnShaded = DrawColumnShaded_SSE2; + DrawColumnAddClamp = DrawColumnAddClamp_SSE2; + DrawColumnSubClamp = DrawColumnSubClamp_SSE2; + DrawColumnRevSubClamp = DrawColumnRevSubClamp_SSE2; + DrawColumnTranslated = DrawColumnTranslated_SSE2; + DrawColumnTlatedAdd = DrawColumnTlatedAdd_SSE2; + DrawColumnAddClampTranslated = DrawColumnAddClampTranslated_SSE2; + DrawColumnSubClampTranslated = DrawColumnSubClampTranslated_SSE2; + DrawColumnRevSubClampTranslated = DrawColumnRevSubClampTranslated_SSE2; + FillColumn = FillColumn_SSE2; + FillColumnAdd = FillColumnAdd_SSE2; + FillColumnAddClamp = FillColumnAddClamp_SSE2; + FillColumnSubClamp = FillColumnSubClamp_SSE2; + FillColumnRevSubClamp = FillColumnRevSubClamp_SSE2; + DrawColumnRt1 = DrawColumnRt1_SSE2; + DrawColumnRt1Copy = DrawColumnRt1Copy_SSE2; + DrawColumnRt1Add = DrawColumnRt1Add_SSE2; + DrawColumnRt1Shaded = DrawColumnRt1Shaded_SSE2; + DrawColumnRt1AddClamp = DrawColumnRt1AddClamp_SSE2; + DrawColumnRt1SubClamp = DrawColumnRt1SubClamp_SSE2; + DrawColumnRt1RevSubClamp = DrawColumnRt1RevSubClamp_SSE2; + DrawColumnRt1Translated = DrawColumnRt1Translated_SSE2; + DrawColumnRt1TlatedAdd = DrawColumnRt1TlatedAdd_SSE2; + DrawColumnRt1AddClampTranslated = DrawColumnRt1AddClampTranslated_SSE2; + DrawColumnRt1SubClampTranslated = DrawColumnRt1SubClampTranslated_SSE2; + DrawColumnRt1RevSubClampTranslated = DrawColumnRt1RevSubClampTranslated_SSE2; + DrawColumnRt4 = DrawColumnRt4_SSE2; + DrawColumnRt4Copy = DrawColumnRt4Copy_SSE2; + DrawColumnRt4Add = DrawColumnRt4Add_SSE2; + DrawColumnRt4Shaded = DrawColumnRt4Shaded_SSE2; + DrawColumnRt4AddClamp = DrawColumnRt4AddClamp_SSE2; + DrawColumnRt4SubClamp = DrawColumnRt4SubClamp_SSE2; + DrawColumnRt4RevSubClamp = DrawColumnRt4RevSubClamp_SSE2; + DrawColumnRt4Translated = DrawColumnRt4Translated_SSE2; + DrawColumnRt4TlatedAdd = DrawColumnRt4TlatedAdd_SSE2; + DrawColumnRt4AddClampTranslated = DrawColumnRt4AddClampTranslated_SSE2; + DrawColumnRt4SubClampTranslated = DrawColumnRt4SubClampTranslated_SSE2; + DrawColumnRt4RevSubClampTranslated = DrawColumnRt4RevSubClampTranslated_SSE2; + DrawSpan = DrawSpan_SSE2; + DrawSpanMasked = DrawSpanMasked_SSE2; + DrawSpanTranslucent = DrawSpanTranslucent_SSE2; + DrawSpanMaskedTranslucent = DrawSpanMaskedTranslucent_SSE2; + DrawSpanAddClamp = DrawSpanAddClamp_SSE2; + DrawSpanMaskedAddClamp = DrawSpanMaskedAddClamp_SSE2; + vlinec1 = vlinec1_SSE2; + vlinec4 = vlinec4_SSE2; + mvlinec1 = mvlinec1_SSE2; + mvlinec4 = mvlinec4_SSE2; + tmvline1_add = tmvline1_add_SSE2; + tmvline4_add = tmvline4_add_SSE2; + tmvline1_addclamp = tmvline1_addclamp_SSE2; + tmvline4_addclamp = tmvline4_addclamp_SSE2; + tmvline1_subclamp = tmvline1_subclamp_SSE2; + tmvline4_subclamp = tmvline4_subclamp_SSE2; + tmvline1_revsubclamp = tmvline1_revsubclamp_SSE2; + tmvline4_revsubclamp = tmvline4_revsubclamp_SSE2; + DrawSky1 = DrawSky1_SSE2; + DrawSky4 = DrawSky4_SSE2; + DrawDoubleSky1 = DrawDoubleSky1_SSE2; + DrawDoubleSky4 = DrawDoubleSky4_SSE2; + TriDrawNormal8.push_back(TriDrawNormal8_0_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_1_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_2_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_3_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_4_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_5_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_6_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_7_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_8_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_9_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_10_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_11_SSE2); + TriDrawNormal8.push_back(TriDrawNormal8_12_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_0_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_1_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_2_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_3_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_4_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_5_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_6_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_7_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_8_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_9_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_10_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_11_SSE2); + TriDrawNormal32.push_back(TriDrawNormal32_12_SSE2); + TriFillNormal8.push_back(TriFillNormal8_0_SSE2); + TriFillNormal8.push_back(TriFillNormal8_1_SSE2); + TriFillNormal8.push_back(TriFillNormal8_2_SSE2); + TriFillNormal8.push_back(TriFillNormal8_3_SSE2); + TriFillNormal8.push_back(TriFillNormal8_4_SSE2); + TriFillNormal8.push_back(TriFillNormal8_5_SSE2); + TriFillNormal8.push_back(TriFillNormal8_6_SSE2); + TriFillNormal8.push_back(TriFillNormal8_7_SSE2); + TriFillNormal8.push_back(TriFillNormal8_8_SSE2); + TriFillNormal8.push_back(TriFillNormal8_9_SSE2); + TriFillNormal8.push_back(TriFillNormal8_10_SSE2); + TriFillNormal8.push_back(TriFillNormal8_11_SSE2); + TriFillNormal8.push_back(TriFillNormal8_12_SSE2); + TriFillNormal32.push_back(TriFillNormal32_0_SSE2); + TriFillNormal32.push_back(TriFillNormal32_1_SSE2); + TriFillNormal32.push_back(TriFillNormal32_2_SSE2); + TriFillNormal32.push_back(TriFillNormal32_3_SSE2); + TriFillNormal32.push_back(TriFillNormal32_4_SSE2); + TriFillNormal32.push_back(TriFillNormal32_5_SSE2); + TriFillNormal32.push_back(TriFillNormal32_6_SSE2); + TriFillNormal32.push_back(TriFillNormal32_7_SSE2); + TriFillNormal32.push_back(TriFillNormal32_8_SSE2); + TriFillNormal32.push_back(TriFillNormal32_9_SSE2); + TriFillNormal32.push_back(TriFillNormal32_10_SSE2); + TriFillNormal32.push_back(TriFillNormal32_11_SSE2); + TriFillNormal32.push_back(TriFillNormal32_12_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_0_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_1_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_2_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_3_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_4_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_5_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_6_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_7_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_8_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_9_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_10_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_11_SSE2); + TriDrawSubsector8.push_back(TriDrawSubsector8_12_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_0_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_1_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_2_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_3_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_4_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_5_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_6_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_7_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_8_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_9_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_10_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_11_SSE2); + TriDrawSubsector32.push_back(TriDrawSubsector32_12_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_0_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_1_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_2_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_3_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_4_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_5_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_6_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_7_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_8_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_9_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_10_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_11_SSE2); + TriFillSubsector8.push_back(TriFillSubsector8_12_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_0_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_1_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_2_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_3_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_4_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_5_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_6_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_7_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_8_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_9_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_10_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_11_SSE2); + TriFillSubsector32.push_back(TriFillSubsector32_12_SSE2); + TriStencil = TriStencil_SSE2; + TriStencilClose = TriStencilClose_SSE2; +} + Drawers *Drawers::Instance() { static Drawers drawers; - static bool firstcall = true; - - if (!firstcall) - return &drawers; - - drawers.DrawColumn = DrawColumn_SSE2; - drawers.DrawColumnAdd = DrawColumnAdd_SSE2; - drawers.DrawColumnShaded = DrawColumnShaded_SSE2; - drawers.DrawColumnAddClamp = DrawColumnAddClamp_SSE2; - drawers.DrawColumnSubClamp = DrawColumnSubClamp_SSE2; - drawers.DrawColumnRevSubClamp = DrawColumnRevSubClamp_SSE2; - drawers.DrawColumnTranslated = DrawColumnTranslated_SSE2; - drawers.DrawColumnTlatedAdd = DrawColumnTlatedAdd_SSE2; - drawers.DrawColumnAddClampTranslated = DrawColumnAddClampTranslated_SSE2; - drawers.DrawColumnSubClampTranslated = DrawColumnSubClampTranslated_SSE2; - drawers.DrawColumnRevSubClampTranslated = DrawColumnRevSubClampTranslated_SSE2; - drawers.FillColumn = FillColumn_SSE2; - drawers.FillColumnAdd = FillColumnAdd_SSE2; - drawers.FillColumnAddClamp = FillColumnAddClamp_SSE2; - drawers.FillColumnSubClamp = FillColumnSubClamp_SSE2; - drawers.FillColumnRevSubClamp = FillColumnRevSubClamp_SSE2; - drawers.DrawColumnRt1 = DrawColumnRt1_SSE2; - drawers.DrawColumnRt1Copy = DrawColumnRt1Copy_SSE2; - drawers.DrawColumnRt1Add = DrawColumnRt1Add_SSE2; - drawers.DrawColumnRt1Shaded = DrawColumnRt1Shaded_SSE2; - drawers.DrawColumnRt1AddClamp = DrawColumnRt1AddClamp_SSE2; - drawers.DrawColumnRt1SubClamp = DrawColumnRt1SubClamp_SSE2; - drawers.DrawColumnRt1RevSubClamp = DrawColumnRt1RevSubClamp_SSE2; - drawers.DrawColumnRt1Translated = DrawColumnRt1Translated_SSE2; - drawers.DrawColumnRt1TlatedAdd = DrawColumnRt1TlatedAdd_SSE2; - drawers.DrawColumnRt1AddClampTranslated = DrawColumnRt1AddClampTranslated_SSE2; - drawers.DrawColumnRt1SubClampTranslated = DrawColumnRt1SubClampTranslated_SSE2; - drawers.DrawColumnRt1RevSubClampTranslated = DrawColumnRt1RevSubClampTranslated_SSE2; - drawers.DrawColumnRt4 = DrawColumnRt4_SSE2; - drawers.DrawColumnRt4Copy = DrawColumnRt4Copy_SSE2; - drawers.DrawColumnRt4Add = DrawColumnRt4Add_SSE2; - drawers.DrawColumnRt4Shaded = DrawColumnRt4Shaded_SSE2; - drawers.DrawColumnRt4AddClamp = DrawColumnRt4AddClamp_SSE2; - drawers.DrawColumnRt4SubClamp = DrawColumnRt4SubClamp_SSE2; - drawers.DrawColumnRt4RevSubClamp = DrawColumnRt4RevSubClamp_SSE2; - drawers.DrawColumnRt4Translated = DrawColumnRt4Translated_SSE2; - drawers.DrawColumnRt4TlatedAdd = DrawColumnRt4TlatedAdd_SSE2; - drawers.DrawColumnRt4AddClampTranslated = DrawColumnRt4AddClampTranslated_SSE2; - drawers.DrawColumnRt4SubClampTranslated = DrawColumnRt4SubClampTranslated_SSE2; - drawers.DrawColumnRt4RevSubClampTranslated = DrawColumnRt4RevSubClampTranslated_SSE2; - drawers.DrawSpan = DrawSpan_SSE2; - drawers.DrawSpanMasked = DrawSpanMasked_SSE2; - drawers.DrawSpanTranslucent = DrawSpanTranslucent_SSE2; - drawers.DrawSpanMaskedTranslucent = DrawSpanMaskedTranslucent_SSE2; - drawers.DrawSpanAddClamp = DrawSpanAddClamp_SSE2; - drawers.DrawSpanMaskedAddClamp = DrawSpanMaskedAddClamp_SSE2; - drawers.vlinec1 = vlinec1_SSE2; - drawers.vlinec4 = vlinec4_SSE2; - drawers.mvlinec1 = mvlinec1_SSE2; - drawers.mvlinec4 = mvlinec4_SSE2; - drawers.tmvline1_add = tmvline1_add_SSE2; - drawers.tmvline4_add = tmvline4_add_SSE2; - drawers.tmvline1_addclamp = tmvline1_addclamp_SSE2; - drawers.tmvline4_addclamp = tmvline4_addclamp_SSE2; - drawers.tmvline1_subclamp = tmvline1_subclamp_SSE2; - drawers.tmvline4_subclamp = tmvline4_subclamp_SSE2; - drawers.tmvline1_revsubclamp = tmvline1_revsubclamp_SSE2; - drawers.tmvline4_revsubclamp = tmvline4_revsubclamp_SSE2; - drawers.DrawSky1 = DrawSky1_SSE2; - drawers.DrawSky4 = DrawSky4_SSE2; - drawers.DrawDoubleSky1 = DrawDoubleSky1_SSE2; - drawers.DrawDoubleSky4 = DrawDoubleSky4_SSE2; - drawers.TriDrawNormal8.push_back(TriDrawNormal8_0_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_1_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_2_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_3_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_4_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_5_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_6_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_7_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_8_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_9_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_10_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_11_SSE2); - drawers.TriDrawNormal8.push_back(TriDrawNormal8_12_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_0_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_1_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_2_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_3_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_4_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_5_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_6_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_7_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_8_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_9_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_10_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_11_SSE2); - drawers.TriDrawNormal32.push_back(TriDrawNormal32_12_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_0_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_1_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_2_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_3_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_4_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_5_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_6_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_7_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_8_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_9_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_10_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_11_SSE2); - drawers.TriFillNormal8.push_back(TriFillNormal8_12_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_0_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_1_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_2_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_3_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_4_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_5_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_6_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_7_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_8_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_9_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_10_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_11_SSE2); - drawers.TriFillNormal32.push_back(TriFillNormal32_12_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_0_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_1_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_2_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_3_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_4_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_5_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_6_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_7_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_8_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_9_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_10_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_11_SSE2); - drawers.TriDrawSubsector8.push_back(TriDrawSubsector8_12_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_0_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_1_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_2_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_3_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_4_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_5_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_6_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_7_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_8_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_9_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_10_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_11_SSE2); - drawers.TriDrawSubsector32.push_back(TriDrawSubsector32_12_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_0_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_1_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_2_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_3_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_4_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_5_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_6_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_7_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_8_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_9_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_10_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_11_SSE2); - drawers.TriFillSubsector8.push_back(TriFillSubsector8_12_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_0_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_1_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_2_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_3_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_4_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_5_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_6_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_7_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_8_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_9_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_10_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_11_SSE2); - drawers.TriFillSubsector32.push_back(TriFillSubsector32_12_SSE2); - drawers.TriStencil = TriStencil_SSE2; - drawers.TriStencilClose = TriStencilClose_SSE2; - - firstcall = false; return &drawers; } diff --git a/src/r_drawers.h b/src/r_drawers.h index e986181abe..47a145b5a5 100644 --- a/src/r_drawers.h +++ b/src/r_drawers.h @@ -340,4 +340,7 @@ public: std::vector TriFillSubsector32; void(*TriStencil)(const TriDrawTriangleArgs *, WorkerThreadData *) = nullptr; void(*TriStencilClose)(const TriDrawTriangleArgs *, WorkerThreadData *) = nullptr; + +private: + Drawers(); };