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 @@ - + ::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