From 98ff28a9a9590a95cc413f778d105df14f79dc3f Mon Sep 17 00:00:00 2001 From: Person Date: Sat, 2 Sep 2017 23:01:10 -0700 Subject: [PATCH] 1.0.0.6 Release --Bug fixes -Strips renders crashed. -Better handling of large memory allocations by forcing a free of previous allocations. -Final render dialog did not properly save last used extension setting. -Density filtering progress bar in final render dialog did not update if only log scaling was being used. --- .../Installer/FractoriumInstaller.wixproj | 2 +- Builds/MSVC/Installer/Product.wxs | 4 ++-- Builds/MSVC/VS2015/Ember.rc | Bin 4502 -> 4502 bytes Builds/MSVC/VS2015/EmberAnimate.rc | 8 ++++---- Builds/MSVC/VS2015/EmberCL.rc | Bin 4528 -> 4528 bytes Builds/MSVC/VS2015/EmberGenome.rc | 8 ++++---- Builds/MSVC/VS2015/EmberRender.rc | 8 ++++---- Builds/MSVC/VS2015/Fractorium.rc | Bin 4470 -> 4470 bytes Builds/QtCreator/defaults.pri | 2 +- Data/Version History.txt | 7 +++++++ Source/Ember/EmberDefines.h | 2 +- Source/Ember/Renderer.cpp | 5 +++++ Source/EmberCL/OpenCLWrapper.cpp | 14 ++++++++++++-- Source/EmberCL/RendererCL.cpp | 12 +++++++----- Source/EmberCommon/EmberCommon.h | 4 ++-- Source/Fractorium/AboutDialog.ui | 2 +- Source/Fractorium/FinalRenderDialog.cpp | 2 +- debian/changelog | 6 ++++++ 18 files changed, 58 insertions(+), 28 deletions(-) diff --git a/Builds/MSVC/Installer/FractoriumInstaller.wixproj b/Builds/MSVC/Installer/FractoriumInstaller.wixproj index d81de6c..516c04e 100644 --- a/Builds/MSVC/Installer/FractoriumInstaller.wixproj +++ b/Builds/MSVC/Installer/FractoriumInstaller.wixproj @@ -6,7 +6,7 @@ 3.7 {c8096c47-e358-438c-a520-146d46b0637d} 2.0 - Fractorium_1.0.0.5 + Fractorium_1.0.0.6 Package $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets diff --git a/Builds/MSVC/Installer/Product.wxs b/Builds/MSVC/Installer/Product.wxs index 0f337ba..805140c 100644 --- a/Builds/MSVC/Installer/Product.wxs +++ b/Builds/MSVC/Installer/Product.wxs @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + Sb-bc&;MsE$F delta 44 zcmbQHJWYAS7Y;_#$zM6l8BI6qa_(mWa`y9xZ)V|{z{qUMpfuT#Pj>Sb-bc&;MhXp` diff --git a/Builds/MSVC/VS2015/EmberAnimate.rc b/Builds/MSVC/VS2015/EmberAnimate.rc index b741f23..3731628 100644 --- a/Builds/MSVC/VS2015/EmberAnimate.rc +++ b/Builds/MSVC/VS2015/EmberAnimate.rc @@ -49,8 +49,8 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1, 0, 0, 5 - PRODUCTVERSION 1, 0, 0, 5 + FILEVERSION 1, 0, 0, 6 + PRODUCTVERSION 1, 0, 0, 6 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -67,12 +67,12 @@ BEGIN VALUE "CompanyName", "Open Source" VALUE "FileDescription", "Renders fractal flames as animations with motion blur" - VALUE "FileVersion", "1.0.0.5" + VALUE "FileVersion", "1.0.0.6" VALUE "InternalName", "EmberAnimate.exe" VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2017, GPL v3" VALUE "OriginalFilename", "EmberAnimate.exe" VALUE "ProductName", "Ember Animate" - VALUE "ProductVersion", "1.0.0.5" + VALUE "ProductVersion", "1.0.0.6" END END BLOCK "VarFileInfo" diff --git a/Builds/MSVC/VS2015/EmberCL.rc b/Builds/MSVC/VS2015/EmberCL.rc index 1cbefa4b022ed455da1f2b0f3bc884c663cfdc25..5b2acf1b16547a6747ac25501c64081898ef522f 100644 GIT binary patch delta 46 zcmdm>yg_-xCk{rl$)7pQSyg_-xCk{r_$)7pQSxp&u8Mr2ISZ-bc&;QPmBy delta 44 zcmeyS^i65Q84gC%$!9st8BI5{a;{_oau|8UHy`6($H;8Tpfp*KPj>SZ-bc&;QE&~e diff --git a/Builds/QtCreator/defaults.pri b/Builds/QtCreator/defaults.pri index be0867c..9d94707 100644 --- a/Builds/QtCreator/defaults.pri +++ b/Builds/QtCreator/defaults.pri @@ -1,4 +1,4 @@ -VERSION = 1.0.0.5 +VERSION = 1.0.0.6 win32:CONFIG += skip_target_version_ext CONFIG += c++14 diff --git a/Data/Version History.txt b/Data/Version History.txt index e8eadc1..d521f72 100644 --- a/Data/Version History.txt +++ b/Data/Version History.txt @@ -1,3 +1,10 @@ +1.0.0.6 09/02/2017 +--Bug fixes + -Strips renders crashed. + -Better handling of large memory allocations by forcing a free of previous allocations. + -Final render dialog did not properly save last used extension setting. + -Density filtering progress bar in final render dialog did not update if only log scaling was being used. + 1.0.0.5 08/28/2017 --User changes -Add support for Exr files which use 32-bit floats for each RGBA channel. diff --git a/Source/Ember/EmberDefines.h b/Source/Ember/EmberDefines.h index 75114ab..a57b444 100644 --- a/Source/Ember/EmberDefines.h +++ b/Source/Ember/EmberDefines.h @@ -37,7 +37,7 @@ static void sincos(float x, float* s, float* c) namespace EmberNs { -#define EMBER_VERSION "1.0.0.5" +#define EMBER_VERSION "1.0.0.6" #define EPS6 T(1e-6) #define EPS std::numeric_limits::epsilon()//Apoplugin.h uses -20, but it's more mathematically correct to do it this way. #define ISAAC_SIZE 4 diff --git a/Source/Ember/Renderer.cpp b/Source/Ember/Renderer.cpp index 7f23a2d..e7793dc 100644 --- a/Source/Ember/Renderer.cpp +++ b/Source/Ember/Renderer.cpp @@ -909,6 +909,11 @@ eRenderStatus Renderer::LogScaleDensityFilter(bool forceOutput) , tbb::static_partitioner() #endif ); + + if (m_Callback && !m_Abort) + if (!m_Callback->ProgressFunc(m_Ember, m_ProgressParameter, 100.0, 1, 0)) + Abort(); + //t.Toc(__FUNCTION__); return m_Abort ? eRenderStatus::RENDER_ABORT : eRenderStatus::RENDER_OK; } diff --git a/Source/EmberCL/OpenCLWrapper.cpp b/Source/EmberCL/OpenCLWrapper.cpp index 3f0a0b0..c5c4ca5 100644 --- a/Source/EmberCL/OpenCLWrapper.cpp +++ b/Source/EmberCL/OpenCLWrapper.cpp @@ -139,7 +139,12 @@ bool OpenCLWrapper::AddBuffer(const string& name, size_t size, cl_mem_flags flag } else if (GetBufferSize(bufferIndex) != size)//If it did exist, only create and add if the sizes were different. { - m_Buffers[bufferIndex] = NamedBuffer(cl::Buffer(m_Context, flags, size_t(0), nullptr, &err), "emptybuffer");//First clear out the original so the two don't exist in memory at once. + m_Buffers[bufferIndex] = NamedBuffer(cl::Buffer(m_Context, flags, size_t(1), nullptr, &err), "emptybuffer");//First clear out the original so the two don't exist in memory at once. + char ch = 0; + + if (!WriteBuffer("emptybuffer", &ch, 1))//Write the dummy buffer at least once because OpenCL seems to do a lazy instantiation of buffers. + return false; + cl::Buffer buff(m_Context, flags, size, nullptr, &err);//Create the new buffer. if (!m_Info->CheckCL(err, "cl::Buffer()")) @@ -190,7 +195,12 @@ bool OpenCLWrapper::AddHostBuffer(const string& name, size_t size, void* data) if (GetBufferSize(bufferIndex) != size ||//If it did exist, only create and add if the sizes... data != m_Buffers[bufferIndex].m_Buffer.getInfo(nullptr))//...or addresses were different. { - m_Buffers[bufferIndex] = NamedBuffer(cl::Buffer(m_Context, CL_MEM_USE_HOST_PTR, size_t(0), data, &err), "emptybuffer");//First clear out the original so the two don't exist in memory at once. + m_Buffers[bufferIndex] = NamedBuffer(cl::Buffer(m_Context, CL_MEM_USE_HOST_PTR, size_t(1), data, &err), "emptybuffer");//First clear out the original so the two don't exist in memory at once. + char ch = 0; + + if (!WriteBuffer("emptybuffer", &ch, 1))//Write the dummy buffer at least once because OpenCL seems to do a lazy instantiation of buffers. + return false; + cl::Buffer buff(m_Context, CL_MEM_USE_HOST_PTR, size, data, &err);//Create the new buffer. if (!m_Info->CheckCL(err, "cl::Buffer()")) diff --git a/Source/EmberCL/RendererCL.cpp b/Source/EmberCL/RendererCL.cpp index c3ce654..407133b 100644 --- a/Source/EmberCL/RendererCL.cpp +++ b/Source/EmberCL/RendererCL.cpp @@ -1154,18 +1154,19 @@ eRenderStatus RendererCL::RunLogScaleFilter() if (b && !(b = wrapper.RunKernel(kernelIndex, gridW, gridH, 1, blockW, blockH, 1))) { AddToReport(loc); } //t.Toc(loc); + + if (b && m_Callback) + if (!m_Callback->ProgressFunc(m_Ember, m_ProgressParameter, 100.0, 1, 0.0)) + Abort(); } else { b = false; AddToReport(loc); } - - if (b && m_Callback && m_LastIterPercent >= 99.0)//Only update progress if we've really reached the end, not via forced output. - m_Callback->ProgressFunc(m_Ember, m_ProgressParameter, 100.0, 1, 0.0); } - return b ? eRenderStatus::RENDER_OK : eRenderStatus::RENDER_ERROR; + return m_Abort ? eRenderStatus::RENDER_ABORT : (b ? eRenderStatus::RENDER_OK : eRenderStatus::RENDER_ERROR); } /// @@ -1273,7 +1274,8 @@ eRenderStatus RendererCL::RunDensityFilter() #endif if (b && m_Callback) - m_Callback->ProgressFunc(m_Ember, m_ProgressParameter, 100.0, 1, 0.0); + if (!m_Callback->ProgressFunc(m_Ember, m_ProgressParameter, 100.0, 1, 0.0)) + Abort(); //t2.Toc(__FUNCTION__ " all passes"); } diff --git a/Source/EmberCommon/EmberCommon.h b/Source/EmberCommon/EmberCommon.h index 0093d54..cb89de8 100644 --- a/Source/EmberCommon/EmberCommon.h +++ b/Source/EmberCommon/EmberCommon.h @@ -572,9 +572,9 @@ static bool StripsRender(RendererBase* renderer, Ember& ember, vector& f size_t stripOffset; if (yAxisUp) - stripOffset = ember.m_FinalRasH * ((strips - strip) - 1) * renderer->FinalRowSize(); + stripOffset = ember.m_FinalRasH * ((strips - strip) - 1) * ember.m_FinalRasW; else - stripOffset = ember.m_FinalRasH * strip * renderer->FinalRowSize(); + stripOffset = ember.m_FinalRasH * strip * ember.m_FinalRasW; ember.m_CenterY = centerBase + ember.m_FinalRasH * T(strip) / (ember.m_PixelsPerUnit * zoomScale); diff --git a/Source/Fractorium/AboutDialog.ui b/Source/Fractorium/AboutDialog.ui index 85fed3f..ec00dbb 100644 --- a/Source/Fractorium/AboutDialog.ui +++ b/Source/Fractorium/AboutDialog.ui @@ -58,7 +58,7 @@ QFrame::NoFrame - <html><head/><body><p align="center">Fractorium 1.0.0.5</p><p align="center"><span style=" font-size:10pt;">A Qt-based fractal flame editor which uses a C++ re-write of the flam3 algorithm named Ember and a GPU capable version named EmberCL which implements a portion of the cuburn algorithm in OpenCL.</span></p><p align="center"><a href="http://fractorium.com"><span style=" text-decoration: underline; color:#0000ff;">fractorium.com</span></a><span style=" font-size:10pt;"><br/>Lead: Matt Feemster<br/>Contributors: Simon Detheridge, Michel Mastriani</span></p></body></html> + <html><head/><body><p align="center">Fractorium 1.0.0.6</p><p align="center"><span style=" font-size:10pt;">A Qt-based fractal flame editor which uses a C++ re-write of the flam3 algorithm named Ember and a GPU capable version named EmberCL which implements a portion of the cuburn algorithm in OpenCL.</span></p><p align="center"><a href="http://fractorium.com"><span style=" text-decoration: underline; color:#0000ff;">fractorium.com</span></a><span style=" font-size:10pt;"><br/>Lead: Matt Feemster<br/>Contributors: Simon Detheridge, Michel Mastriani</span></p></body></html> Qt::RichText diff --git a/Source/Fractorium/FinalRenderDialog.cpp b/Source/Fractorium/FinalRenderDialog.cpp index 0884551..0ca2d21 100644 --- a/Source/Fractorium/FinalRenderDialog.cpp +++ b/Source/Fractorium/FinalRenderDialog.cpp @@ -52,7 +52,7 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(QWidget* p, Qt::WindowF m_ItersCellIndex = row++;//Iters. m_PathCellIndex = row; QStringList comboList; -#ifndef _WIN32 +#ifdef _WIN32 comboList.append("bmp"); #endif comboList.append("jpg"); diff --git a/debian/changelog b/debian/changelog index 2be6ed7..b1c6887 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +fractorium (1.0.0.6-0ubuntu1) xenial; urgency=low + + * release 1.0.0.6 + + -- Matt Feemster Sat, 02 Sep 2017 17:51:15 -0700 + fractorium (1.0.0.5c-0ubuntu1) xenial; urgency=low * release 1.0.0.5