Skip to content

Commit 4c984cb

Browse files
Merge branch 'vulkan_1_3' of github.com:Devsh-Graphics-Programming/Nabla into blit
2 parents df0d845 + 84d9aca commit 4c984cb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1294
-1986
lines changed

3rdparty/dxc/dxc

Submodule dxc updated 1614 files

include/IVideoCapabilityReporter.h

Lines changed: 0 additions & 67 deletions
This file was deleted.

include/IVideoDriver.h

Lines changed: 0 additions & 34 deletions
This file was deleted.

include/nbl/asset/IAssetManager.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ std::function<void(SAssetBundle&)> makeAssetDisposeFunc(const IAssetManager* con
4545
@see IAsset
4646
4747
*/
48-
class NBL_API2 IAssetManager : public core::IReferenceCounted, public core::QuitSignalling
48+
class NBL_API2 IAssetManager : public core::IReferenceCounted
4949
{
5050
// the point of those functions is that lambdas returned by them "inherits" friendship
5151
friend std::function<void(SAssetBundle&)> makeAssetGreetFunc(const IAssetManager* const _mgr);
@@ -150,8 +150,6 @@ class NBL_API2 IAssetManager : public core::IReferenceCounted, public core::Quit
150150
protected:
151151
virtual ~IAssetManager()
152152
{
153-
quitEventHandler.execute();
154-
155153
for (size_t i = 0u; i < m_assetCache.size(); ++i)
156154
if (m_assetCache[i])
157155
delete m_assetCache[i];

include/nbl/asset/IFramebuffer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class IFramebuffer
9696
if (!attachments[i])
9797
return true;
9898
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFramebufferCreateInfo.html#VUID-VkFramebufferCreateInfo-commonparent
99-
if (rp->isCompatibleDevicewise(attachments[i].get()))
99+
if (!rp->isCompatibleDevicewise(attachments[i].get()))
100100
return true;
101101

102102
const auto& viewParams = attachments[i]->getCreationParameters();

include/nbl/asset/IImageView.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,20 +102,14 @@ class IImageView : public IDescriptor
102102
return false;
103103

104104
const auto& imgParams = _params.image->getCreationParameters();
105-
/* TODO: LAter
106-
image must have been created with a usage value containing at least one of VK_IMAGE_USAGE_SAMPLED_BIT,
107-
VK_IMAGE_USAGE_STORAGE_BIT, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
108-
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV, or VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
109-
if (imgParams.)
110-
return false;
111-
*/
112-
105+
#if 0 // extremely annoying
113106
const auto kValidUsages = IImage::EUF_SAMPLED_BIT|IImage::EUF_STORAGE_BIT|
114107
IImage::EUF_RENDER_ATTACHMENT_BIT|IImage::EUF_TRANSIENT_ATTACHMENT_BIT|IImage::EUF_INPUT_ATTACHMENT_BIT|
115108
IImage::EUF_SHADING_RATE_ATTACHMENT_BIT|IImage::EUF_FRAGMENT_DENSITY_MAP_BIT;
116109
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewCreateInfo.html#VUID-VkImageViewCreateInfo-image-04441
117110
if ((imgParams.usage.value&kValidUsages)==0u)
118111
return false;
112+
#endif
119113

120114
const auto& subresourceRange = _params.subresourceRange;
121115
// declared some usages but they are not a subset

include/nbl/asset/format/EFormat.h

Lines changed: 52 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1762,18 +1762,28 @@ inline value_type getFormatMaxValue(E_FORMAT format, uint32_t channel)
17621762
{
17631763
switch (format)
17641764
{
1765-
case EF_BC6H_SFLOAT_BLOCK: return 32767;
1766-
case EF_BC6H_UFLOAT_BLOCK: return 65504;
1767-
default: break;
1765+
case EF_B10G11R11_UFLOAT_PACK32:
1766+
if (channel<=1)
1767+
return 65520;
1768+
else if (channel==2)
1769+
return 65504;
1770+
break;
1771+
case EF_E5B9G9R9_UFLOAT_PACK32:
1772+
if (channel<3)
1773+
return 32704;
1774+
break;
1775+
case EF_BC6H_SFLOAT_BLOCK: return 32767;
1776+
case EF_BC6H_UFLOAT_BLOCK: return 65504;
1777+
default: break;
17681778
}
17691779

17701780
auto bytesPerChannel = (getBytesPerPixel(format)*core::rational(1,getFormatChannelCount(format))).getIntegerApprox();
17711781
switch (bytesPerChannel)
17721782
{
1773-
case 2u: return 65504;
1774-
case 4u: return FLT_MAX;
1775-
case 8u: return DBL_MAX;
1776-
default: break;
1783+
case 2u: return 65504;
1784+
case 4u: return FLT_MAX;
1785+
case 8u: return DBL_MAX;
1786+
default: break;
17771787
}
17781788
}
17791789
return 0;
@@ -1882,44 +1892,47 @@ inline value_type getFormatPrecision(E_FORMAT format, uint32_t channel, value_ty
18821892
else if (isFloatingPointFormat(format))
18831893
{
18841894
switch (format)
1885-
{
1886-
case EF_B10G11R11_UFLOAT_PACK32:
18871895
{
18881896
// unsigned values are always ordered as + 1
1889-
float f = std::abs(static_cast<float>(value));
1890-
int bitshft = channel == 2u ? 6 : 5;
1891-
1892-
uint16_t f16 = core::Float16Compressor::compress(f);
1893-
uint16_t enc = f16 >> bitshft;
1894-
uint16_t next_f16 = (enc + 1) << bitshft;
1895-
1896-
return core::Float16Compressor::decompress(next_f16) - f;
1897-
}
1898-
case EF_E5B9G9R9_UFLOAT_PACK32:
1899-
return 0; //TODO
1900-
default: break;
1897+
case EF_B10G11R11_UFLOAT_PACK32: [[fallthrough]];
1898+
case EF_E5B9G9R9_UFLOAT_PACK32: // TODO: probably need to change signature and take all values?
1899+
{
1900+
float f = std::abs(static_cast<float>(value));
1901+
int bitshift;
1902+
if (format==EF_B10G11R11_UFLOAT_PACK32)
1903+
bitshift = channel==2u ? 6:5;
1904+
else
1905+
bitshift = 4;
1906+
1907+
uint16_t f16 = core::Float16Compressor::compress(f);
1908+
uint16_t enc = f16 >> bitshift;
1909+
uint16_t next_f16 = (enc + 1) << bitshift;
1910+
1911+
return core::Float16Compressor::decompress(next_f16) - f;
1912+
}
1913+
default: break;
19011914
}
19021915
auto bytesPerChannel = (getBytesPerPixel(format)*core::rational(1,getFormatChannelCount(format))).getIntegerApprox();
19031916
switch (bytesPerChannel)
19041917
{
1905-
case 2u:
1906-
{
1907-
float f = std::abs(static_cast<float>(value));
1908-
uint16_t f16 = core::Float16Compressor::compress(f);
1909-
uint16_t dir = core::Float16Compressor::compress(2.f*(f+1.f));
1910-
return core::Float16Compressor::decompress( core::nextafter16(f16, dir) ) - f;
1911-
}
1912-
case 4u:
1913-
{
1914-
float f32 = std::abs(static_cast<float>(value));
1915-
return core::nextafter32(f32,2.f*(f32+1.f))-f32;
1916-
}
1917-
case 8u:
1918-
{
1919-
double f64 = std::abs(static_cast<double>(value));
1920-
return core::nextafter64(f64,2.0*(f64+1.0))-f64;
1921-
}
1922-
default: break;
1918+
case 2u:
1919+
{
1920+
float f = std::abs(static_cast<float>(value));
1921+
uint16_t f16 = core::Float16Compressor::compress(f);
1922+
uint16_t dir = core::Float16Compressor::compress(2.f*(f+1.f));
1923+
return core::Float16Compressor::decompress( core::nextafter16(f16, dir) ) - f;
1924+
}
1925+
case 4u:
1926+
{
1927+
float f32 = std::abs(static_cast<float>(value));
1928+
return core::nextafter32(f32,2.f*(f32+1.f))-f32;
1929+
}
1930+
case 8u:
1931+
{
1932+
double f64 = std::abs(static_cast<double>(value));
1933+
return core::nextafter64(f64,2.0*(f64+1.0))-f64;
1934+
}
1935+
default: break;
19231936
}
19241937
}
19251938

include/nbl/asset/format/encodePixels.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2488,6 +2488,7 @@ namespace asset
24882488
inp >>= 52;
24892489
inp &= 0x7ffull;
24902490
inp -= (1023ull - 15ull);
2491+
// TODO: this is wrong, need to get maximum exponent across all 3 input values
24912492
exp = (static_cast<uint32_t>(inp) << 27);
24922493
}
24932494
for (uint32_t i = 0u; i < 3u; ++i)

include/nbl/builtin/hlsl/cpp_compat/intrinsics.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ inline T determinant(const matrix<T,N,M>& m)
5353

5454
NBL_BIT_OP_GLM_PASSTHROUGH(findLSB,findLSB)
5555

56-
NBL_BIT_OP_GLM_PASSTHROUGH(findMSB,findLSB)
56+
NBL_BIT_OP_GLM_PASSTHROUGH(findMSB,findMSB)
5757

5858
// inverse not defined cause its implemented via hidden friend
5959
template<typename T, uint16_t N, uint16_t M>

0 commit comments

Comments
 (0)