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.
This commit is contained in:
Person
2017-09-02 23:01:10 -07:00
parent 48f4f0f5b1
commit 98ff28a9a9
18 changed files with 58 additions and 28 deletions

View File

@ -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<CL_MEM_HOST_PTR>(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()"))

View File

@ -1154,18 +1154,19 @@ eRenderStatus RendererCL<T, bucketT>::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);
}
/// <summary>
@ -1273,7 +1274,8 @@ eRenderStatus RendererCL<T, bucketT>::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");
}