Compare commits
12
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5aded33477 | ||
|
|
659b8b6e03 | ||
|
|
c73f4e64d5 | ||
|
|
fe743523bf | ||
|
|
2c1044e812 | ||
|
|
db9183a105 | ||
|
|
e4a0bb8fa0 | ||
|
|
d15c53e530 | ||
|
|
cc8a3ed96b | ||
|
|
213eb6af9e | ||
|
|
e04c6d406f | ||
|
|
cab799f531 |
@@ -176,6 +176,7 @@ steps:
|
||||
- [x] KHR_materials_unlit
|
||||
- [x] KHR_materials_variants
|
||||
- [x] KHR_materials_volume
|
||||
- [x] KHR_materials_specular
|
||||
- [x] KHR_mesh_quantization
|
||||
- [x] KHR_texture_basisu
|
||||
- [x] KHR_texture_transform
|
||||
|
||||
@@ -7,6 +7,9 @@ A new header is inserted each time a *tag* is created.
|
||||
Instead, if you are authoring a PR for the main branch, add your release note to
|
||||
[NEW_RELEASE_NOTES.md](./NEW_RELEASE_NOTES.md).
|
||||
|
||||
## v1.53.2
|
||||
|
||||
|
||||
## v1.53.1
|
||||
|
||||
|
||||
|
||||
@@ -571,3 +571,9 @@ Java_com_google_android_filament_Engine_nBuilderBuild(JNIEnv*, jclass, jlong nat
|
||||
Engine::Builder* builder = (Engine::Builder*) nativeBuilder;
|
||||
return (jlong) builder->build();
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_com_google_android_filament_Engine_getSteadyClockTimeNano(JNIEnv *env, jclass clazz) {
|
||||
return (jlong)Engine::getSteadyClockTimeNano();
|
||||
}
|
||||
|
||||
@@ -25,12 +25,17 @@ using namespace filament;
|
||||
|
||||
extern "C" JNIEXPORT jlong JNICALL
|
||||
Java_com_google_android_filament_Material_nBuilderBuild(JNIEnv *env, jclass,
|
||||
jlong nativeEngine, jobject buffer_, jint size) {
|
||||
jlong nativeEngine, jobject buffer_, jint size, jint shBandCount) {
|
||||
Engine* engine = (Engine*) nativeEngine;
|
||||
AutoBuffer buffer(env, buffer_, size);
|
||||
Material* material = Material::Builder()
|
||||
auto builder = Material::Builder();
|
||||
if (shBandCount) {
|
||||
builder.sphericalHarmonicsBandCount(shBandCount);
|
||||
}
|
||||
Material* material = builder
|
||||
.package(buffer.getData(), buffer.getSize())
|
||||
.build(*engine);
|
||||
|
||||
return (jlong) material;
|
||||
}
|
||||
|
||||
|
||||
@@ -187,3 +187,10 @@ Java_com_google_android_filament_Renderer_nSetPresentationTime(JNIEnv *, jclass
|
||||
Renderer *renderer = (Renderer *) nativeRenderer;
|
||||
renderer->setPresentationTime(monotonicClockNanos);
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT void JNICALL
|
||||
Java_com_google_android_filament_Renderer_nSetVsyncTime(JNIEnv *, jclass,
|
||||
jlong nativeRenderer, jlong steadyClockTimeNano) {
|
||||
Renderer *renderer = (Renderer *) nativeRenderer;
|
||||
renderer->setVsyncTime(steadyClockTimeNano);
|
||||
}
|
||||
|
||||
@@ -1292,7 +1292,6 @@ public class Engine {
|
||||
/**
|
||||
* Switch the command queue to unprotected mode. Protected mode can be activated via
|
||||
* Renderer::beginFrame() using a protected SwapChain.
|
||||
|
||||
* @see Renderer
|
||||
* @see SwapChain
|
||||
*/
|
||||
@@ -1300,6 +1299,13 @@ public class Engine {
|
||||
nUnprotected(getNativeObject());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current time. This is a convenience function that simply returns the
|
||||
* time in nanosecond since epoch of std::chrono::steady_clock.
|
||||
* @return current time in nanosecond since epoch of std::chrono::steady_clock.
|
||||
* @see Renderer#beginFrame
|
||||
*/
|
||||
public static native long getSteadyClockTimeNano();
|
||||
|
||||
@UsedByReflection("TextureHelper.java")
|
||||
public long getNativeObject() {
|
||||
|
||||
@@ -346,6 +346,7 @@ public class Material {
|
||||
public static class Builder {
|
||||
private Buffer mBuffer;
|
||||
private int mSize;
|
||||
private int mShBandCount = 0;
|
||||
|
||||
/**
|
||||
* Specifies the material data. The material data is a binary blob produced by
|
||||
@@ -361,6 +362,22 @@ public class Material {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the quality of the indirect lights computations. This is only taken into account
|
||||
* if this material is lit and in the surface domain. This setting will affect the
|
||||
* IndirectLight computation if one is specified on the Scene and Spherical Harmonics
|
||||
* are used for the irradiance.
|
||||
*
|
||||
* @param shBandCount Number of spherical harmonic bands. Must be 1, 2 or 3 (default).
|
||||
* @return Reference to this Builder for chaining calls.
|
||||
* @see IndirectLight
|
||||
*/
|
||||
@NonNull
|
||||
public Builder sphericalHarmonicsBandCount(@IntRange(from = 0) int shBandCount) {
|
||||
mShBandCount = shBandCount;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and returns the Material object.
|
||||
*
|
||||
@@ -372,7 +389,8 @@ public class Material {
|
||||
*/
|
||||
@NonNull
|
||||
public Material build(@NonNull Engine engine) {
|
||||
long nativeMaterial = nBuilderBuild(engine.getNativeObject(), mBuffer, mSize);
|
||||
long nativeMaterial = nBuilderBuild(engine.getNativeObject(),
|
||||
mBuffer, mSize, mShBandCount);
|
||||
if (nativeMaterial == 0) throw new IllegalStateException("Couldn't create Material");
|
||||
return new Material(nativeMaterial);
|
||||
}
|
||||
@@ -1023,7 +1041,7 @@ public class Material {
|
||||
mNativeObject = 0;
|
||||
}
|
||||
|
||||
private static native long nBuilderBuild(long nativeEngine, @NonNull Buffer buffer, int size);
|
||||
private static native long nBuilderBuild(long nativeEngine, @NonNull Buffer buffer, int size, int shBandCount);
|
||||
private static native long nCreateInstance(long nativeMaterial);
|
||||
private static native long nCreateInstanceWithName(long nativeMaterial, @NonNull String name);
|
||||
private static native long nGetDefaultInstance(long nativeMaterial);
|
||||
|
||||
@@ -284,6 +284,19 @@ public class Renderer {
|
||||
nSetPresentationTime(getNativeObject(), monotonicClockNanos);
|
||||
}
|
||||
|
||||
/**
|
||||
* The use of this method is optional. It sets the VSYNC time expressed as the duration in
|
||||
* nanosecond since epoch of std::chrono::steady_clock.
|
||||
* If called, passing 0 to frameTimeNanos in Renderer.BeginFrame will use this
|
||||
* time instead.
|
||||
* @param steadyClockTimeNano duration in nanosecond since epoch of std::chrono::steady_clock
|
||||
* @see Engine#getSteadyClockTimeNano
|
||||
* @see Renderer#beginFrame
|
||||
*/
|
||||
public void setVsyncTime(long steadyClockTimeNano) {
|
||||
nSetVsyncTime(getNativeObject(), steadyClockTimeNano);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up a frame for this <code>Renderer</code>.
|
||||
* <p><code>beginFrame</code> manages frame pacing, and returns whether or not a frame should be
|
||||
@@ -702,6 +715,7 @@ public class Renderer {
|
||||
}
|
||||
|
||||
private static native void nSetPresentationTime(long nativeObject, long monotonicClockNanos);
|
||||
private static native void nSetVsyncTime(long nativeObject, long steadyClockTimeNano);
|
||||
private static native boolean nBeginFrame(long nativeRenderer, long nativeSwapChain, long frameTimeNanos);
|
||||
private static native void nEndFrame(long nativeRenderer);
|
||||
private static native void nRender(long nativeRenderer, long nativeView);
|
||||
|
||||
@@ -75,6 +75,8 @@ public:
|
||||
*/
|
||||
size_t textureUseAfterFreePoolSize = 0;
|
||||
|
||||
size_t metalUploadBufferSizeBytes = 512 * 1024;
|
||||
|
||||
/**
|
||||
* Set to `true` to forcibly disable parallel shader compilation in the backend.
|
||||
* Currently only honored by the GL and Metal backends.
|
||||
|
||||
@@ -181,6 +181,18 @@ public:
|
||||
return static_cast<Dp>(p);
|
||||
}
|
||||
|
||||
template<typename B>
|
||||
bool is_valid(Handle<B>& handle) {
|
||||
if (handle && isPoolHandle(handle.getId())) {
|
||||
auto [p, tag] = handleToPointer(handle.getId());
|
||||
uint8_t const age = (tag & HANDLE_AGE_MASK) >> HANDLE_AGE_SHIFT;
|
||||
auto const pNode = static_cast<typename Allocator::Node*>(p);
|
||||
uint8_t const expectedAge = pNode[-1].age;
|
||||
return expectedAge == age;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
template<typename Dp, typename B>
|
||||
inline typename std::enable_if_t<
|
||||
std::is_pointer_v<Dp> &&
|
||||
|
||||
@@ -204,6 +204,15 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
enum class UploadStrategy {
|
||||
POOL,
|
||||
BUMP_ALLOCATOR,
|
||||
};
|
||||
|
||||
void uploadWithPoolBuffer(void* src, size_t size, size_t byteOffset) const;
|
||||
void uploadWithBumpAllocator(void* src, size_t size, size_t byteOffset) const;
|
||||
|
||||
UploadStrategy mUploadStrategy;
|
||||
TrackedMetalBuffer mBuffer;
|
||||
size_t mBufferSize = 0;
|
||||
void* mCpuBuffer = nullptr;
|
||||
|
||||
@@ -27,7 +27,16 @@ MetalPlatform* TrackedMetalBuffer::platform = nullptr;
|
||||
MetalPlatform* ScopedAllocationTimer::platform = nullptr;
|
||||
|
||||
MetalBuffer::MetalBuffer(MetalContext& context, BufferObjectBinding bindingType, BufferUsage usage,
|
||||
size_t size, bool forceGpuBuffer) : mBufferSize(size), mContext(context) {
|
||||
size_t size, bool forceGpuBuffer)
|
||||
: mBufferSize(size), mContext(context) {
|
||||
const MetalBumpAllocator& allocator = *mContext.bumpAllocator;
|
||||
// VERTEX is also used for index buffers
|
||||
if (allocator.getCapacity() > 0 && bindingType == BufferObjectBinding::VERTEX) {
|
||||
mUploadStrategy = UploadStrategy::BUMP_ALLOCATOR;
|
||||
} else {
|
||||
mUploadStrategy = UploadStrategy::POOL;
|
||||
}
|
||||
|
||||
// If the buffer is less than 4K in size and is updated frequently, we don't use an explicit
|
||||
// buffer. Instead, we use immediate command encoder methods like setVertexBytes:length:atIndex:.
|
||||
// This won't work for SSBOs, since they are read/write.
|
||||
@@ -61,34 +70,23 @@ void MetalBuffer::copyIntoBuffer(void* src, size_t size, size_t byteOffset) {
|
||||
FILAMENT_CHECK_PRECONDITION(size + byteOffset <= mBufferSize)
|
||||
<< "Attempting to copy " << size << " bytes into a buffer of size " << mBufferSize
|
||||
<< " at offset " << byteOffset;
|
||||
// The copy blit requires that byteOffset be a multiple of 4.
|
||||
FILAMENT_CHECK_PRECONDITION(!(byteOffset & 0x3)) << "byteOffset must be a multiple of 4";
|
||||
|
||||
// Either copy into the Metal buffer or into our cpu buffer.
|
||||
// If we have a cpu buffer, we can directly copy into it.
|
||||
if (mCpuBuffer) {
|
||||
memcpy(static_cast<uint8_t*>(mCpuBuffer) + byteOffset, src, size);
|
||||
return;
|
||||
}
|
||||
|
||||
// Acquire a staging buffer to hold the contents of this update.
|
||||
MetalBufferPool* bufferPool = mContext.bufferPool;
|
||||
const MetalBufferPoolEntry* const staging = bufferPool->acquireBuffer(size);
|
||||
memcpy(staging->buffer.get().contents, src, size);
|
||||
|
||||
// The blit below requires that byteOffset be a multiple of 4.
|
||||
FILAMENT_CHECK_PRECONDITION(!(byteOffset & 0x3u)) << "byteOffset must be a multiple of 4";
|
||||
|
||||
// Encode a blit from the staging buffer into the private GPU buffer.
|
||||
id<MTLCommandBuffer> cmdBuffer = getPendingCommandBuffer(&mContext);
|
||||
id<MTLBlitCommandEncoder> blitEncoder = [cmdBuffer blitCommandEncoder];
|
||||
blitEncoder.label = @"Buffer upload blit";
|
||||
[blitEncoder copyFromBuffer:staging->buffer.get()
|
||||
sourceOffset:0
|
||||
toBuffer:mBuffer.get()
|
||||
destinationOffset:byteOffset
|
||||
size:size];
|
||||
[blitEncoder endEncoding];
|
||||
[cmdBuffer addCompletedHandler:^(id<MTLCommandBuffer> cb) {
|
||||
bufferPool->releaseBuffer(staging);
|
||||
}];
|
||||
switch (mUploadStrategy) {
|
||||
case UploadStrategy::BUMP_ALLOCATOR:
|
||||
uploadWithBumpAllocator(src, size, byteOffset);
|
||||
break;
|
||||
case UploadStrategy::POOL:
|
||||
uploadWithPoolBuffer(src, size, byteOffset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MetalBuffer::copyIntoBufferUnsynchronized(void* src, size_t size, size_t byteOffset) {
|
||||
@@ -199,5 +197,42 @@ void MetalBuffer::bindBuffers(id<MTLCommandBuffer> cmdBuffer, id<MTLCommandEncod
|
||||
}
|
||||
}
|
||||
|
||||
void MetalBuffer::uploadWithPoolBuffer(void* src, size_t size, size_t byteOffset) const {
|
||||
MetalBufferPool* bufferPool = mContext.bufferPool;
|
||||
const MetalBufferPoolEntry* const staging = bufferPool->acquireBuffer(size);
|
||||
memcpy(staging->buffer.get().contents, src, size);
|
||||
|
||||
// Encode a blit from the staging buffer into the private GPU buffer.
|
||||
id<MTLCommandBuffer> cmdBuffer = getPendingCommandBuffer(&mContext);
|
||||
id<MTLBlitCommandEncoder> blitEncoder = [cmdBuffer blitCommandEncoder];
|
||||
blitEncoder.label = @"Buffer upload blit - pool buffer";
|
||||
[blitEncoder copyFromBuffer:staging->buffer.get()
|
||||
sourceOffset:0
|
||||
toBuffer:mBuffer.get()
|
||||
destinationOffset:byteOffset
|
||||
size:size];
|
||||
[blitEncoder endEncoding];
|
||||
[cmdBuffer addCompletedHandler:^(id<MTLCommandBuffer> cb) {
|
||||
bufferPool->releaseBuffer(staging);
|
||||
}];
|
||||
}
|
||||
|
||||
void MetalBuffer::uploadWithBumpAllocator(void* src, size_t size, size_t byteOffset) const {
|
||||
MetalBumpAllocator& allocator = *mContext.bumpAllocator;
|
||||
auto [buffer, offset] = allocator.allocateStagingArea(size);
|
||||
memcpy(static_cast<char*>(buffer.contents) + offset, src, size);
|
||||
|
||||
// Encode a blit from the staging buffer into the private GPU buffer.
|
||||
id<MTLCommandBuffer> cmdBuffer = getPendingCommandBuffer(&mContext);
|
||||
id<MTLBlitCommandEncoder> blitEncoder = [cmdBuffer blitCommandEncoder];
|
||||
blitEncoder.label = @"Buffer upload blit - bump allocator";
|
||||
[blitEncoder copyFromBuffer:buffer
|
||||
sourceOffset:offset
|
||||
toBuffer:mBuffer.get()
|
||||
destinationOffset:byteOffset
|
||||
size:size];
|
||||
[blitEncoder endEncoding];
|
||||
}
|
||||
|
||||
} // namespace backend
|
||||
} // namespace filament
|
||||
|
||||
@@ -38,6 +38,28 @@ struct MetalBufferPoolEntry {
|
||||
mutable uint32_t referenceCount;
|
||||
};
|
||||
|
||||
class MetalBumpAllocator {
|
||||
public:
|
||||
MetalBumpAllocator(id<MTLDevice> device, size_t capacity);
|
||||
|
||||
/**
|
||||
* Allocates a staging area of the given size. Returns a pair of the buffer and the offset
|
||||
* within the buffer. The buffer is guaranteed to be at least the given size, but may be larger.
|
||||
* Clients must not write to the buffer beyond the returned offset + size.
|
||||
* Clients are responsible for holding a reference to the returned buffer.
|
||||
* Allocations are guaranteed to be aligned to 4 bytes.
|
||||
*/
|
||||
std::pair<id<MTLBuffer>, size_t> allocateStagingArea(size_t size);
|
||||
|
||||
size_t getCapacity() const noexcept { return mCapacity; }
|
||||
|
||||
private:
|
||||
id<MTLDevice> mDevice;
|
||||
TrackedMetalBuffer mCurrentUploadBuffer = nil;
|
||||
size_t mHead = 0;
|
||||
size_t mCapacity;
|
||||
};
|
||||
|
||||
// Manages a pool of Metal buffers, periodically releasing ones that have been unused for awhile.
|
||||
class MetalBufferPool {
|
||||
public:
|
||||
|
||||
@@ -116,5 +116,38 @@ void MetalBufferPool::reset() noexcept {
|
||||
mFreeStages.clear();
|
||||
}
|
||||
|
||||
MetalBumpAllocator::MetalBumpAllocator(id<MTLDevice> device, size_t capacity)
|
||||
: mDevice(device), mCapacity(capacity) {
|
||||
if (mCapacity > 0) {
|
||||
mCurrentUploadBuffer = { [device newBufferWithLength:capacity options:MTLStorageModeShared],
|
||||
TrackedMetalBuffer::Type::STAGING };
|
||||
}
|
||||
}
|
||||
|
||||
std::pair<id<MTLBuffer>, size_t> MetalBumpAllocator::allocateStagingArea(size_t size) {
|
||||
if (size == 0) {
|
||||
return { nil, 0 };
|
||||
}
|
||||
if (size > mCapacity) {
|
||||
return { [mDevice newBufferWithLength:size options:MTLStorageModeShared], 0 };
|
||||
}
|
||||
assert_invariant(mCurrentUploadBuffer);
|
||||
|
||||
// Align the head to a 4-byte boundary.
|
||||
mHead = (mHead + 3) & ~3;
|
||||
|
||||
if (UTILS_LIKELY(mHead + size <= mCapacity)) {
|
||||
const size_t oldHead = mHead;
|
||||
mHead += size;
|
||||
return { mCurrentUploadBuffer.get(), oldHead };
|
||||
}
|
||||
|
||||
// We're finished with the current allocation.
|
||||
mCurrentUploadBuffer = { [mDevice newBufferWithLength:mCapacity options:MTLStorageModeShared],
|
||||
TrackedMetalBuffer::Type::STAGING };
|
||||
|
||||
return { mCurrentUploadBuffer.get(), 0 };
|
||||
}
|
||||
|
||||
} // namespace backend
|
||||
} // namespace filament
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace backend {
|
||||
class MetalDriver;
|
||||
class MetalBlitter;
|
||||
class MetalBufferPool;
|
||||
class MetalBumpAllocator;
|
||||
class MetalRenderTarget;
|
||||
class MetalSamplerGroup;
|
||||
class MetalSwapChain;
|
||||
@@ -141,6 +142,7 @@ struct MetalContext {
|
||||
utils::FixedCircularBuffer<Handle<HwTexture>> texturesToDestroy;
|
||||
|
||||
MetalBufferPool* bufferPool;
|
||||
MetalBumpAllocator* bumpAllocator;
|
||||
|
||||
MetalSwapChain* currentDrawSwapChain = nil;
|
||||
MetalSwapChain* currentReadSwapChain = nil;
|
||||
|
||||
@@ -171,6 +171,8 @@ MetalDriver::MetalDriver(MetalPlatform* platform, const Platform::DriverConfig&
|
||||
mContext->samplerStateCache.setDevice(mContext->device);
|
||||
mContext->argumentEncoderCache.setDevice(mContext->device);
|
||||
mContext->bufferPool = new MetalBufferPool(*mContext);
|
||||
mContext->bumpAllocator =
|
||||
new MetalBumpAllocator(mContext->device, driverConfig.metalUploadBufferSizeBytes);
|
||||
mContext->blitter = new MetalBlitter(*mContext);
|
||||
|
||||
if (@available(iOS 12, *)) {
|
||||
@@ -209,6 +211,7 @@ MetalDriver::~MetalDriver() noexcept {
|
||||
mContext->emptyTexture = nil;
|
||||
CFRelease(mContext->textureCache);
|
||||
delete mContext->bufferPool;
|
||||
delete mContext->bumpAllocator;
|
||||
delete mContext->blitter;
|
||||
delete mContext->timerQueryImpl;
|
||||
delete mContext->shaderCompiler;
|
||||
|
||||
@@ -304,6 +304,13 @@ void OpenGLDriver::bindSampler(GLuint unit, GLuint sampler) noexcept {
|
||||
void OpenGLDriver::setPushConstant(backend::ShaderStage stage, uint8_t index,
|
||||
backend::PushConstantVariant value) {
|
||||
assert_invariant(stage == ShaderStage::VERTEX || stage == ShaderStage::FRAGMENT);
|
||||
|
||||
#if FILAMENT_ENABLE_MATDBG
|
||||
if (UTILS_UNLIKELY(!mValidProgram)) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
utils::Slice<std::pair<GLint, ConstantType>> constants;
|
||||
if (stage == ShaderStage::VERTEX) {
|
||||
constants = mCurrentPushConstants->vertexConstants;
|
||||
@@ -340,15 +347,11 @@ void OpenGLDriver::bindTexture(GLuint unit, GLTexture const* t) noexcept {
|
||||
}
|
||||
|
||||
bool OpenGLDriver::useProgram(OpenGLProgram* p) noexcept {
|
||||
if (UTILS_UNLIKELY(!p->isValid())) {
|
||||
// If the program is not valid, we can't call use().
|
||||
return false;
|
||||
}
|
||||
|
||||
// set-up textures and samplers in the proper TMUs (as specified in setSamplers)
|
||||
p->use(this, mContext);
|
||||
bool const success = p->use(this, mContext);
|
||||
assert_invariant(success == p->isValid());
|
||||
|
||||
if (UTILS_UNLIKELY(mContext.isES2())) {
|
||||
if (UTILS_UNLIKELY(mContext.isES2() && success)) {
|
||||
for (uint32_t i = 0; i < Program::UNIFORM_BINDING_COUNT; i++) {
|
||||
auto [id, buffer, age] = mContext.getEs2UniformBinding(i);
|
||||
if (buffer) {
|
||||
@@ -359,7 +362,8 @@ bool OpenGLDriver::useProgram(OpenGLProgram* p) noexcept {
|
||||
// when mPlatform.isSRGBSwapChainSupported() is false (no need to check though).
|
||||
p->setRec709ColorSpace(mRec709OutputColorspace);
|
||||
}
|
||||
return true;
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
@@ -2332,9 +2336,9 @@ void OpenGLDriver::updateSamplerGroup(Handle<HwSamplerGroup> sbh,
|
||||
auto const* const pSamplers = (SamplerDescriptor const*)data.buffer;
|
||||
for (size_t i = 0, c = sb->textureUnitEntries.size(); i < c; i++) {
|
||||
GLuint samplerId = 0u;
|
||||
const GLTexture* t = nullptr;
|
||||
if (UTILS_LIKELY(pSamplers[i].t)) {
|
||||
t = handle_cast<const GLTexture*>(pSamplers[i].t);
|
||||
Handle<HwTexture> th = pSamplers[i].t;
|
||||
if (UTILS_LIKELY(th)) {
|
||||
GLTexture const* const t = handle_cast<const GLTexture*>(th);
|
||||
assert_invariant(t);
|
||||
|
||||
SamplerParams params = pSamplers[i].s;
|
||||
@@ -2390,7 +2394,7 @@ void OpenGLDriver::updateSamplerGroup(Handle<HwSamplerGroup> sbh,
|
||||
// which is not an error.
|
||||
}
|
||||
|
||||
sb->textureUnitEntries[i] = { t, samplerId };
|
||||
sb->textureUnitEntries[i] = { th, samplerId };
|
||||
}
|
||||
scheduleDestroy(std::move(data));
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ public:
|
||||
struct GLSamplerGroup : public HwSamplerGroup {
|
||||
using HwSamplerGroup::HwSamplerGroup;
|
||||
struct Entry {
|
||||
GLTexture const* texture = nullptr;
|
||||
Handle<HwTexture> th;
|
||||
GLuint sampler = 0u;
|
||||
};
|
||||
utils::FixedCapacityVector<Entry> textureUnitEntries;
|
||||
@@ -256,6 +256,11 @@ private:
|
||||
return mHandleAllocator.handle_cast<Dp, B>(handle);
|
||||
}
|
||||
|
||||
template<typename B>
|
||||
bool is_valid(Handle<B>& handle) {
|
||||
return mHandleAllocator.is_valid(handle);
|
||||
}
|
||||
|
||||
template<typename Dp, typename B>
|
||||
inline typename std::enable_if_t<
|
||||
std::is_pointer_v<Dp> &&
|
||||
|
||||
@@ -20,21 +20,24 @@
|
||||
#include "OpenGLDriver.h"
|
||||
#include "ShaderCompilerService.h"
|
||||
|
||||
#include <backend/DriverEnums.h>
|
||||
#include <backend/Program.h>
|
||||
#include <backend/Handle.h>
|
||||
|
||||
#include <private/backend/BackendUtils.h>
|
||||
|
||||
#include <utils/debug.h>
|
||||
#include <utils/compiler.h>
|
||||
#include <utils/debug.h>
|
||||
#include <utils/FixedCapacityVector.h>
|
||||
#include <utils/Log.h>
|
||||
#include <utils/Systrace.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <string_view>
|
||||
#include <utility>
|
||||
#include <new>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
@@ -241,8 +244,9 @@ void OpenGLProgram::updateSamplers(OpenGLDriver* const gld) const noexcept {
|
||||
assert_invariant(sb);
|
||||
if (!sb) continue; // should never happen, this would be a user error.
|
||||
for (uint8_t j = 0, m = sb->textureUnitEntries.size(); j < m; ++j, ++tmu) { // "<=" on purpose here
|
||||
const GLTexture* const t = sb->textureUnitEntries[j].texture;
|
||||
if (t) { // program may not use all samplers of sampler group
|
||||
Handle<HwTexture> th = sb->textureUnitEntries[j].th;
|
||||
if (th) { // program may not use all samplers of sampler group
|
||||
GLTexture const* const t = gld->handle_cast<GLTexture const*>(th);
|
||||
gld->bindTexture(tmu, t);
|
||||
#ifndef FILAMENT_SILENCE_NOT_SUPPORTED_BY_ES2
|
||||
if (UTILS_LIKELY(!es2)) {
|
||||
|
||||
@@ -53,11 +53,21 @@ public:
|
||||
|
||||
bool isValid() const noexcept { return mToken || gl.program != 0; }
|
||||
|
||||
void use(OpenGLDriver* const gld, OpenGLContext& context) noexcept {
|
||||
if (UTILS_UNLIKELY(!gl.program)) {
|
||||
bool use(OpenGLDriver* const gld, OpenGLContext& context) noexcept {
|
||||
// both non-null is impossible by construction
|
||||
assert_invariant(!mToken || !gl.program);
|
||||
|
||||
if (UTILS_UNLIKELY(mToken && !gl.program)) {
|
||||
// first time a program is used
|
||||
initialize(*gld);
|
||||
}
|
||||
|
||||
if (UTILS_UNLIKELY(!gl.program)) {
|
||||
// compilation failed (token should be null)
|
||||
assert_invariant(!mToken);
|
||||
return false;
|
||||
}
|
||||
|
||||
context.useProgram(gl.program);
|
||||
if (UTILS_UNLIKELY(mUsedBindingsCount)) {
|
||||
// We rely on GL state tracking to avoid unnecessary glBindTexture / glBindSampler
|
||||
@@ -74,6 +84,7 @@ public:
|
||||
|
||||
updateSamplers(gld);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// For ES2 only
|
||||
|
||||
@@ -359,7 +359,7 @@ ShaderCompilerService::program_token_t ShaderCompilerService::createProgram(
|
||||
GLuint ShaderCompilerService::getProgram(ShaderCompilerService::program_token_t& token) {
|
||||
GLuint const program = initialize(token);
|
||||
assert_invariant(token == nullptr);
|
||||
#ifndef FILAMENT_ENABLE_MATDBG
|
||||
#if !FILAMENT_ENABLE_MATDBG
|
||||
assert_invariant(program);
|
||||
#endif
|
||||
return program;
|
||||
@@ -572,16 +572,23 @@ void ShaderCompilerService::compileShaders(OpenGLContext& context,
|
||||
|
||||
// split shader source, so we can insert the specialization constants and the packing
|
||||
// functions
|
||||
auto const [prolog, body] = splitShaderSource({ shader_src, shader_len });
|
||||
auto [version, prolog, body] = splitShaderSource({ shader_src, shader_len });
|
||||
|
||||
const std::array<const char*, 4> sources = {
|
||||
// enable ESSL 3.10 if available
|
||||
if (context.isAtLeastGLES<3, 1>()) {
|
||||
version = "#version 310 es\n";
|
||||
}
|
||||
|
||||
const std::array<const char*, 5> sources = {
|
||||
version.data(),
|
||||
prolog.data(),
|
||||
specializationConstantString.c_str(),
|
||||
packingFunctions.data(),
|
||||
body.data()
|
||||
};
|
||||
|
||||
const std::array<GLint, 4> lengths = {
|
||||
const std::array<GLint, 5> lengths = {
|
||||
(GLint)version.length(),
|
||||
(GLint)prolog.length(),
|
||||
(GLint)specializationConstantString.length(),
|
||||
(GLint)packingFunctions.length(),
|
||||
@@ -661,6 +668,7 @@ void ShaderCompilerService::process_OVR_multiview2(OpenGLContext& context,
|
||||
|
||||
// Tragically, OpenGL 4.1 doesn't support unpackHalf2x16 (appeared in 4.2) and
|
||||
// macOS doesn't support GL_ARB_shading_language_packing
|
||||
// Also GLES3.0 didn't have the full set of packing/unpacking functions
|
||||
std::string_view ShaderCompilerService::process_ARB_shading_language_packing(OpenGLContext& context) noexcept {
|
||||
using namespace std::literals;
|
||||
#ifdef BACKEND_OPENGL_VERSION_GL
|
||||
@@ -700,21 +708,92 @@ highp uint packHalf2x16(vec2 v) {
|
||||
highp uint y = fp32tou16(v.y);
|
||||
return (y << 16u) | x;
|
||||
}
|
||||
highp uint packUnorm4x8(mediump vec4 v) {
|
||||
v = round(clamp(v, 0.0, 1.0) * 255.0);
|
||||
highp uint a = uint(v.x);
|
||||
highp uint b = uint(v.y) << 8;
|
||||
highp uint c = uint(v.z) << 16;
|
||||
highp uint d = uint(v.w) << 24;
|
||||
return (a|b|c|d);
|
||||
}
|
||||
highp uint packSnorm4x8(mediump vec4 v) {
|
||||
v = round(clamp(v, -1.0, 1.0) * 127.0);
|
||||
highp uint a = uint((int(v.x) & 0xff));
|
||||
highp uint b = uint((int(v.y) & 0xff)) << 8;
|
||||
highp uint c = uint((int(v.z) & 0xff)) << 16;
|
||||
highp uint d = uint((int(v.w) & 0xff)) << 24;
|
||||
return (a|b|c|d);
|
||||
}
|
||||
mediump vec4 unpackUnorm4x8(highp uint v) {
|
||||
return vec4(float((v & 0x000000ffu) ),
|
||||
float((v & 0x0000ff00u) >> 8),
|
||||
float((v & 0x00ff0000u) >> 16),
|
||||
float((v & 0xff000000u) >> 24)) / 255.0;
|
||||
}
|
||||
mediump vec4 unpackSnorm4x8(highp uint v) {
|
||||
int a = int(((v ) & 0xffu) << 24u) >> 24 ;
|
||||
int b = int(((v >> 8u) & 0xffu) << 24u) >> 24 ;
|
||||
int c = int(((v >> 16u) & 0xffu) << 24u) >> 24 ;
|
||||
int d = int(((v >> 24u) & 0xffu) << 24u) >> 24 ;
|
||||
return clamp(vec4(float(a), float(b), float(c), float(d)) / 127.0, -1.0, 1.0);
|
||||
}
|
||||
)"sv;
|
||||
}
|
||||
#endif // BACKEND_OPENGL_VERSION_GL
|
||||
|
||||
#ifdef BACKEND_OPENGL_VERSION_GLES
|
||||
if (!context.isES2() && !context.isAtLeastGLES<3, 1>()) {
|
||||
return R"(
|
||||
|
||||
highp uint packUnorm4x8(mediump vec4 v) {
|
||||
v = round(clamp(v, 0.0, 1.0) * 255.0);
|
||||
highp uint a = uint(v.x);
|
||||
highp uint b = uint(v.y) << 8;
|
||||
highp uint c = uint(v.z) << 16;
|
||||
highp uint d = uint(v.w) << 24;
|
||||
return (a|b|c|d);
|
||||
}
|
||||
highp uint packSnorm4x8(mediump vec4 v) {
|
||||
v = round(clamp(v, -1.0, 1.0) * 127.0);
|
||||
highp uint a = uint((int(v.x) & 0xff));
|
||||
highp uint b = uint((int(v.y) & 0xff)) << 8;
|
||||
highp uint c = uint((int(v.z) & 0xff)) << 16;
|
||||
highp uint d = uint((int(v.w) & 0xff)) << 24;
|
||||
return (a|b|c|d);
|
||||
}
|
||||
mediump vec4 unpackUnorm4x8(highp uint v) {
|
||||
return vec4(float((v & 0x000000ffu) ),
|
||||
float((v & 0x0000ff00u) >> 8),
|
||||
float((v & 0x00ff0000u) >> 16),
|
||||
float((v & 0xff000000u) >> 24)) / 255.0;
|
||||
}
|
||||
mediump vec4 unpackSnorm4x8(highp uint v) {
|
||||
int a = int(((v ) & 0xffu) << 24u) >> 24 ;
|
||||
int b = int(((v >> 8u) & 0xffu) << 24u) >> 24 ;
|
||||
int c = int(((v >> 16u) & 0xffu) << 24u) >> 24 ;
|
||||
int d = int(((v >> 24u) & 0xffu) << 24u) >> 24 ;
|
||||
return clamp(vec4(float(a), float(b), float(c), float(d)) / 127.0, -1.0, 1.0);
|
||||
}
|
||||
)"sv;
|
||||
}
|
||||
#endif // BACKEND_OPENGL_VERSION_GLES
|
||||
return ""sv;
|
||||
}
|
||||
|
||||
// split shader source code in two, the first section goes from the start to the line after the
|
||||
// last #extension, and the 2nd part goes from there to the end.
|
||||
std::array<std::string_view, 2> ShaderCompilerService::splitShaderSource(std::string_view source) noexcept {
|
||||
// split shader source code in three:
|
||||
// - the version line
|
||||
// - extensions
|
||||
// - everything else
|
||||
std::array<std::string_view, 3> ShaderCompilerService::splitShaderSource(std::string_view source) noexcept {
|
||||
auto start = source.find("#version");
|
||||
assert_invariant(start != std::string_view::npos);
|
||||
|
||||
auto version_eol = source.find('\n', start) + 1;
|
||||
assert_invariant(version_eol != std::string_view::npos);
|
||||
|
||||
auto pos = source.rfind("\n#extension");
|
||||
if (pos == std::string_view::npos) {
|
||||
pos = start;
|
||||
pos = version_eol;
|
||||
} else {
|
||||
++pos;
|
||||
}
|
||||
@@ -722,9 +801,10 @@ std::array<std::string_view, 2> ShaderCompilerService::splitShaderSource(std::st
|
||||
auto eol = source.find('\n', pos) + 1;
|
||||
assert_invariant(eol != std::string_view::npos);
|
||||
|
||||
std::string_view const version = source.substr(start, eol - start);
|
||||
std::string_view const body = source.substr(version.length(), source.length() - version.length());
|
||||
return { version, body };
|
||||
std::string_view const version = source.substr(start, version_eol - start);
|
||||
std::string_view const prolog = source.substr(version_eol, eol - version_eol);
|
||||
std::string_view const body = source.substr(eol, source.length() - eol);
|
||||
return { version, prolog, body };
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -146,7 +146,7 @@ private:
|
||||
|
||||
static std::string_view process_ARB_shading_language_packing(OpenGLContext& context) noexcept;
|
||||
|
||||
static std::array<std::string_view, 2> splitShaderSource(std::string_view source) noexcept;
|
||||
static std::array<std::string_view, 3> splitShaderSource(std::string_view source) noexcept;
|
||||
|
||||
static GLuint linkProgram(OpenGLContext& context,
|
||||
std::array<GLuint, Program::SHADER_TYPE_COUNT> shaders,
|
||||
|
||||
@@ -298,6 +298,24 @@ public:
|
||||
*/
|
||||
size_t textureUseAfterFreePoolSize = 0;
|
||||
|
||||
/**
|
||||
* When uploading vertex or index data, the Filament Metal backend copies data
|
||||
* into a shared staging area before transferring it to the GPU. This setting controls
|
||||
* the total size of the buffer used to perform these allocations.
|
||||
*
|
||||
* Higher values can improve performance when performing many uploads across a small
|
||||
* number of frames.
|
||||
*
|
||||
* This buffer remains alive throughout the lifetime of the Engine, so this size adds to the
|
||||
* memory footprint of the app and should be set as conservative as possible.
|
||||
*
|
||||
* A value of 0 disables the shared staging buffer entirely; uploads will acquire an
|
||||
* individual buffer from a pool of shared buffers.
|
||||
*
|
||||
* Only respected by the Metal backend.
|
||||
*/
|
||||
size_t metalUploadBufferSizeBytes = 512 * 1024;
|
||||
|
||||
/**
|
||||
* Set to `true` to forcibly disable parallel shader compilation in the backend.
|
||||
* Currently only honored by the GL and Metal backends.
|
||||
@@ -1021,6 +1039,21 @@ public:
|
||||
void resetBackendState() noexcept;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Get the current time. This is a convenience function that simply returns the
|
||||
* time in nanosecond since epoch of std::chrono::steady_clock.
|
||||
* A possible implementation is:
|
||||
*
|
||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
* return std::chrono::steady_clock::now().time_since_epoch().count();
|
||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* @return current time in nanosecond since epoch of std::chrono::steady_clock.
|
||||
* @see Renderer::beginFrame()
|
||||
*/
|
||||
static uint64_t getSteadyClockTimeNano() noexcept;
|
||||
|
||||
|
||||
DebugRegistry& getDebugRegistry() noexcept;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -158,6 +158,8 @@ public:
|
||||
*
|
||||
* @return This Builder, for chaining calls.
|
||||
*
|
||||
* @see Material::Builder::sphericalHarmonicsBandCount()
|
||||
*
|
||||
* @note
|
||||
* Because the coefficients are pre-scaled, `sh[0]` is the environment's
|
||||
* average irradiance.
|
||||
|
||||
@@ -140,6 +140,18 @@ public:
|
||||
return constant(name, strlen(name), value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the quality of the indirect lights computations. This is only taken into account
|
||||
* if this material is lit and in the surface domain. This setting will affect the
|
||||
* IndirectLight computation if one is specified on the Scene and Spherical Harmonics
|
||||
* are used for the irradiance.
|
||||
*
|
||||
* @param shBandCount Number of spherical harmonic bands. Must be 1, 2 or 3 (default).
|
||||
* @return Reference to this Builder for chaining calls.
|
||||
* @see IndirectLight
|
||||
*/
|
||||
Builder& sphericalHarmonicsBandCount(size_t shBandCount) noexcept;
|
||||
|
||||
/**
|
||||
* Creates the Material object and returns a pointer to it.
|
||||
*
|
||||
|
||||
@@ -227,6 +227,17 @@ public:
|
||||
static constexpr CopyFrameFlag CLEAR = 0x4;
|
||||
|
||||
|
||||
/**
|
||||
* The use of this method is optional. It sets the VSYNC time expressed as the duration in
|
||||
* nanosecond since epoch of std::chrono::steady_clock.
|
||||
* If called, passing 0 to vsyncSteadyClockTimeNano in Renderer::BeginFrame will use this
|
||||
* time instead.
|
||||
* @param steadyClockTimeNano duration in nanosecond since epoch of std::chrono::steady_clock
|
||||
* @see Engine::getSteadyClockTimeNano()
|
||||
* @see Renderer::BeginFrame()
|
||||
*/
|
||||
void setVsyncTime(uint64_t steadyClockTimeNano) noexcept;
|
||||
|
||||
/**
|
||||
* Set-up a frame for this Renderer.
|
||||
*
|
||||
|
||||
@@ -39,6 +39,8 @@
|
||||
#include <utils/compiler.h>
|
||||
#include <utils/Panic.h>
|
||||
|
||||
#include <chrono>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
@@ -361,7 +363,7 @@ const Engine::Config& Engine::getConfig() const noexcept {
|
||||
return downcast(this)->getConfig();
|
||||
}
|
||||
|
||||
bool Engine::isStereoSupported(StereoscopicType stereoscopicType) const noexcept {
|
||||
bool Engine::isStereoSupported(StereoscopicType) const noexcept {
|
||||
return downcast(this)->isStereoSupported();
|
||||
}
|
||||
|
||||
@@ -369,6 +371,10 @@ size_t Engine::getMaxStereoscopicEyes() noexcept {
|
||||
return FEngine::getMaxStereoscopicEyes();
|
||||
}
|
||||
|
||||
uint64_t Engine::getSteadyClockTimeNano() noexcept {
|
||||
return std::chrono::steady_clock::now().time_since_epoch().count();
|
||||
}
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
void Engine::resetBackendState() noexcept {
|
||||
downcast(this)->resetBackendState();
|
||||
|
||||
@@ -89,4 +89,8 @@ void Renderer::renderStandaloneView(View const* view) {
|
||||
downcast(this)->renderStandaloneView(downcast(view));
|
||||
}
|
||||
|
||||
void Renderer::setVsyncTime(uint64_t steadyClockTimeNano) noexcept {
|
||||
downcast(this)->setVsyncTime(steadyClockTimeNano);
|
||||
}
|
||||
|
||||
} // namespace filament
|
||||
|
||||
@@ -102,6 +102,7 @@ Engine* FEngine::create(Engine::Builder const& builder) {
|
||||
DriverConfig const driverConfig{
|
||||
.handleArenaSize = instance->getRequestedDriverHandleArenaSize(),
|
||||
.textureUseAfterFreePoolSize = instance->getConfig().textureUseAfterFreePoolSize,
|
||||
.metalUploadBufferSizeBytes = instance->getConfig().metalUploadBufferSizeBytes,
|
||||
.disableParallelShaderCompile = instance->getConfig().disableParallelShaderCompile,
|
||||
.disableHandleUseAfterFreeCheck = instance->getConfig().disableHandleUseAfterFreeCheck,
|
||||
.forceGLES2Context = instance->getConfig().forceGLES2Context,
|
||||
@@ -678,6 +679,7 @@ int FEngine::loop() {
|
||||
DriverConfig const driverConfig {
|
||||
.handleArenaSize = getRequestedDriverHandleArenaSize(),
|
||||
.textureUseAfterFreePoolSize = mConfig.textureUseAfterFreePoolSize,
|
||||
.metalUploadBufferSizeBytes = mConfig.metalUploadBufferSizeBytes,
|
||||
.disableParallelShaderCompile = mConfig.disableParallelShaderCompile,
|
||||
.disableHandleUseAfterFreeCheck = mConfig.disableHandleUseAfterFreeCheck,
|
||||
.forceGLES2Context = mConfig.forceGLES2Context,
|
||||
|
||||
@@ -119,6 +119,7 @@ struct Material::BuilderDetails {
|
||||
const void* mPayload = nullptr;
|
||||
size_t mSize = 0;
|
||||
bool mDefaultMaterial = false;
|
||||
int32_t mShBandsCount = 3;
|
||||
std::unordered_map<
|
||||
utils::CString,
|
||||
std::variant<int32_t, float, bool>,
|
||||
@@ -143,6 +144,11 @@ Material::Builder& Material::Builder::package(const void* payload, size_t size)
|
||||
return *this;
|
||||
}
|
||||
|
||||
Material::Builder& Material::Builder::sphericalHarmonicsBandCount(size_t shBandCount) noexcept {
|
||||
mImpl->mShBandsCount = math::clamp(shBandCount, size_t(1), size_t(3));
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename T, typename>
|
||||
Material::Builder& Material::Builder::constant(const char* name, size_t nameLength, T value) {
|
||||
FILAMENT_CHECK_PRECONDITION(name != nullptr) << "name cannot be null";
|
||||
@@ -897,6 +903,8 @@ void FMaterial::processSpecializationConstants(FEngine& engine, Material::Builde
|
||||
mSpecializationConstants.push_back({
|
||||
+ReservedSpecializationConstants::CONFIG_STEREO_EYE_COUNT,
|
||||
(int)engine.getConfig().stereoscopicEyeCount });
|
||||
mSpecializationConstants.push_back({
|
||||
+ReservedSpecializationConstants::CONFIG_SH_BANDS_COUNT, builder->mShBandsCount });
|
||||
if (UTILS_UNLIKELY(parser->getShaderLanguage() == ShaderLanguage::ESSL1)) {
|
||||
// The actual value of this spec-constant is set in the OpenGLDriver backend.
|
||||
mSpecializationConstants.push_back({
|
||||
|
||||
@@ -232,6 +232,10 @@ void FRenderer::setPresentationTime(int64_t monotonic_clock_ns) {
|
||||
driver.setPresentationTime(monotonic_clock_ns);
|
||||
}
|
||||
|
||||
void FRenderer::setVsyncTime(uint64_t steadyClockTimeNano) noexcept {
|
||||
mVsyncSteadyClockTimeNano = steadyClockTimeNano;
|
||||
}
|
||||
|
||||
bool FRenderer::beginFrame(FSwapChain* swapChain, uint64_t vsyncSteadyClockTimeNano) {
|
||||
assert_invariant(swapChain);
|
||||
|
||||
@@ -252,6 +256,11 @@ bool FRenderer::beginFrame(FSwapChain* swapChain, uint64_t vsyncSteadyClockTimeN
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!vsyncSteadyClockTimeNano) {
|
||||
vsyncSteadyClockTimeNano = mVsyncSteadyClockTimeNano;
|
||||
mVsyncSteadyClockTimeNano = 0;
|
||||
}
|
||||
|
||||
// get the timestamp as soon as possible
|
||||
using namespace std::chrono;
|
||||
const steady_clock::time_point now{ steady_clock::now() };
|
||||
|
||||
@@ -29,9 +29,6 @@
|
||||
|
||||
#include "backend/DriverApiForward.h"
|
||||
|
||||
#include <fg/FrameGraphId.h>
|
||||
#include <fg/FrameGraphTexture.h>
|
||||
|
||||
#include <filament/Renderer.h>
|
||||
#include <filament/Viewport.h>
|
||||
|
||||
@@ -41,8 +38,18 @@
|
||||
#include <utils/compiler.h>
|
||||
#include <utils/Allocator.h>
|
||||
|
||||
#include <math/vec4.h>
|
||||
|
||||
#include <tsl/robin_set.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <chrono>
|
||||
#include <functional>
|
||||
#include <utility>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament {
|
||||
|
||||
namespace backend {
|
||||
@@ -78,6 +85,8 @@ public:
|
||||
|
||||
void setPresentationTime(int64_t monotonic_clock_ns);
|
||||
|
||||
void setVsyncTime(uint64_t steadyClockTimeNano) noexcept;
|
||||
|
||||
// start a frame
|
||||
bool beginFrame(FSwapChain* swapChain, uint64_t vsyncSteadyClockTimeNano);
|
||||
|
||||
@@ -187,6 +196,7 @@ private:
|
||||
backend::TargetBufferFlags mClearFlags{};
|
||||
tsl::robin_set<FRenderTarget*> mPreviousRenderTargets;
|
||||
std::function<void()> mBeginFrameInternal;
|
||||
uint64_t mVsyncSteadyClockTimeNano = 0;
|
||||
};
|
||||
|
||||
FILAMENT_DOWNCAST(Renderer)
|
||||
|
||||
@@ -203,7 +203,7 @@ enum class ReflectionMode : uint8_t {
|
||||
// can't really use std::underlying_type<AttributeIndex>::type because the driver takes a uint32_t
|
||||
using AttributeBitset = utils::bitset32;
|
||||
|
||||
static constexpr size_t MATERIAL_PROPERTIES_COUNT = 27;
|
||||
static constexpr size_t MATERIAL_PROPERTIES_COUNT = 29;
|
||||
enum class Property : uint8_t {
|
||||
BASE_COLOR, //!< float4, all shading models
|
||||
ROUGHNESS, //!< float, lit shading models only
|
||||
@@ -232,6 +232,8 @@ enum class Property : uint8_t {
|
||||
IOR, //!< float, material's index of refraction
|
||||
MICRO_THICKNESS, //!< float, thickness of the thin layer
|
||||
BENT_NORMAL, //!< float3, all shading models only, except unlit
|
||||
SPECULAR_FACTOR, //!< float, lit shading models only, except subsurface and cloth
|
||||
SPECULAR_COLOR_FACTOR, //!< float3, lit shading models only, except subsurface and cloth
|
||||
|
||||
// when adding new Properties, make sure to update MATERIAL_PROPERTIES_COUNT
|
||||
};
|
||||
|
||||
@@ -70,6 +70,7 @@ enum class ReservedSpecializationConstants : uint8_t {
|
||||
CONFIG_DEBUG_DIRECTIONAL_SHADOWMAP = 6,
|
||||
CONFIG_DEBUG_FROXEL_VISUALIZATION = 7,
|
||||
CONFIG_STEREO_EYE_COUNT = 8, // don't change (hardcoded in ShaderCompilerService.cpp)
|
||||
CONFIG_SH_BANDS_COUNT = 9
|
||||
};
|
||||
|
||||
enum class PushConstantIds : uint8_t {
|
||||
|
||||
+28
-26
@@ -21,33 +21,35 @@
|
||||
namespace filamat {
|
||||
|
||||
std::unordered_map<std::string, Property> Enums::mStringToProperty = {
|
||||
{ "baseColor", Property::BASE_COLOR },
|
||||
{ "roughness", Property::ROUGHNESS },
|
||||
{ "metallic", Property::METALLIC },
|
||||
{ "reflectance", Property::REFLECTANCE },
|
||||
{ "ambientOcclusion", Property::AMBIENT_OCCLUSION },
|
||||
{ "clearCoat", Property::CLEAR_COAT },
|
||||
{ "clearCoatRoughness", Property::CLEAR_COAT_ROUGHNESS },
|
||||
{ "clearCoatNormal", Property::CLEAR_COAT_NORMAL },
|
||||
{ "anisotropy", Property::ANISOTROPY },
|
||||
{ "anisotropyDirection", Property::ANISOTROPY_DIRECTION },
|
||||
{ "thickness", Property::THICKNESS },
|
||||
{ "subsurfacePower", Property::SUBSURFACE_POWER },
|
||||
{ "subsurfaceColor", Property::SUBSURFACE_COLOR },
|
||||
{ "sheenColor", Property::SHEEN_COLOR },
|
||||
{ "sheenRoughness", Property::SHEEN_ROUGHNESS },
|
||||
{ "glossiness", Property::GLOSSINESS },
|
||||
{ "specularColor", Property::SPECULAR_COLOR },
|
||||
{ "emissive", Property::EMISSIVE },
|
||||
{ "normal", Property::NORMAL },
|
||||
{ "postLightingColor", Property::POST_LIGHTING_COLOR },
|
||||
{ "baseColor", Property::BASE_COLOR },
|
||||
{ "roughness", Property::ROUGHNESS },
|
||||
{ "metallic", Property::METALLIC },
|
||||
{ "reflectance", Property::REFLECTANCE },
|
||||
{ "ambientOcclusion", Property::AMBIENT_OCCLUSION },
|
||||
{ "clearCoat", Property::CLEAR_COAT },
|
||||
{ "clearCoatRoughness", Property::CLEAR_COAT_ROUGHNESS },
|
||||
{ "clearCoatNormal", Property::CLEAR_COAT_NORMAL },
|
||||
{ "anisotropy", Property::ANISOTROPY },
|
||||
{ "anisotropyDirection", Property::ANISOTROPY_DIRECTION },
|
||||
{ "thickness", Property::THICKNESS },
|
||||
{ "subsurfacePower", Property::SUBSURFACE_POWER },
|
||||
{ "subsurfaceColor", Property::SUBSURFACE_COLOR },
|
||||
{ "sheenColor", Property::SHEEN_COLOR },
|
||||
{ "sheenRoughness", Property::SHEEN_ROUGHNESS },
|
||||
{ "glossiness", Property::GLOSSINESS },
|
||||
{ "specularColor", Property::SPECULAR_COLOR },
|
||||
{ "emissive", Property::EMISSIVE },
|
||||
{ "normal", Property::NORMAL },
|
||||
{ "postLightingColor", Property::POST_LIGHTING_COLOR },
|
||||
{ "postLightingMixFactor", Property::POST_LIGHTING_MIX_FACTOR },
|
||||
{ "clipSpaceTransform", Property::CLIP_SPACE_TRANSFORM },
|
||||
{ "absorption", Property::ABSORPTION },
|
||||
{ "transmission", Property::TRANSMISSION },
|
||||
{ "ior", Property::IOR },
|
||||
{ "microThickness", Property::MICRO_THICKNESS },
|
||||
{ "bentNormal", Property::BENT_NORMAL },
|
||||
{ "clipSpaceTransform", Property::CLIP_SPACE_TRANSFORM },
|
||||
{ "absorption", Property::ABSORPTION },
|
||||
{ "transmission", Property::TRANSMISSION },
|
||||
{ "ior", Property::IOR },
|
||||
{ "microThickness", Property::MICRO_THICKNESS },
|
||||
{ "bentNormal", Property::BENT_NORMAL },
|
||||
{ "specularFactor", Property::SPECULAR_FACTOR },
|
||||
{ "specularColorFactor", Property::SPECULAR_COLOR_FACTOR }
|
||||
};
|
||||
|
||||
template <>
|
||||
|
||||
@@ -332,6 +332,9 @@ utils::io::sstream& CodeGenerator::generateProlog(utils::io::sstream& out, Shade
|
||||
generateSpecializationConstant(out, "CONFIG_STEREO_EYE_COUNT",
|
||||
+ReservedSpecializationConstants::CONFIG_STEREO_EYE_COUNT, material.stereoscopicEyeCount);
|
||||
|
||||
generateSpecializationConstant(out, "CONFIG_SH_BANDS_COUNT",
|
||||
+ReservedSpecializationConstants::CONFIG_SH_BANDS_COUNT, 3);
|
||||
|
||||
// CONFIG_MAX_STEREOSCOPIC_EYES is used to size arrays and on Adreno GPUs + vulkan, this has to
|
||||
// be explicitly, statically defined (as in #define). Otherwise (using const int for
|
||||
// example), we'd run into a GPU crash.
|
||||
@@ -1189,6 +1192,8 @@ char const* CodeGenerator::getConstantName(MaterialBuilder::Property property) n
|
||||
case Property::IOR: return "IOR";
|
||||
case Property::MICRO_THICKNESS: return "MICRO_THICKNESS";
|
||||
case Property::BENT_NORMAL: return "BENT_NORMAL";
|
||||
case Property::SPECULAR_FACTOR: return "SPECULAR_FACTOR";
|
||||
case Property::SPECULAR_COLOR_FACTOR: return "SPECULAR_COLOR_FACTOR";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -147,6 +147,9 @@ build_ubershader(volume_opaque volume lit opaque)
|
||||
build_ubershader(volume_fade volume lit fade)
|
||||
build_ubershader(volume_masked volume lit masked)
|
||||
build_ubershader(sheen sheen _ _)
|
||||
build_ubershader(specular_opaque specular lit opaque)
|
||||
build_ubershader(specular_fade specular lit fade)
|
||||
build_ubershader(specular_masked specular lit masked)
|
||||
|
||||
add_custom_target(uberz_file DEPENDS ${UBERZ_OUTPUT_PATH})
|
||||
set_target_properties(uberz_file PROPERTIES FOLDER Libs)
|
||||
|
||||
@@ -93,10 +93,17 @@ struct alignas(4) MaterialKey {
|
||||
bool hasSheen : 1;
|
||||
bool hasIOR : 1;
|
||||
bool hasVolume : 1;
|
||||
uint8_t padding : 5;
|
||||
bool hasSpecular : 1;
|
||||
bool hasSpecularTexture : 1;
|
||||
bool hasSpecularColorTexture : 1;
|
||||
bool padding : 2;
|
||||
// -- 32 bit boundary --
|
||||
uint8_t specularTextureUV;
|
||||
uint8_t specularColorTextureUV;
|
||||
uint16_t padding2;
|
||||
};
|
||||
|
||||
static_assert(sizeof(MaterialKey) == 16, "MaterialKey has unexpected size.");
|
||||
static_assert(sizeof(MaterialKey) == 20, "MaterialKey has unexpected size.");
|
||||
|
||||
UTILS_WARNING_POP
|
||||
|
||||
|
||||
@@ -30,3 +30,8 @@ TransmissionTexture = unsupported
|
||||
# Volume Features
|
||||
Volume = unsupported
|
||||
VolumeThicknessTexture = unsupported
|
||||
|
||||
# Specular Features
|
||||
Specular = unsupported
|
||||
SpecularTexture = unsupported
|
||||
SpecularColorTexture = unsupported
|
||||
|
||||
@@ -55,7 +55,16 @@ material {
|
||||
{ type : mat3, name : sheenRoughnessUvMatrix, precision: high },
|
||||
|
||||
// Reflectance
|
||||
{ type : float, name : reflectance }
|
||||
{ type : float, name : reflectance },
|
||||
|
||||
// KHR_materials_specular
|
||||
{ type : float, name : specularStrength },
|
||||
{ type : float3, name : specularColorFactor },
|
||||
{ type : int, name : specularIndex },
|
||||
{ type : sampler2d, name : specularMap },
|
||||
{ type : mat3, name : specularUvMatrix, precision: high },
|
||||
{ type : int, name : specularColorIndex },
|
||||
{ type : mat3, name : specularColorUvMatrix, precision: high }
|
||||
|
||||
${CUSTOM_PARAMS}
|
||||
],
|
||||
@@ -136,6 +145,15 @@ fragment {
|
||||
material.emissive.rgb *= texture(materialParams_emissiveMap, uv).rgb;
|
||||
}
|
||||
|
||||
material.specularFactor = materialParams.specularStrength;
|
||||
material.specularColorFactor = materialParams.specularColorFactor;
|
||||
|
||||
if (materialParams.specularIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.specularIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.specularUvMatrix).xy;
|
||||
material.specularFactor *= texture(materialParams_specularMap, uv).a;
|
||||
}
|
||||
|
||||
${CUSTOM_FRAGMENT}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,3 +17,8 @@ TextureTransforms=optional
|
||||
Sheen=optional
|
||||
SheenColorTexture=optional
|
||||
SheenRoughnessTexture=optional
|
||||
|
||||
# KHR_material_specular Features
|
||||
Specular=optional
|
||||
SpecularTexture=optional
|
||||
SpecularColorTexture=unsupported
|
||||
|
||||
@@ -0,0 +1,168 @@
|
||||
material {
|
||||
name : specular_ubershader,
|
||||
requires : [ uv0, uv1, color ],
|
||||
shadingModel : lit,
|
||||
blending : ${BLENDING},
|
||||
doubleSided : ${DOUBLESIDED},
|
||||
transparency : ${TRANSPARENCY},
|
||||
flipUV : false,
|
||||
specularAmbientOcclusion : simple,
|
||||
specularAntiAliasing : true,
|
||||
clearCoatIorChange : false,
|
||||
reflections: screenspace,
|
||||
parameters : [
|
||||
|
||||
// Base Color
|
||||
{ type : int, name : baseColorIndex },
|
||||
{ type : float4, name : baseColorFactor },
|
||||
{ type : sampler2d, name : baseColorMap },
|
||||
{ type : mat3, name : baseColorUvMatrix, precision: high },
|
||||
|
||||
// Metallic-Roughness Map
|
||||
{ type : int, name : metallicRoughnessIndex },
|
||||
{ type : float, name : metallicFactor },
|
||||
{ type : float, name : roughnessFactor },
|
||||
{ type : sampler2d, name : metallicRoughnessMap },
|
||||
{ type : mat3, name : metallicRoughnessUvMatrix, precision: high },
|
||||
|
||||
// Normal Map
|
||||
{ type : int, name : normalIndex },
|
||||
{ type : float, name : normalScale },
|
||||
{ type : sampler2d, name : normalMap },
|
||||
{ type : mat3, name : normalUvMatrix, precision: high },
|
||||
|
||||
// Ambient Occlusion
|
||||
{ type : int, name : aoIndex },
|
||||
{ type : float, name : aoStrength },
|
||||
{ type : sampler2d, name : occlusionMap },
|
||||
{ type : mat3, name : occlusionUvMatrix, precision: high },
|
||||
|
||||
// Emissive Map
|
||||
{ type : int, name : emissiveIndex },
|
||||
{ type : float3, name : emissiveFactor },
|
||||
{ type : float, name : emissiveStrength },
|
||||
{ type : sampler2d, name : emissiveMap },
|
||||
{ type : mat3, name : emissiveUvMatrix, precision: high },
|
||||
|
||||
// Clear coat, we drop texture support for clear coat due to 8 texture limits.
|
||||
{ type : float, name : clearCoatFactor },
|
||||
{ type : float, name : clearCoatRoughnessFactor },
|
||||
{ type : int, name : clearCoatIndex },
|
||||
{ type : sampler2d, name : clearCoatMap },
|
||||
{ type : mat3, name : clearCoatUvMatrix, precision: high },
|
||||
{ type : int, name : clearCoatRoughnessIndex },
|
||||
{ type : mat3, name : clearCoatRoughnessUvMatrix, precision: high },
|
||||
{ type : int, name : clearCoatNormalIndex },
|
||||
{ type : mat3, name : clearCoatNormalUvMatrix, precision: high },
|
||||
{ type : float, name : clearCoatNormalScale },
|
||||
|
||||
// KHR_materials_specular
|
||||
{ type : float, name : specularStrength },
|
||||
{ type : float3, name : specularColorFactor },
|
||||
{ type : int, name : specularIndex },
|
||||
{ type : sampler2d, name : specularMap },
|
||||
{ type : mat3, name : specularUvMatrix, precision: high },
|
||||
{ type : int, name : specularColorIndex },
|
||||
{ type : sampler2d, name : specularColorMap },
|
||||
{ type : mat3, name : specularColorUvMatrix, precision: high },
|
||||
|
||||
// IOR
|
||||
{ type : float, name : ior }
|
||||
|
||||
${CUSTOM_PARAMS}
|
||||
],
|
||||
}
|
||||
|
||||
vertex {
|
||||
void materialVertex(inout MaterialVertexInputs material) {
|
||||
${CUSTOM_VERTEX}
|
||||
}
|
||||
}
|
||||
|
||||
fragment {
|
||||
void material(inout MaterialInputs material) {
|
||||
highp float2 uvs[2];
|
||||
uvs[0] = getUV0();
|
||||
uvs[1] = getUV1();
|
||||
|
||||
if (materialParams.normalIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.normalIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.normalUvMatrix).xy;
|
||||
material.normal = texture(materialParams_normalMap, uv).xyz * 2.0 - 1.0;
|
||||
material.normal.xy *= materialParams.normalScale;
|
||||
}
|
||||
|
||||
prepareMaterial(material);
|
||||
material.baseColor = materialParams.baseColorFactor;
|
||||
|
||||
if (materialParams.baseColorIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.baseColorIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.baseColorUvMatrix).xy;
|
||||
material.baseColor *= texture(materialParams_baseColorMap, uv);
|
||||
}
|
||||
|
||||
#if defined(BLEND_MODE_TRANSPARENT)
|
||||
material.baseColor.rgb *= material.baseColor.a;
|
||||
#endif
|
||||
|
||||
material.baseColor *= getColor();
|
||||
|
||||
material.roughness = materialParams.roughnessFactor;
|
||||
material.metallic = materialParams.metallicFactor;
|
||||
material.ior = materialParams.ior;
|
||||
|
||||
material.emissive = vec4(materialParams.emissiveStrength *
|
||||
materialParams.emissiveFactor.rgb, 0.0);
|
||||
|
||||
// KHR_materials_clearcoat forbids clear coat from
|
||||
// being applied in the specular/glossiness model
|
||||
material.clearCoat = materialParams.clearCoatFactor;
|
||||
material.clearCoatRoughness = materialParams.clearCoatRoughnessFactor;
|
||||
|
||||
if (materialParams.clearCoatIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.clearCoatIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.clearCoatUvMatrix).xy;
|
||||
material.clearCoat *= texture(materialParams_clearCoatMap, uv).r;
|
||||
}
|
||||
|
||||
material.specularFactor = materialParams.specularStrength;
|
||||
material.specularColorFactor = materialParams.specularColorFactor;
|
||||
|
||||
if (materialParams.specularIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.specularIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.specularUvMatrix).xy;
|
||||
material.specularFactor *= texture(materialParams_specularMap, uv).a;
|
||||
}
|
||||
|
||||
if (materialParams.specularColorIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.specularColorIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.specularColorUvMatrix).xy;
|
||||
vec4 sc = texture(materialParams_specularColorMap, uv);
|
||||
material.specularColorFactor.r *= sc.r;
|
||||
material.specularColorFactor.g *= sc.g;
|
||||
material.specularColorFactor.b *= sc.b;
|
||||
}
|
||||
|
||||
if (materialParams.metallicRoughnessIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.metallicRoughnessIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.metallicRoughnessUvMatrix).xy;
|
||||
vec4 mr = texture(materialParams_metallicRoughnessMap, uv);
|
||||
material.roughness *= mr.g;
|
||||
material.metallic *= mr.b;
|
||||
}
|
||||
|
||||
if (materialParams.aoIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.aoIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.occlusionUvMatrix).xy;
|
||||
float occlusion = texture(materialParams_occlusionMap, uv).r;
|
||||
material.ambientOcclusion = 1.0 + materialParams.aoStrength * (occlusion - 1.0);
|
||||
}
|
||||
if (materialParams.emissiveIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.emissiveIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.emissiveUvMatrix).xy;
|
||||
material.emissive.rgb *= texture(materialParams_emissiveMap, uv).rgb;
|
||||
}
|
||||
|
||||
${CUSTOM_FRAGMENT}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
ShadingModel=lit
|
||||
|
||||
# Required Aspects
|
||||
BlendingMode = ${BLENDING}
|
||||
|
||||
VertexColors = optional
|
||||
BaseColorTexture = optional
|
||||
NormalTexture = optional
|
||||
OcclusionTexture = optional
|
||||
EmissiveTexture = optional
|
||||
MetallicRoughnessTexture = optional
|
||||
TextureTransforms = optional
|
||||
|
||||
# KHR_materials_specular Features
|
||||
Specular = optional
|
||||
SpecularTexture = optional
|
||||
SpecularColorTexture = optional
|
||||
|
||||
# ClearCoat Features
|
||||
ClearCoat = optional
|
||||
ClearCoatTexture = optional
|
||||
|
||||
# Sheen Features
|
||||
Sheen = unsupported
|
||||
SheenColorTexture = unsupported
|
||||
SheenRoughnessTexture = unsupported
|
||||
|
||||
# Transmission and IOR Features
|
||||
Transmission = unsupported
|
||||
Ior = optional
|
||||
TransmissionTexture = unsupported
|
||||
|
||||
# Volume Features
|
||||
Volume = unsupported
|
||||
VolumeThicknessTexture = unsupported
|
||||
@@ -52,7 +52,18 @@ material {
|
||||
{ type : mat3, name : transmissionUvMatrix, precision: high },
|
||||
|
||||
// IOR
|
||||
{ type : float, name : ior }
|
||||
{ type : float, name : ior },
|
||||
|
||||
// KHR_materials_specular
|
||||
{ type : float, name : specularStrength },
|
||||
{ type : float3, name : specularColorFactor },
|
||||
{ type : int, name : specularIndex },
|
||||
{ type : sampler2d, name : specularMap },
|
||||
{ type : mat3, name : specularUvMatrix, precision: high },
|
||||
{ type : int, name : specularColorIndex },
|
||||
{ type : sampler2d, name : specularColorMap },
|
||||
{ type : mat3, name : specularColorUvMatrix, precision: high }
|
||||
|
||||
|
||||
${CUSTOM_PARAMS}
|
||||
],
|
||||
@@ -126,6 +137,24 @@ fragment {
|
||||
material.emissive.rgb *= texture(materialParams_emissiveMap, uv).rgb;
|
||||
}
|
||||
|
||||
material.specularFactor = materialParams.specularStrength;
|
||||
material.specularColorFactor = materialParams.specularColorFactor;
|
||||
|
||||
if (materialParams.specularIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.specularIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.specularUvMatrix).xy;
|
||||
material.specularFactor *= texture(materialParams_specularMap, uv).a;
|
||||
}
|
||||
|
||||
if (materialParams.specularColorIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.specularColorIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.specularColorUvMatrix).xy;
|
||||
vec4 sc = texture(materialParams_specularColorMap, uv);
|
||||
material.specularColorFactor.r *= sc.r;
|
||||
material.specularColorFactor.g *= sc.g;
|
||||
material.specularColorFactor.b *= sc.b;
|
||||
}
|
||||
|
||||
${CUSTOM_FRAGMENT}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,11 @@ EmissiveTexture=optional
|
||||
MetallicRoughnessTexture=optional
|
||||
TextureTransforms=optional
|
||||
|
||||
# KHR_materials_specular Features
|
||||
Specular=optional
|
||||
SpecularTexture=optional
|
||||
SpecularColorTexture=optional
|
||||
|
||||
Transmission=optional
|
||||
Ior=optional
|
||||
TransmissionTexture=optional
|
||||
|
||||
@@ -58,6 +58,15 @@ material {
|
||||
{ type : sampler2d, name : volumeThicknessMap },
|
||||
{ type : mat3, name : volumeThicknessUvMatrix, precision: high },
|
||||
|
||||
// KHR_materials_specular
|
||||
{ type : float, name : specularStrength },
|
||||
{ type : float3, name : specularColorFactor },
|
||||
{ type : int, name : specularIndex },
|
||||
{ type : sampler2d, name : specularMap },
|
||||
{ type : mat3, name : specularUvMatrix, precision: high },
|
||||
{ type : int, name : specularColorIndex },
|
||||
{ type : mat3, name : specularColorUvMatrix, precision: high },
|
||||
|
||||
// IOR
|
||||
{ type : float, name : ior }
|
||||
|
||||
@@ -142,6 +151,15 @@ fragment {
|
||||
material.emissive.rgb *= texture(materialParams_emissiveMap, uv).rgb;
|
||||
}
|
||||
|
||||
material.specularFactor = materialParams.specularStrength;
|
||||
material.specularColorFactor = materialParams.specularColorFactor;
|
||||
|
||||
if (materialParams.specularIndex > -1) {
|
||||
highp float2 uv = uvs[materialParams.specularIndex];
|
||||
uv = (vec3(uv, 1.0) * materialParams.specularUvMatrix).xy;
|
||||
material.specularFactor *= texture(materialParams_specularMap, uv).a;
|
||||
}
|
||||
|
||||
${CUSTOM_FRAGMENT}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,3 +26,8 @@ TransmissionTexture=optional
|
||||
# Volume Features
|
||||
Volume=optional
|
||||
VolumeThicknessTexture=optional
|
||||
|
||||
# KHR_materials_specular Features
|
||||
Specular=optional
|
||||
SpecularTexture=optional
|
||||
SpecularColorTexture=unsupported
|
||||
|
||||
@@ -1222,6 +1222,7 @@ MaterialKey FAssetLoader::getMaterialKey(const cgltf_data* srcAsset,
|
||||
auto trConfig = inputMat->transmission;
|
||||
auto shConfig = inputMat->sheen;
|
||||
auto vlConfig = inputMat->volume;
|
||||
auto spConfig = inputMat->specular;
|
||||
*baseColorTexture = mrConfig.base_color_texture;
|
||||
*metallicRoughnessTexture = mrConfig.metallic_roughness_texture;
|
||||
|
||||
@@ -1238,7 +1239,9 @@ MaterialKey FAssetLoader::getMaterialKey(const cgltf_data* srcAsset,
|
||||
ccConfig.clearcoat_normal_texture.has_transform ||
|
||||
shConfig.sheen_color_texture.has_transform ||
|
||||
shConfig.sheen_roughness_texture.has_transform ||
|
||||
trConfig.transmission_texture.has_transform;
|
||||
trConfig.transmission_texture.has_transform ||
|
||||
spConfig.specular_color_texture.has_transform ||
|
||||
spConfig.specular_texture.has_transform;
|
||||
|
||||
MaterialKey matkey {
|
||||
.doubleSided = !!inputMat->double_sided,
|
||||
@@ -1273,6 +1276,11 @@ MaterialKey FAssetLoader::getMaterialKey(const cgltf_data* srcAsset,
|
||||
.hasSheen = !!inputMat->has_sheen,
|
||||
.hasIOR = !!inputMat->has_ior,
|
||||
.hasVolume = !!inputMat->has_volume,
|
||||
.hasSpecular = !!inputMat->has_specular,
|
||||
.hasSpecularTexture = spConfig.specular_texture.texture != nullptr,
|
||||
.hasSpecularColorTexture = spConfig.specular_color_texture.texture != nullptr,
|
||||
.specularTextureUV = (uint8_t) spConfig.specular_texture.texcoord,
|
||||
.specularColorTextureUV = (uint8_t) spConfig.specular_color_texture.texcoord,
|
||||
};
|
||||
|
||||
if (inputMat->has_pbr_specular_glossiness) {
|
||||
@@ -1361,6 +1369,7 @@ MaterialInstance* FAssetLoader::createMaterialInstance(const cgltf_material* inp
|
||||
auto trConfig = inputMat->transmission;
|
||||
auto shConfig = inputMat->sheen;
|
||||
auto vlConfig = inputMat->volume;
|
||||
auto spConfig = inputMat->specular;
|
||||
|
||||
// Check the material blending mode, not the cgltf blending mode, because the provider
|
||||
// might have selected an alternative blend mode (e.g. to support transmission).
|
||||
@@ -1560,6 +1569,30 @@ MaterialInstance* FAssetLoader::createMaterialInstance(const cgltf_material* inp
|
||||
inputMat->emissive_strength.emissive_strength : 1.0f);
|
||||
}
|
||||
|
||||
if (matkey.hasSpecular) {
|
||||
const float* s = spConfig.specular_color_factor;
|
||||
mi->setParameter("specularColorFactor", float3{s[0], s[1], s[2]});
|
||||
mi->setParameter("specularStrength", spConfig.specular_factor);
|
||||
|
||||
if (matkey.hasSpecularColorTexture) {
|
||||
fAsset->addTextureBinding(mi, "specularColorMap", spConfig.specular_color_texture.texture, sRGB);
|
||||
if (matkey.hasTextureTransforms) {
|
||||
const cgltf_texture_transform uvt = spConfig.specular_color_texture.transform;
|
||||
auto uvmat = matrixFromUvTransform(uvt.offset, uvt.rotation, uvt.scale);
|
||||
mi->setParameter("specularColorUvMatrix", uvmat);
|
||||
}
|
||||
}
|
||||
if (matkey.hasSpecularTexture) {
|
||||
bool sameTexture = spConfig.specular_color_texture.texture == spConfig.specular_texture.texture;
|
||||
fAsset->addTextureBinding(mi, "specularMap", spConfig.specular_texture.texture, sameTexture ? sRGB : LINEAR);
|
||||
if (matkey.hasTextureTransforms) {
|
||||
const cgltf_texture_transform uvt = spConfig.specular_texture.transform;
|
||||
auto uvmat = matrixFromUvTransform(uvt.offset, uvt.rotation, uvt.scale);
|
||||
mi->setParameter("specularUvMatrix", uvmat);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*cacheEntry = { mi, *uvmap };
|
||||
return mi;
|
||||
}
|
||||
|
||||
@@ -308,6 +308,35 @@ std::string shaderFromKey(const MaterialKey& config) {
|
||||
material.ior = materialParams.ior;
|
||||
)SHADER";
|
||||
}
|
||||
|
||||
if (config.hasSpecular) {
|
||||
shader += R"SHADER(
|
||||
material.specularFactor = materialParams.specularStrength;
|
||||
material.specularColorFactor = materialParams.specularColorFactor;
|
||||
)SHADER";
|
||||
|
||||
if (config.hasSpecularTexture) {
|
||||
shader += "highp float2 specularUV = ${specular};\n";
|
||||
if (config.hasTextureTransforms) {
|
||||
shader += "specularUV = (vec3(specularUV, 1.0) * "
|
||||
"materialParams.specularUvMatrix).xy;\n";
|
||||
}
|
||||
shader += R"SHADER(
|
||||
material.specularFactor *= texture(materialParams_specularMap, specularUV).a;
|
||||
)SHADER";
|
||||
}
|
||||
|
||||
if (config.hasSpecularColorTexture) {
|
||||
shader += "highp float2 specularColorUV = ${specularColor};\n";
|
||||
if (config.hasTextureTransforms) {
|
||||
shader += "specularColorUV = (vec3(specularColorUV, 1.0) * "
|
||||
"materialParams.specularColorUvMatrix).xy;\n";
|
||||
}
|
||||
shader += R"SHADER(
|
||||
material.specularColorFactor *= texture(materialParams_specularColorMap, specularColorUV).rgb;
|
||||
)SHADER";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
shader += "}\n";
|
||||
@@ -463,6 +492,26 @@ Material* createMaterial(Engine* engine, const MaterialKey& config, const UvMap&
|
||||
}
|
||||
}
|
||||
|
||||
// SPECULAR
|
||||
if (config.hasSpecular) {
|
||||
builder.parameter("specularStrength", MaterialBuilder::UniformType::FLOAT);
|
||||
builder.parameter("specularColorFactor", MaterialBuilder::UniformType::FLOAT3);
|
||||
if (config.hasSpecularTexture) {
|
||||
builder.parameter("specularMap", MaterialBuilder::SamplerType::SAMPLER_2D);
|
||||
if (config.hasTextureTransforms) {
|
||||
builder.parameter("specularUvMatrix", MaterialBuilder::UniformType::MAT3,
|
||||
MaterialBuilder::ParameterPrecision::HIGH);
|
||||
}
|
||||
}
|
||||
if (config.hasSpecularColorTexture) {
|
||||
builder.parameter("specularColorMap", MaterialBuilder::SamplerType::SAMPLER_2D);
|
||||
if (config.hasTextureTransforms) {
|
||||
builder.parameter("specularColorUvMatrix", MaterialBuilder::UniformType::MAT3,
|
||||
MaterialBuilder::ParameterPrecision::HIGH);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// BLENDING
|
||||
switch (config.alphaMode) {
|
||||
case AlphaMode::OPAQUE:
|
||||
|
||||
@@ -143,6 +143,21 @@ void constrainMaterial(MaterialKey* key, UvMap* uvmap) {
|
||||
retval[key->volumeThicknessUV] = (UvSet) index++;
|
||||
}
|
||||
}
|
||||
if (key->hasSpecularTexture && retval[key->specularTextureUV] == UNUSED) {
|
||||
if (index > MAX_INDEX) {
|
||||
key->hasSpecularTexture = false;
|
||||
} else {
|
||||
retval[key->specularTextureUV] = (UvSet) index++;
|
||||
}
|
||||
}
|
||||
if (key->hasSpecularColorTexture && retval[key->specularColorTextureUV] == UNUSED) {
|
||||
if (index > MAX_INDEX) {
|
||||
key->hasSpecularColorTexture = false;
|
||||
} else {
|
||||
retval[key->specularColorTextureUV] = (UvSet) index++;
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: KHR_materials_clearcoat does not provide separate UVs, we'll assume UV0
|
||||
*uvmap = retval;
|
||||
}
|
||||
@@ -167,6 +182,8 @@ void processShaderString(std::string* shader, const UvMap& uvmap, const Material
|
||||
const auto& sheenColorUV = uvstrings[uvmap[config.sheenColorUV]];
|
||||
const auto& sheenRoughnessUV = uvstrings[uvmap[config.sheenRoughnessUV]];
|
||||
const auto& volumeThicknessUV = uvstrings[uvmap[config.volumeThicknessUV]];
|
||||
const auto& specularUV = uvstrings[uvmap[config.specularTextureUV]];
|
||||
const auto& specularColorUV = uvstrings[uvmap[config.specularColorTextureUV]];
|
||||
|
||||
replaceAll("${normal}", normalUV);
|
||||
replaceAll("${color}", baseColorUV);
|
||||
@@ -180,6 +197,8 @@ void processShaderString(std::string* shader, const UvMap& uvmap, const Material
|
||||
replaceAll("${sheenColor}", sheenColorUV);
|
||||
replaceAll("${sheenRoughness}", sheenRoughnessUV);
|
||||
replaceAll("${volumeThickness}", volumeThicknessUV);
|
||||
replaceAll("${specular}", specularUV);
|
||||
replaceAll("${specularColor}", specularColorUV);
|
||||
}
|
||||
|
||||
} // namespace filament::gltfio
|
||||
|
||||
@@ -63,6 +63,42 @@ static void prepareConfig(MaterialKey* config, const char* label) {
|
||||
config->hasSheen = false;
|
||||
config->hasIOR = false;
|
||||
}
|
||||
|
||||
if (config->useSpecularGlossiness && config->hasSpecular) {
|
||||
slog.w << "SpecularGlossiness and specular are not supported together in ubershader mode,"
|
||||
" removing specularGlossiness (" << label << ")." << io::endl;
|
||||
|
||||
config->useSpecularGlossiness = false;
|
||||
}
|
||||
|
||||
if (config->unlit && config->hasSpecular) {
|
||||
slog.w << "Unlit and specular are not supported together in ubershader mode,"
|
||||
" removing unlit (" << label << ")." << io::endl;
|
||||
|
||||
config->unlit = false;
|
||||
}
|
||||
|
||||
// Also due to sampler overload, clearcoat with specular, we can only support with specular map.
|
||||
if ((config->hasClearCoatNormalTexture || config->hasClearCoatRoughnessTexture) && config->hasSpecular) {
|
||||
slog.w << "Specular can only work with clearcoat that does not use clear coat normal or clear coat roughness map,"
|
||||
" removing clear coat normal and roughness (" << label << ")." << io::endl;
|
||||
config->hasClearCoatNormalTexture = false;
|
||||
config->hasClearCoatRoughnessTexture = false;
|
||||
}
|
||||
|
||||
// Also due to sampler overload, sheen with specular, we can only support without specular color texture.
|
||||
if (config->hasSpecularColorTexture && config->hasSheen) {
|
||||
slog.w << "Sheen can only work with specular that does not use specular color map,"
|
||||
" removing specular color (" << label << ")." << io::endl;
|
||||
config->hasSpecularColorTexture = false;
|
||||
}
|
||||
|
||||
// Also due to sampler overload, volume with specular, we can only support without specular color texture.
|
||||
if (config->hasSpecularColorTexture && config->hasVolume) {
|
||||
slog.w << "Volume can only work with specular that does not use specular color map,"
|
||||
"removing specular color (" << label << ")." << io::endl;
|
||||
config->hasSpecularColorTexture = false;
|
||||
}
|
||||
}
|
||||
|
||||
class UbershaderProvider : public MaterialProvider {
|
||||
@@ -155,6 +191,9 @@ Material* UbershaderProvider::getMaterial(const MaterialKey& config) const {
|
||||
requirements.features["SheenColorTexture"] = config.hasSheenColorTexture;
|
||||
requirements.features["SheenRoughnessTexture"] = config.hasSheenRoughnessTexture;
|
||||
requirements.features["VolumeThicknessTexture"] = config.hasVolumeThicknessTexture;
|
||||
requirements.features["Specular"] = config.hasSpecular;
|
||||
requirements.features["SpecularTexture"] = config.hasSpecularTexture;
|
||||
requirements.features["SpecularColorTexture"] = config.hasSpecularColorTexture;
|
||||
|
||||
if (Material* mat = mMaterials.getMaterial(requirements); mat != nullptr) {
|
||||
return mat;
|
||||
@@ -250,6 +289,14 @@ MaterialInstance* UbershaderProvider::createMaterialInstance(MaterialKey* config
|
||||
mi->setParameter("transmissionIndex",
|
||||
getUvIndex(config->transmissionUV, config->hasTransmissionTexture));
|
||||
}
|
||||
if (config->hasSpecular) {
|
||||
mi->setParameter("specularUvMatrix", identity);
|
||||
mi->setParameter("specularIndex",
|
||||
getUvIndex(config->specularTextureUV, config->hasSpecularTexture));
|
||||
mi->setParameter("specularColorUvMatrix", identity);
|
||||
mi->setParameter("specularColorIndex",
|
||||
getUvIndex(config->specularColorTextureUV, config->hasSpecularColorTexture));
|
||||
}
|
||||
}
|
||||
|
||||
TextureSampler sampler;
|
||||
@@ -300,6 +347,14 @@ MaterialInstance* UbershaderProvider::createMaterialInstance(MaterialKey* config
|
||||
mi->setParameter("reflectance", 0.5f);
|
||||
}
|
||||
|
||||
if (needsTexture("SpecularTexture")) {
|
||||
mi->setParameter("specularMap", mDummyTexture, sampler);
|
||||
}
|
||||
|
||||
if (needsTexture("SpecularColorTexture")) {
|
||||
mi->setParameter("specularColorMap", mDummyTexture, sampler);
|
||||
}
|
||||
|
||||
return mi;
|
||||
}
|
||||
|
||||
|
||||
@@ -547,10 +547,11 @@ static bool checkAsset(const utils::Path& filename) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Parse the glTF file and create Filament entities.
|
||||
// Try parsing the glTF file to check the validity of the file format.
|
||||
cgltf_options options{};
|
||||
cgltf_data* sourceAsset;
|
||||
cgltf_data* sourceAsset = nullptr;
|
||||
cgltf_result result = cgltf_parse(&options, buffer.data(), contentSize, &sourceAsset);
|
||||
cgltf_free(sourceAsset);
|
||||
if (result != cgltf_result_success) {
|
||||
slog.e << "Unable to parse glTF file." << io::endl;
|
||||
return false;
|
||||
|
||||
@@ -181,6 +181,16 @@ vec3 fresnel(const vec3 f0, float LoH) {
|
||||
#endif
|
||||
}
|
||||
|
||||
vec3 fresnel(const vec3 f0, const float f90, float LoH) {
|
||||
#if BRDF_SPECULAR_F == SPECULAR_F_SCHLICK
|
||||
#if FILAMENT_QUALITY == FILAMENT_QUALITY_LOW
|
||||
return F_Schlick(f0, LoH); // f90 = 1.0
|
||||
#else
|
||||
return F_Schlick(f0, f90, LoH);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
float distributionAnisotropic(float at, float ab, float ToH, float BoH, float NoH) {
|
||||
#if BRDF_ANISOTROPIC_D == SPECULAR_D_GGX_ANISOTROPIC
|
||||
return D_GGX_Anisotropic(at, ab, ToH, BoH, NoH);
|
||||
|
||||
@@ -18,6 +18,11 @@ struct PixelParams {
|
||||
float perceptualRoughness;
|
||||
float perceptualRoughnessUnclamped;
|
||||
vec3 f0;
|
||||
#if defined(MATERIAL_HAS_SPECULAR_COLOR_FACTOR) || defined(MATERIAL_HAS_SPECULAR_FACTOR)
|
||||
float f90;
|
||||
float specular;
|
||||
vec3 specularColor;
|
||||
#endif
|
||||
float roughness;
|
||||
vec3 dfg;
|
||||
vec3 energyCompensation;
|
||||
|
||||
@@ -2,9 +2,6 @@
|
||||
// Image based lighting configuration
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// Number of spherical harmonics bands (1, 2 or 3)
|
||||
#define SPHERICAL_HARMONICS_BANDS 3
|
||||
|
||||
// IBL integration algorithm
|
||||
#define IBL_INTEGRATION_PREFILTERED_CUBEMAP 0
|
||||
#define IBL_INTEGRATION_IMPORTANCE_SAMPLING 1
|
||||
@@ -44,21 +41,25 @@ vec3 prefilteredDFG(float perceptualRoughness, float NoV) {
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
vec3 Irradiance_SphericalHarmonics(const vec3 n) {
|
||||
return max(
|
||||
frameUniforms.iblSH[0]
|
||||
#if SPHERICAL_HARMONICS_BANDS >= 2
|
||||
+ frameUniforms.iblSH[1] * (n.y)
|
||||
+ frameUniforms.iblSH[2] * (n.z)
|
||||
+ frameUniforms.iblSH[3] * (n.x)
|
||||
#endif
|
||||
#if SPHERICAL_HARMONICS_BANDS >= 3
|
||||
+ frameUniforms.iblSH[4] * (n.y * n.x)
|
||||
+ frameUniforms.iblSH[5] * (n.y * n.z)
|
||||
+ frameUniforms.iblSH[6] * (3.0 * n.z * n.z - 1.0)
|
||||
+ frameUniforms.iblSH[7] * (n.z * n.x)
|
||||
+ frameUniforms.iblSH[8] * (n.x * n.x - n.y * n.y)
|
||||
#endif
|
||||
, 0.0);
|
||||
vec3 sphericalHarmonics = frameUniforms.iblSH[0];
|
||||
|
||||
if (CONFIG_SH_BANDS_COUNT >= 2) {
|
||||
sphericalHarmonics +=
|
||||
frameUniforms.iblSH[1] * (n.y)
|
||||
+ frameUniforms.iblSH[2] * (n.z)
|
||||
+ frameUniforms.iblSH[3] * (n.x);
|
||||
}
|
||||
|
||||
if (CONFIG_SH_BANDS_COUNT >= 3) {
|
||||
sphericalHarmonics +=
|
||||
frameUniforms.iblSH[4] * (n.y * n.x)
|
||||
+ frameUniforms.iblSH[5] * (n.y * n.z)
|
||||
+ frameUniforms.iblSH[6] * (3.0 * n.z * n.z - 1.0)
|
||||
+ frameUniforms.iblSH[7] * (n.z * n.x)
|
||||
+ frameUniforms.iblSH[8] * (n.x * n.x - n.y * n.y);
|
||||
}
|
||||
|
||||
return max(sphericalHarmonics, 0.0);
|
||||
}
|
||||
|
||||
vec3 Irradiance_RoughnessOne(const vec3 n) {
|
||||
@@ -135,9 +136,13 @@ vec3 getSpecularDominantDirection(const vec3 n, const vec3 r, float roughness) {
|
||||
vec3 specularDFG(const PixelParams pixel) {
|
||||
#if defined(SHADING_MODEL_CLOTH)
|
||||
return pixel.f0 * pixel.dfg.z;
|
||||
#else
|
||||
#if defined(MATERIAL_HAS_SPECULAR_COLOR_FACTOR) || defined(MATERIAL_HAS_SPECULAR_FACTOR)
|
||||
return mix(pixel.dfg.xxx, pixel.dfg.yyy, pixel.f0) * pixel.specular;
|
||||
#else
|
||||
return mix(pixel.dfg.xxx, pixel.dfg.yyy, pixel.f0);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
vec3 getReflectedVector(const PixelParams pixel, const vec3 n) {
|
||||
@@ -662,7 +667,6 @@ void evaluateIBL(const MaterialInputs material, const PixelParams pixel, inout v
|
||||
|
||||
// Combine all terms
|
||||
// Note: iblLuminance is already premultiplied by the exposure
|
||||
|
||||
color.rgb += Fr + Fd;
|
||||
#if defined(MATERIAL_HAS_REFRACTION)
|
||||
color.rgb += Ft;
|
||||
|
||||
@@ -89,6 +89,15 @@ struct MaterialInputs {
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(MATERIAL_HAS_SPECULAR_FACTOR)
|
||||
float specularFactor;
|
||||
#endif
|
||||
|
||||
#if defined(MATERIAL_HAS_SPECULAR_COLOR_FACTOR)
|
||||
vec3 specularColorFactor;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
void initMaterial(out MaterialInputs material) {
|
||||
@@ -177,6 +186,15 @@ void initMaterial(out MaterialInputs material) {
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(MATERIAL_HAS_SPECULAR_FACTOR)
|
||||
material.specularFactor = 1.0;
|
||||
#endif
|
||||
|
||||
#if defined(MATERIAL_HAS_SPECULAR_COLOR_FACTOR)
|
||||
material.specularColorFactor = vec3(1.0);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#if defined(MATERIAL_HAS_CUSTOM_SURFACE_SHADING)
|
||||
|
||||
@@ -75,7 +75,21 @@ void getCommonPixelParams(const MaterialInputs material, inout PixelParams pixel
|
||||
// Assumes an interface from air to an IOR of 1.5 for dielectrics
|
||||
float reflectance = computeDielectricF0(material.reflectance);
|
||||
#endif
|
||||
#if !defined(MATERIAL_HAS_SPECULAR_FACTOR) && !defined(MATERIAL_HAS_SPECULAR_COLOR_FACTOR)
|
||||
pixel.f0 = computeF0(baseColor, material.metallic, reflectance);
|
||||
#else
|
||||
vec3 dielectricSpecularF0 = vec3(0.0);
|
||||
float dielectricSpecularF90 = 0.0;
|
||||
#if defined(MATERIAL_HAS_SPECULAR_COLOR_FACTOR)
|
||||
dielectricSpecularF0 = min(reflectance * material.specularColorFactor, vec3(1.0));
|
||||
#endif
|
||||
#if defined(MATERIAL_HAS_SPECULAR_FACTOR)
|
||||
dielectricSpecularF0 *= material.specularFactor;
|
||||
dielectricSpecularF90 = material.specularFactor;
|
||||
#endif
|
||||
pixel.f0 = baseColor.rgb * material.metallic + dielectricSpecularF0 * (1.0 - material.metallic);
|
||||
pixel.f90 = material.metallic + dielectricSpecularF90 * (1.0 - material.metallic);
|
||||
#endif
|
||||
#else
|
||||
pixel.diffuseColor = baseColor.rgb;
|
||||
pixel.f0 = material.sheenColor;
|
||||
@@ -123,6 +137,16 @@ void getCommonPixelParams(const MaterialInputs material, inout PixelParams pixel
|
||||
#endif
|
||||
}
|
||||
|
||||
void getSpecularPixelParams(const MaterialInputs material, inout PixelParams pixel) {
|
||||
#if defined(MATERIAL_HAS_SPECULAR_FACTOR)
|
||||
pixel.specular = material.specularFactor;
|
||||
#endif
|
||||
|
||||
#if defined(MATERIAL_HAS_SPECULAR_COLOR_FACTOR)
|
||||
pixel.specularColor = material.specularColorFactor;
|
||||
#endif
|
||||
}
|
||||
|
||||
void getSheenPixelParams(const MaterialInputs material, inout PixelParams pixel) {
|
||||
#if defined(MATERIAL_HAS_SHEEN_COLOR) && !defined(SHADING_MODEL_CLOTH) && !defined(SHADING_MODEL_SUBSURFACE)
|
||||
pixel.sheenColor = material.sheenColor;
|
||||
@@ -232,6 +256,7 @@ void getEnergyCompensationPixelParams(inout PixelParams pixel) {
|
||||
* testing fails.
|
||||
*/
|
||||
void getPixelParams(const MaterialInputs material, out PixelParams pixel) {
|
||||
getSpecularPixelParams(material, pixel);
|
||||
getCommonPixelParams(material, pixel);
|
||||
getSheenPixelParams(material, pixel);
|
||||
getClearCoatPixelParams(material, pixel);
|
||||
|
||||
@@ -63,8 +63,11 @@ vec3 isotropicLobe(const PixelParams pixel, const Light light, const vec3 h,
|
||||
|
||||
float D = distribution(pixel.roughness, NoH, h);
|
||||
float V = visibility(pixel.roughness, NoV, NoL);
|
||||
#if defined(MATERIAL_HAS_SPECULAR_COLOR_FACTOR) || defined(MATERIAL_HAS_SPECULAR_FACTOR)
|
||||
vec3 F = fresnel(pixel.f0, pixel.f90, LoH);
|
||||
#else
|
||||
vec3 F = fresnel(pixel.f0, LoH);
|
||||
|
||||
#endif
|
||||
return (D * V) * F;
|
||||
}
|
||||
|
||||
@@ -144,7 +147,6 @@ vec3 surfaceShading(const PixelParams pixel, const Light light, float occlusion)
|
||||
color += clearCoat;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return (color * light.colorIntensity.rgb) *
|
||||
(light.colorIntensity.w * light.attenuation * NoL * occlusion);
|
||||
}
|
||||
|
||||
+6
@@ -81,6 +81,11 @@ filegroup(
|
||||
srcs = ["include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "spirv_ext_inst_nonsemantic_vkspreflection_grammar_unified1",
|
||||
srcs = ["include/spirv/unified1/extinst.nonsemantic.vkspreflection.grammar.json"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "spirv_ext_inst_nonsemantic_debugprintf_grammar_unified1",
|
||||
srcs = ["include/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json"],
|
||||
@@ -128,6 +133,7 @@ cc_library(
|
||||
"include/spirv/unified1/GLSL.std.450.h",
|
||||
"include/spirv/unified1/NonSemanticClspvReflection.h",
|
||||
"include/spirv/unified1/NonSemanticDebugPrintf.h",
|
||||
"include/spirv/unified1/NonSemanticVkspReflection.h",
|
||||
"include/spirv/unified1/OpenCL.std.h",
|
||||
],
|
||||
includes = ["include"],
|
||||
|
||||
Vendored
+2
-1
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2020 Google LLC
|
||||
# Copyright (c) 2020-2024 Google LLC
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and/or associated documentation files (the "Materials"),
|
||||
@@ -35,6 +35,7 @@ source_set("spv_headers") {
|
||||
"include/spirv/unified1/GLSL.std.450.h",
|
||||
"include/spirv/unified1/NonSemanticClspvReflection.h",
|
||||
"include/spirv/unified1/NonSemanticDebugPrintf.h",
|
||||
"include/spirv/unified1/NonSemanticVkspReflection.h",
|
||||
"include/spirv/unified1/OpenCL.std.h",
|
||||
"include/spirv/unified1/spirv.h",
|
||||
"include/spirv/unified1/spirv.hpp",
|
||||
|
||||
+33
-101
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||
# Copyright (c) 2015-2024 The Khronos Group Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
@@ -23,113 +23,45 @@
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
|
||||
#
|
||||
# The SPIR-V headers from the SPIR-V Registry
|
||||
# https://www.khronos.org/registry/spir-v/
|
||||
#
|
||||
cmake_minimum_required(VERSION 3.19)
|
||||
project(SPIRV-Headers VERSION 1.5.5)
|
||||
project(SPIRV-Headers LANGUAGES CXX VERSION 1.5.5)
|
||||
|
||||
# There are two ways to use this project.
|
||||
#
|
||||
# Using this source tree directly from a CMake-based project:
|
||||
# 1. Add an add_subdirectory directive to include this sub directory.
|
||||
# 2. Use ${SPIRV-Headers_SOURCE_DIR}/include} in a target_include_directories
|
||||
# command.
|
||||
#
|
||||
# Installing the headers first, then using them with an implicit include
|
||||
# directory. To install the headers:
|
||||
# 1. mkdir build ; cd build
|
||||
# 2. cmake ..
|
||||
# 3. cmake --build . --target install
|
||||
|
||||
option(SPIRV_HEADERS_SKIP_EXAMPLES "Skip building examples" ON)
|
||||
|
||||
option(SPIRV_HEADERS_SKIP_INSTALL "Skip install" ON)
|
||||
|
||||
if(NOT ${SPIRV_HEADERS_SKIP_EXAMPLES})
|
||||
set(SPIRV_HEADERS_ENABLE_EXAMPLES ON)
|
||||
if (CMAKE_VERSION VERSION_LESS "3.21")
|
||||
# https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html
|
||||
string(COMPARE EQUAL ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} PROJECT_IS_TOP_LEVEL)
|
||||
endif()
|
||||
|
||||
if(NOT ${SPIRV_HEADERS_SKIP_INSTALL})
|
||||
set(SPIRV_HEADERS_ENABLE_INSTALL ON)
|
||||
# legacy
|
||||
add_custom_target(install-headers
|
||||
COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv
|
||||
$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/include/spirv)
|
||||
add_library(SPIRV-Headers INTERFACE)
|
||||
add_library(SPIRV-Headers::SPIRV-Headers ALIAS SPIRV-Headers)
|
||||
target_include_directories(SPIRV-Headers INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
|
||||
|
||||
option(SPIRV_HEADERS_ENABLE_TESTS "Test SPIRV-Headers" OFF)
|
||||
option(SPIRV_HEADERS_ENABLE_INSTALL "Install SPIRV-Headers" OFF)
|
||||
|
||||
if(SPIRV_HEADERS_ENABLE_TESTS)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
if (SPIRV_HEADERS_ENABLE_EXAMPLES)
|
||||
message(STATUS "Building SPIRV-Header examples")
|
||||
add_subdirectory(example)
|
||||
endif()
|
||||
|
||||
include(GNUInstallDirs)
|
||||
add_library(${PROJECT_NAME} INTERFACE)
|
||||
target_include_directories(${PROJECT_NAME} INTERFACE
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
)
|
||||
|
||||
# Installation
|
||||
|
||||
if (SPIRV_HEADERS_ENABLE_INSTALL)
|
||||
message(STATUS "Installing SPIRV-Header")
|
||||
|
||||
set(config_install_dir "${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME}")
|
||||
|
||||
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
|
||||
|
||||
set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
|
||||
set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
|
||||
set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
|
||||
set(namespace "${PROJECT_NAME}::")
|
||||
|
||||
if(SPIRV_HEADERS_ENABLE_INSTALL)
|
||||
include(GNUInstallDirs)
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
if (NOT CMAKE_VERSION VERSION_LESS 3.14)
|
||||
set(arch_independent_str ARCH_INDEPENDENT)
|
||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
|
||||
set(cmake_install_dir "${CMAKE_INSTALL_DATADIR}/cmake/SPIRV-Headers")
|
||||
set(version_config "${CMAKE_CURRENT_BINARY_DIR}/generated/SPIRV-HeadersConfigVersion.cmake")
|
||||
|
||||
write_basic_package_version_file("${version_config}" COMPATIBILITY SameMajorVersion ARCH_INDEPENDENT)
|
||||
install(FILES "${version_config}" DESTINATION "${cmake_install_dir}")
|
||||
|
||||
install(TARGETS SPIRV-Headers EXPORT "SPIRV-HeadersConfig" INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
install(EXPORT "SPIRV-HeadersConfig" NAMESPACE "SPIRV-Headers::" DESTINATION "${cmake_install_dir}")
|
||||
|
||||
if (IS_ABSOLUTE ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
set(SPIRV_HEADERS_PKGCONFIG_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
else()
|
||||
set(SPIRV_HEADERS_PKGCONFIG_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
write_basic_package_version_file(
|
||||
"${version_config}"
|
||||
COMPATIBILITY SameMajorVersion
|
||||
${arch_independent_str}
|
||||
)
|
||||
|
||||
configure_package_config_file(
|
||||
"cmake/Config.cmake.in"
|
||||
"${project_config}"
|
||||
INSTALL_DESTINATION "${config_install_dir}"
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS ${PROJECT_NAME}
|
||||
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
)
|
||||
|
||||
install(
|
||||
DIRECTORY include/spirv
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
)
|
||||
|
||||
install(
|
||||
FILES "${project_config}" "${version_config}"
|
||||
DESTINATION "${config_install_dir}"
|
||||
)
|
||||
|
||||
install(
|
||||
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||
NAMESPACE "${namespace}"
|
||||
DESTINATION "${config_install_dir}"
|
||||
)
|
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/SPIRV-Headers.pc.in ${CMAKE_BINARY_DIR}/SPIRV-Headers.pc @ONLY)
|
||||
install(
|
||||
FILES "${CMAKE_BINARY_DIR}/SPIRV-Headers.pc"
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig
|
||||
)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/SPIRV-Headers.pc.in ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Headers.pc @ONLY)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Headers.pc" DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig)
|
||||
endif()
|
||||
|
||||
Vendored
+79
-1
@@ -1,4 +1,5 @@
|
||||
Copyright (c) 2015-2018 The Khronos Group Inc.
|
||||
Files: All files except for those called out below.
|
||||
Copyright (c) 2015-2024 The Khronos Group Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and/or associated documentation files (the
|
||||
@@ -23,3 +24,80 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
|
||||
---
|
||||
|
||||
Files: include/spirv/spir-v.xml
|
||||
Copyright (c) 2015-2024 The Khronos Group Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and/or associated documentation files (the
|
||||
"Materials"), to deal in the Materials without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
permit persons to whom the Materials are furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Materials.
|
||||
|
||||
THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
|
||||
---
|
||||
|
||||
Files: tools/buildHeaders/jsoncpp/*
|
||||
The JsonCpp library's source code, including accompanying documentation,
|
||||
tests and demonstration applications, are licensed under the following
|
||||
conditions...
|
||||
|
||||
The author (Baptiste Lepilleur) explicitly disclaims copyright in all
|
||||
jurisdictions which recognize such a disclaimer. In such jurisdictions,
|
||||
this software is released into the Public Domain.
|
||||
|
||||
In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
|
||||
2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is
|
||||
released under the terms of the MIT License (see below).
|
||||
|
||||
In jurisdictions which recognize Public Domain property, the user of this
|
||||
software may choose to accept it either as 1) Public Domain, 2) under the
|
||||
conditions of the MIT License (see below), or 3) under the terms of dual
|
||||
Public Domain/MIT License conditions described here, as they choose.
|
||||
|
||||
The MIT License is about as close to Public Domain as a license can get, and is
|
||||
described in clear, concise terms at:
|
||||
|
||||
http://en.wikipedia.org/wiki/MIT_License
|
||||
|
||||
The full text of the MIT License follows:
|
||||
|
||||
========================================================================
|
||||
Copyright (c) 2007-2010 Baptiste Lepilleur
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
========================================================================
|
||||
|
||||
---
|
||||
|
||||
Vendored
+1
-1
@@ -198,7 +198,7 @@ python3 bin/makeExtinstHeaders.py
|
||||
## License
|
||||
<a name="license"></a>
|
||||
```
|
||||
Copyright (c) 2015-2018 The Khronos Group Inc.
|
||||
Copyright (c) 2015-2024 The Khronos Group Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and/or associated documentation files (the
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Security updates are applied only to the latest release.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released.
|
||||
|
||||
Please disclose it at [security advisory](https://github.com/KhronosGroup/SPIRV-Headers/security/advisories/new).
|
||||
|
||||
This project is maintained by a team of volunteers on a reasonable-effort basis. As such, please give us at least 90 days to work on a fix before public exposure.
|
||||
@@ -1,4 +0,0 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
|
||||
check_required_components("@PROJECT_NAME@")
|
||||
Vendored
+1
-2
@@ -1,5 +1,4 @@
|
||||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
includedir=@SPIRV_HEADERS_PKGCONFIG_INCLUDE_DIR@
|
||||
|
||||
Name: SPIRV-Headers
|
||||
Description: Header files from the SPIR-V registry
|
||||
@@ -1,4 +0,0 @@
|
||||
add_library(SPIRV-Headers-example
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/example.cpp)
|
||||
target_include_directories(SPIRV-Headers-example
|
||||
PRIVATE ${SPIRV-Headers_SOURCE_DIR}/include)
|
||||
+25
-10
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<registry>
|
||||
<!--
|
||||
Copyright (c) 2015 The Khronos Group Inc.
|
||||
Copyright (c) 2015-2024 The Khronos Group Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and/or associated documentation files (the
|
||||
@@ -82,12 +82,19 @@
|
||||
<id value="29" vendor="Mikkosoft Productions" tool="MSP Shader Compiler" comment="Contact Mikko Rasa, tdb@tdb.fi"/>
|
||||
<id value="30" vendor="SpvGenTwo community" tool="SpvGenTwo SPIR-V IR Tools" comment="https://github.com/rAzoR8/SpvGenTwo"/>
|
||||
<id value="31" vendor="Google" tool="Skia SkSL" comment="Contact Ethan Nicholas, ethannicholas@google.com"/>
|
||||
<id value="32" vendor="TornadoVM" tool="SPIRV Beehive Toolkit" comment="https://github.com/beehive-lab/spirv-beehive-toolkit"/>
|
||||
<id value="32" vendor="TornadoVM" tool="Beehive SPIRV Toolkit" comment="https://github.com/beehive-lab/beehive-spirv-toolkit"/>
|
||||
<id value="33" vendor="DragonJoker" tool="ShaderWriter" comment="Contact Sylvain Doremus, https://github.com/DragonJoker/ShaderWriter"/>
|
||||
<id value="34" vendor="Rayan Hatout" tool="SPIRVSmith" comment="Contact Rayan Hatout rayan.hatout@gmail.com, Repo https://github.com/rayanht/SPIRVSmith"/>
|
||||
<id value="35" vendor="Saarland University" tool="Shady" comment="Contact Hugo Devillers devillers@uni-saarland.de, Repo https://github.com/Hugobros3/shady"/>
|
||||
<id value="36" vendor="Taichi Graphics" tool="Taichi" comment="Contact Rendong Liang rendongliang@taichi.graphics, Repo https://github.com/taichi-dev/taichi"/>
|
||||
<unused start="37" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
|
||||
<id value="37" vendor="heroseh" tool="Hero C Compiler" comment="https://github.com/heroseh/hcc"/>
|
||||
<id value="38" vendor="Meta" tool="SparkSL" comment="Contact Dunfan Lu, dunfanlu@meta.com, https://sparkar.facebook.com/ar-studio/learn/sparksl/sparksl-overview"/>
|
||||
<id value="39" vendor="SirLynix" tool="Nazara ShaderLang Compiler" comment="Contact Jérôme Leclercq, https://github.com/NazaraEngine/ShaderLang"/>
|
||||
<id value="40" vendor="NVIDIA" tool="Slang Compiler" comment="Contact Theresa Foley, tfoley@nvidia.com, https://github.com/shader-slang/slang/"/>
|
||||
<id value="41" vendor="Zig Software Foundation" tool="Zig Compiler" comment="Contact Robin Voetter, https://github.com/Snektron"/>
|
||||
<id value="42" vendor="Rendong Liang" tool="spq" comment="Contact Rendong Liang, admin@penguinliong.moe, https://github.com/PENGUINLIONG/spq-rs"/>
|
||||
<id value="43" vendor="LLVM" tool="LLVM SPIR-V Backend" comment="Contact Michal Paszkowski, michal.paszkowski@intel.com, https://github.com/llvm/llvm-project/tree/main/llvm/lib/Target/SPIRV"/>
|
||||
<unused start="44" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
|
||||
</ids>
|
||||
|
||||
<!-- SECTION: SPIR-V Opcodes and Enumerants -->
|
||||
@@ -140,13 +147,17 @@
|
||||
<ids type="opcode" start="6144" end="6271" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||
<ids type="opcode" start="6272" end="6399" vendor="Huawei" comment="Contact wanghuilong2@xunweitech.com"/>
|
||||
<ids type="opcode" start="6400" end="6463" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
||||
<ids type="opcode" start="6464" end="6527" vendor="N/A" comment="Blank range to keep alignment with non-opcodes"/>
|
||||
<ids type="opcode" start="6528" end="6591" vendor="Codeplay" comment="Contact duncan.brawley@codeplay.com"/>
|
||||
<ids type="opcode" start="6592" end="6655" vendor="Saarland University" comment="Contact devillers@cg.uni-saarland.de"/>
|
||||
<ids type="opcode" start="6656" end="6719" vendor="Meta" comment="Contact dunfanlu@meta.com"/>
|
||||
<!-- Opcode enumerants to reserve for future use. To get a block, allocate
|
||||
multiples of 64 starting at the lowest available point in this
|
||||
block and add a corresponding <ids> tag immediately above. Make
|
||||
sure to fill in the vendor attribute, and preferably add a contact
|
||||
person/address in a comment attribute. -->
|
||||
<!-- Example new block: <ids type="opcode" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
|
||||
<ids type="opcode" start="6464" end="65535" comment="Opcode range reservable for future use by vendors"/>
|
||||
<ids type="opcode" start="6656" end="65535" comment="Opcode range reservable for future use by vendors"/>
|
||||
<!-- End reservations of opcodes -->
|
||||
|
||||
|
||||
@@ -170,13 +181,16 @@
|
||||
<ids type="enumerant" start="6272" end="6399" vendor="Huawei" comment="Contact wanghuilong2@xunweitech.com"/>
|
||||
<ids type="enumerant" start="6400" end="6463" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
||||
<ids type="enumerant" start="6464" end="6527" vendor="Mikkosoft Productions" comment="Contact Mikko Rasa, tdb@tdb.fi"/>
|
||||
<ids type="enumerant" start="6528" end="6591" vendor="Codeplay" comment="Contact duncan.brawley@codeplay.com"/>
|
||||
<ids type="enumerant" start="6592" end="6655" vendor="Saarland University" comment="Contact devillers@cg.uni-saarland.de"/>
|
||||
<ids type="enumerant" start="6656" end="6719" vendor="Meta" comment="Contact dunfanlu@meta.com"/>
|
||||
<!-- Enumerants to reserve for future use. To get a block, allocate
|
||||
multiples of 64 starting at the lowest available point in this
|
||||
block and add a corresponding <ids> tag immediately above. Make
|
||||
sure to fill in the vendor attribute, and preferably add a contact
|
||||
person/address in a comment attribute. -->
|
||||
<!-- Example new block: <ids type="enumerant" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
|
||||
<ids type="enumerant" start="6528" end="4294967295" comment="Enumerant range reservable for future use by vendors"/>
|
||||
<ids type="enumerant" start="6656" end="4294967295" comment="Enumerant range reservable for future use by vendors"/>
|
||||
<!-- End reservations of enumerants -->
|
||||
|
||||
|
||||
@@ -196,8 +210,8 @@
|
||||
|
||||
<!-- Reserved loop control bits -->
|
||||
<ids type="LoopControl" start="0" end="15" vendor="Khronos" comment="Reserved LoopControl bits, not available to vendors - see the SPIR-V Specification"/>
|
||||
<ids type="LoopControl" start="16" end="25" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||
<ids type="LoopControl" start="26" end="30" comment="Unreserved bits reservable for use by vendors"/>
|
||||
<ids type="LoopControl" start="16" end="27" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||
<ids type="LoopControl" start="28" end="30" comment="Unreserved bits reservable for use by vendors"/>
|
||||
<ids type="LoopControl" start="31" end="31" vendor="Khronos" comment="Reserved LoopControl bit, not available to vendors"/>
|
||||
|
||||
|
||||
@@ -237,7 +251,8 @@
|
||||
<!-- Reserved FP fast math mode bits -->
|
||||
<ids type="FPFastMathMode" start="0" end="15" vendor="Khronos" comment="Reserved FPFastMathMode bits, not available to vendors - see the SPIR-V Specification"/>
|
||||
<ids type="FPFastMathMode" start="16" end="17" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||
<ids type="FPFastMathMode" start="18" end="31" comment="Unreserved bits reservable for use by vendors"/>
|
||||
<ids type="FPFastMathMode" start="18" end="18" vendor="khronos" comment="Reserved FPFastMathMode bit, not available to vendors - see SPV_KHR_float_controls2"/>
|
||||
<ids type="FPFastMathMode" start="19" end="31" comment="Unreserved bits reservable for use by vendors"/>
|
||||
|
||||
|
||||
<!-- SECTION: SPIR-V Memory Operand Bit Reservations -->
|
||||
@@ -256,8 +271,8 @@
|
||||
|
||||
<!-- Reserved memory operand bits -->
|
||||
<ids type="MemoryOperand" start="0" end="15" vendor="Khronos" comment="Reserved MemoryOperand bits, not available to vendors - see the SPIR-V Specification"/>
|
||||
<ids type="MemoryOperand" start="16" end="17" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||
<ids type="MemoryOperand" start="18" end="30" comment="Unreserved bits reservable for use by vendors"/>
|
||||
<ids type="MemoryOperand" start="16" end="18" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||
<ids type="MemoryOperand" start="19" end="30" comment="Unreserved bits reservable for use by vendors"/>
|
||||
<ids type="MemoryOperand" start="31" end="31" vendor="Khronos" comment="Reserved MemoryOperand bit, not available to vendors"/>
|
||||
|
||||
<!-- SECTION: SPIR-V Image Operand Bit Reservations -->
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2020 The Khronos Group Inc.
|
||||
// Copyright (c) 2020-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and/or associated documentation files (the
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2020 The Khronos Group Inc.
|
||||
// Copyright (c) 2020-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and/or associated documentation files (the
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2020 The Khronos Group Inc.
|
||||
// Copyright (c) 2020-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and/or associated documentation files (the
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2020 The Khronos Group Inc.
|
||||
// Copyright (c) 2020-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and/or associated documentation files (the
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2017 The Khronos Group Inc.
|
||||
// Copyright (c) 2017-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and/or associated documentation files (the "Materials"),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
** Copyright (c) 2014-2016 The Khronos Group Inc.
|
||||
** Copyright (c) 2014-2024 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
** of this software and/or associated documentation files (the "Materials"),
|
||||
|
||||
+15
-2
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2020 The Khronos Group Inc.
|
||||
// Copyright (c) 2020-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and/or associated documentation files (the
|
||||
@@ -33,7 +33,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
enum {
|
||||
NonSemanticClspvReflectionRevision = 4,
|
||||
NonSemanticClspvReflectionRevision = 6,
|
||||
NonSemanticClspvReflectionRevision_BitWidthPadding = 0x7fffffff
|
||||
};
|
||||
|
||||
@@ -73,10 +73,23 @@ enum NonSemanticClspvReflectionInstructions {
|
||||
NonSemanticClspvReflectionImageArgumentInfoChannelDataTypeUniform = 33,
|
||||
NonSemanticClspvReflectionArgumentStorageTexelBuffer = 34,
|
||||
NonSemanticClspvReflectionArgumentUniformTexelBuffer = 35,
|
||||
NonSemanticClspvReflectionConstantDataPointerPushConstant = 36,
|
||||
NonSemanticClspvReflectionProgramScopeVariablePointerPushConstant = 37,
|
||||
NonSemanticClspvReflectionPrintfInfo = 38,
|
||||
NonSemanticClspvReflectionPrintfBufferStorageBuffer = 39,
|
||||
NonSemanticClspvReflectionPrintfBufferPointerPushConstant = 40,
|
||||
NonSemanticClspvReflectionNormalizedSamplerMaskPushConstant = 41,
|
||||
NonSemanticClspvReflectionInstructionsMax = 0x7fffffff
|
||||
};
|
||||
|
||||
|
||||
enum NonSemanticClspvReflectionKernelPropertyFlags {
|
||||
NonSemanticClspvReflectionNone = 0x0,
|
||||
NonSemanticClspvReflectionMayUsePrintf = 0x1,
|
||||
NonSemanticClspvReflectionKernelPropertyFlagsMax = 0x7fffffff
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
// Copyright (c) 2020-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and/or associated documentation files (the
|
||||
// "Materials"), to deal in the Materials without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
// permit persons to whom the Materials are furnished to do so, subject to
|
||||
// the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Materials.
|
||||
//
|
||||
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||
// https://www.khronos.org/registry/
|
||||
//
|
||||
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
//
|
||||
|
||||
#ifndef SPIRV_UNIFIED1_NonSemanticDebugBreak_H_
|
||||
#define SPIRV_UNIFIED1_NonSemanticDebugBreak_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum {
|
||||
NonSemanticDebugBreakRevision = 1,
|
||||
NonSemanticDebugBreakRevision_BitWidthPadding = 0x7fffffff
|
||||
};
|
||||
|
||||
enum NonSemanticDebugBreakInstructions {
|
||||
NonSemanticDebugBreakDebugBreak = 1,
|
||||
NonSemanticDebugBreakInstructionsMax = 0x7fffffff
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // SPIRV_UNIFIED1_NonSemanticDebugBreak_H_
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2020 The Khronos Group Inc.
|
||||
// Copyright (c) 2020-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and/or associated documentation files (the
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2018 The Khronos Group Inc.
|
||||
// Copyright (c) 2018-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and/or associated documentation files (the "Materials"),
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
// Copyright (c) 2020-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and/or associated documentation files (the
|
||||
// "Materials"), to deal in the Materials without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
// permit persons to whom the Materials are furnished to do so, subject to
|
||||
// the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included
|
||||
// in all copies or substantial portions of the Materials.
|
||||
//
|
||||
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||
// https://www.khronos.org/registry/
|
||||
//
|
||||
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
//
|
||||
|
||||
#ifndef SPIRV_UNIFIED1_NonSemanticVkspReflection_H_
|
||||
#define SPIRV_UNIFIED1_NonSemanticVkspReflection_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum {
|
||||
NonSemanticVkspReflectionRevision = 1,
|
||||
NonSemanticVkspReflectionRevision_BitWidthPadding = 0x7fffffff
|
||||
};
|
||||
|
||||
enum NonSemanticVkspReflectionInstructions {
|
||||
NonSemanticVkspReflectionConfiguration = 1,
|
||||
NonSemanticVkspReflectionStartCounter = 2,
|
||||
NonSemanticVkspReflectionStopCounter = 3,
|
||||
NonSemanticVkspReflectionPushConstants = 4,
|
||||
NonSemanticVkspReflectionSpecializationMapEntry = 5,
|
||||
NonSemanticVkspReflectionDescriptorSetBuffer = 6,
|
||||
NonSemanticVkspReflectionDescriptorSetImage = 7,
|
||||
NonSemanticVkspReflectionDescriptorSetSampler = 8,
|
||||
NonSemanticVkspReflectionInstructionsMax = 0x7fffffff
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // SPIRV_UNIFIED1_NonSemanticVkspReflection_H_
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
** Copyright (c) 2015-2024 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
** of this software and/or associated documentation files (the "Materials"),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2018 The Khronos Group Inc.
|
||||
// Copyright (c) 2018-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and/or associated documentation files (the "Materials"),
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"copyright" : [
|
||||
"Copyright (c) 2017 The Khronos Group Inc.",
|
||||
"Copyright (c) 2017-2024 The Khronos Group Inc.",
|
||||
"",
|
||||
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
||||
"of this software and/or associated documentation files (the \"Materials\"),",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"copyright" : [
|
||||
"Copyright (c) 2014-2016 The Khronos Group Inc.",
|
||||
"Copyright (c) 2014-2024 The Khronos Group Inc.",
|
||||
"",
|
||||
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
||||
"of this software and/or associated documentation files (the \"Materials\"),",
|
||||
|
||||
Vendored
+76
-2
@@ -1,12 +1,15 @@
|
||||
{
|
||||
"revision" : 4,
|
||||
"revision" : 6,
|
||||
"instructions" : [
|
||||
{
|
||||
"opname" : "Kernel",
|
||||
"opcode" : 1,
|
||||
"operands" : [
|
||||
{ "kind" : "IdRef", "name" : "Kernel" },
|
||||
{ "kind" : "IdRef", "name" : "Name" }
|
||||
{ "kind" : "IdRef", "name" : "Name" },
|
||||
{ "kind" : "IdRef", "name" : "NumArguments", "quantifier" : "?" },
|
||||
{ "kind" : "IdRef", "name" : "Flags", "quantifier" : "?" },
|
||||
{ "kind" : "IdRef", "name" : "Attributes", "quantifier" : "?" }
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -347,6 +350,77 @@
|
||||
{ "kind" : "IdRef", "name" : "Binding" },
|
||||
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "ConstantDataPointerPushConstant",
|
||||
"opcode" : 36,
|
||||
"operands" : [
|
||||
{ "kind" : "IdRef", "name" : "Offset"},
|
||||
{ "kind" : "IdRef", "name" : "Size"},
|
||||
{ "kind" : "IdRef", "name" : "Data" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "ProgramScopeVariablePointerPushConstant",
|
||||
"opcode" : 37,
|
||||
"operands" : [
|
||||
{ "kind" : "IdRef", "name" : "Offset"},
|
||||
{ "kind" : "IdRef", "name" : "Size"},
|
||||
{ "kind" : "IdRef", "name" : "Data" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "PrintfInfo",
|
||||
"opcode" : 38,
|
||||
"operands" : [
|
||||
{ "kind" : "IdRef", "name" : "PrintfID" },
|
||||
{ "kind" : "IdRef", "name" : "FormatString" },
|
||||
{ "kind" : "IdRef", "quantifier" : "*", "name" : "ArgumentSizes"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "PrintfBufferStorageBuffer",
|
||||
"opcode" : 39,
|
||||
"operands" : [
|
||||
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||
{ "kind" : "IdRef", "name" : "Binding" },
|
||||
{ "kind" : "IdRef", "name" : "BufferSize"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "PrintfBufferPointerPushConstant",
|
||||
"opcode" : 40,
|
||||
"operands" : [
|
||||
{ "kind" : "IdRef", "name" : "Offset" },
|
||||
{ "kind" : "IdRef", "name" : "Size"},
|
||||
{ "kind" : "IdRef", "name" : "BufferSize"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "NormalizedSamplerMaskPushConstant",
|
||||
"opcode" : 41,
|
||||
"operands" : [
|
||||
{ "kind" : "IdRef", "name" : "Kernel" },
|
||||
{ "kind" : "IdRef", "name" : "Ordinal" },
|
||||
{ "kind" : "IdRef", "name" : "Offset" },
|
||||
{ "kind" : "IdRef", "name" : "Size" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"operand_kinds" : [
|
||||
{
|
||||
"category" : "BitEnum",
|
||||
"kind" : "KernelPropertyFlags",
|
||||
"enumerants" : [
|
||||
{
|
||||
"enumerant" : "None",
|
||||
"value" : "0x0"
|
||||
},
|
||||
{
|
||||
"enumerant" : "MayUsePrintf",
|
||||
"value" : "0x1"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"revision" : 1,
|
||||
"instructions" : [
|
||||
{
|
||||
"opname" : "DebugBreak",
|
||||
"opcode" : 1
|
||||
}
|
||||
]
|
||||
}
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"copyright" : [
|
||||
"Copyright (c) 2018 The Khronos Group Inc.",
|
||||
"Copyright (c) 2018-2024 The Khronos Group Inc.",
|
||||
"",
|
||||
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
||||
"of this software and/or associated documentation files (the \"Materials\"),",
|
||||
|
||||
Vendored
+135
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"revision" : 1,
|
||||
"instructions" : [
|
||||
{
|
||||
"opname" : "Configuration",
|
||||
"opcode" : 1,
|
||||
"operands" : [
|
||||
{"kind" : "LiteralString", "name" : "enabledExtensionNames" },
|
||||
{"kind" : "LiteralInteger", "name" : "specializationInfoDataSize" },
|
||||
{"kind" : "LiteralString", "name" : "specializationInfoData" },
|
||||
{"kind" : "LiteralString", "name" : "shaderName" },
|
||||
{"kind" : "LiteralString", "name" : "EntryPoint" },
|
||||
{"kind" : "LiteralInteger", "name" : "groupCountX" },
|
||||
{"kind" : "LiteralInteger", "name" : "groupCountY" },
|
||||
{"kind" : "LiteralInteger", "name" : "groupCountZ" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "StartCounter",
|
||||
"opcode" : 2,
|
||||
"operands" : [
|
||||
{"kind" : "LiteralString", "name" : "name" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "StopCounter",
|
||||
"opcode" : 3,
|
||||
"operands" : [
|
||||
{"kind" : "IdRef", "name" : "counter" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "PushConstants",
|
||||
"opcode" : 4,
|
||||
"operands" : [
|
||||
{ "kind" : "LiteralInteger", "name" : "offset" },
|
||||
{ "kind" : "LiteralInteger", "name" : "size" },
|
||||
{ "kind" : "LiteralString", "name" : "pValues" },
|
||||
{ "kind" : "LiteralInteger", "name" : "stageFlags" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "SpecializationMapEntry",
|
||||
"opcode" : 5,
|
||||
"operands" : [
|
||||
{"kind" : "LiteralInteger", "name" : "constantID" },
|
||||
{"kind" : "LiteralInteger", "name" : "offset" },
|
||||
{"kind" : "LiteralInteger", "name" : "size" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "DescriptorSetBuffer",
|
||||
"opcode" : 6,
|
||||
"operands" : [
|
||||
{ "kind" : "LiteralInteger", "name" : "ds" },
|
||||
{ "kind" : "LiteralInteger", "name" : "binding" },
|
||||
{ "kind" : "LiteralInteger", "name" : "type" },
|
||||
{ "kind" : "LiteralInteger", "name" : "flags" },
|
||||
{ "kind" : "LiteralInteger", "name" : "queueFamilyIndexCount" },
|
||||
{ "kind" : "LiteralInteger", "name" : "sharingMode" },
|
||||
{ "kind" : "LiteralInteger", "name" : "size" },
|
||||
{ "kind" : "LiteralInteger", "name" : "usage" },
|
||||
{ "kind" : "LiteralInteger", "name" : "range" },
|
||||
{ "kind" : "LiteralInteger", "name" : "offset" },
|
||||
{ "kind" : "LiteralInteger", "name" : "memorySize" },
|
||||
{ "kind" : "LiteralInteger", "name" : "memoryType" },
|
||||
{ "kind" : "LiteralInteger", "name" : "bindOffset" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "DescriptorSetImage",
|
||||
"opcode" : 7,
|
||||
"operands" : [
|
||||
{ "kind" : "LiteralInteger", "name" : "ds" },
|
||||
{ "kind" : "LiteralInteger", "name" : "binding" },
|
||||
{ "kind" : "LiteralInteger", "name" : "type" },
|
||||
{ "kind" : "LiteralInteger", "name" : "imageLayout"},
|
||||
{ "kind" : "LiteralInteger", "name" : "imageFlags"},
|
||||
{ "kind" : "LiteralInteger", "name" : "imageType"},
|
||||
{ "kind" : "LiteralInteger", "name" : "imageformat"},
|
||||
{ "kind" : "LiteralInteger", "name" : "width"},
|
||||
{ "kind" : "LiteralInteger", "name" : "height"},
|
||||
{ "kind" : "LiteralInteger", "name" : "depth"},
|
||||
{ "kind" : "LiteralInteger", "name" : "mipLevels"},
|
||||
{ "kind" : "LiteralInteger", "name" : "arrayLayers"},
|
||||
{ "kind" : "LiteralInteger", "name" : "samples"},
|
||||
{ "kind" : "LiteralInteger", "name" : "tiling"},
|
||||
{ "kind" : "LiteralInteger", "name" : "usage"},
|
||||
{ "kind" : "LiteralInteger", "name" : "sharingMode"},
|
||||
{ "kind" : "LiteralInteger", "name" : "queueFamilyIndexCount"},
|
||||
{ "kind" : "LiteralInteger", "name" : "initialLayout"},
|
||||
{ "kind" : "LiteralInteger", "name" : "aspectMask"},
|
||||
{ "kind" : "LiteralInteger", "name" : "baseMipLevel"},
|
||||
{ "kind" : "LiteralInteger", "name" : "levelCount"},
|
||||
{ "kind" : "LiteralInteger", "name" : "baseArrayLayer"},
|
||||
{ "kind" : "LiteralInteger", "name" : "layerCount"},
|
||||
{ "kind" : "LiteralInteger", "name" : "viewFlags"},
|
||||
{ "kind" : "LiteralInteger", "name" : "viewType"},
|
||||
{ "kind" : "LiteralInteger", "name" : "viewFormat"},
|
||||
{ "kind" : "LiteralInteger", "name" : "component_a"},
|
||||
{ "kind" : "LiteralInteger", "name" : "component_b"},
|
||||
{ "kind" : "LiteralInteger", "name" : "component_g"},
|
||||
{ "kind" : "LiteralInteger", "name" : "component_r"},
|
||||
{ "kind" : "LiteralInteger", "name" : "memorySize" },
|
||||
{ "kind" : "LiteralInteger", "name" : "memoryType" },
|
||||
{ "kind" : "LiteralInteger", "name" : "bindOffset"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"opname" : "DescriptorSetSampler",
|
||||
"opcode" : 8,
|
||||
"operands" : [
|
||||
{ "kind" : "LiteralInteger", "name" : "ds" },
|
||||
{ "kind" : "LiteralInteger", "name" : "binding" },
|
||||
{ "kind" : "LiteralInteger", "name" : "type" },
|
||||
{ "kind" : "LiteralInteger", "name" : "flags"},
|
||||
{ "kind" : "LiteralInteger", "name" : "magFilter"},
|
||||
{ "kind" : "LiteralInteger", "name" : "minFilter"},
|
||||
{ "kind" : "LiteralInteger", "name" : "mipmapMode"},
|
||||
{ "kind" : "LiteralInteger", "name" : "addressModeU"},
|
||||
{ "kind" : "LiteralInteger", "name" : "addressModeV"},
|
||||
{ "kind" : "LiteralInteger", "name" : "addressModeW"},
|
||||
{ "kind" : "LiteralFloat", "name" : "mipLodBias"},
|
||||
{ "kind" : "LiteralInteger", "name" : "anisotropyEnable"},
|
||||
{ "kind" : "LiteralFloat", "name" : "maxAnisotropy"},
|
||||
{ "kind" : "LiteralInteger", "name" : "compareEnable"},
|
||||
{ "kind" : "LiteralInteger", "name" : "compareOp"},
|
||||
{ "kind" : "LiteralFloat", "name" : "minLod"},
|
||||
{ "kind" : "LiteralFloat", "name" : "maxLod"},
|
||||
{ "kind" : "LiteralInteger", "name" : "borderColor"},
|
||||
{ "kind" : "LiteralInteger", "name" : "unnormalizedCoordinates"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"copyright" : [
|
||||
"Copyright (c) 2018 The Khronos Group Inc.",
|
||||
"Copyright (c) 2018-2024 The Khronos Group Inc.",
|
||||
"",
|
||||
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
||||
"of this software and/or associated documentation files (the \"Materials\"),",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"copyright" : [
|
||||
"Copyright (c) 2014-2016 The Khronos Group Inc.",
|
||||
"Copyright (c) 2014-2024 The Khronos Group Inc.",
|
||||
"",
|
||||
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
||||
"of this software and/or associated documentation files (the \"Materials\"),",
|
||||
|
||||
+209
-2
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||
// Copyright (c) 2014-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and/or associated documentation files (the "Materials"),
|
||||
@@ -66,6 +66,11 @@ namespace Spv
|
||||
HLSL = 5,
|
||||
CPP_for_OpenCL = 6,
|
||||
SYCL = 7,
|
||||
HERO_C = 8,
|
||||
NZSL = 9,
|
||||
WGSL = 10,
|
||||
Slang = 11,
|
||||
Zig = 12,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum ExecutionModel
|
||||
@@ -153,6 +158,9 @@ namespace Spv
|
||||
SubgroupsPerWorkgroupId = 37,
|
||||
LocalSizeId = 38,
|
||||
LocalSizeHintId = 39,
|
||||
NonCoherentColorAttachmentReadEXT = 4169,
|
||||
NonCoherentDepthAttachmentReadEXT = 4170,
|
||||
NonCoherentStencilAttachmentReadEXT = 4171,
|
||||
SubgroupUniformControlFlowKHR = 4421,
|
||||
PostDepthCoverage = 4446,
|
||||
DenormPreserve = 4459,
|
||||
@@ -162,12 +170,19 @@ namespace Spv
|
||||
RoundingModeRTZ = 4463,
|
||||
EarlyAndLateFragmentTestsAMD = 5017,
|
||||
StencilRefReplacingEXT = 5027,
|
||||
CoalescingAMDX = 5069,
|
||||
MaxNodeRecursionAMDX = 5071,
|
||||
StaticNumWorkgroupsAMDX = 5072,
|
||||
ShaderIndexAMDX = 5073,
|
||||
MaxNumWorkgroupsAMDX = 5077,
|
||||
StencilRefUnchangedFrontAMD = 5079,
|
||||
StencilRefGreaterFrontAMD = 5080,
|
||||
StencilRefLessFrontAMD = 5081,
|
||||
StencilRefUnchangedBackAMD = 5082,
|
||||
StencilRefGreaterBackAMD = 5083,
|
||||
StencilRefLessBackAMD = 5084,
|
||||
QuadDerivativesKHR = 5088,
|
||||
RequireFullQuadsKHR = 5089,
|
||||
OutputLinesEXT = 5269,
|
||||
OutputLinesNV = 5269,
|
||||
OutputPrimitivesEXT = 5270,
|
||||
@@ -192,8 +207,14 @@ namespace Spv
|
||||
NoGlobalOffsetINTEL = 5895,
|
||||
NumSIMDWorkitemsINTEL = 5896,
|
||||
SchedulerTargetFmaxMhzINTEL = 5903,
|
||||
MaximallyReconvergesKHR = 6023,
|
||||
FPFastMathDefault = 6028,
|
||||
StreamingInterfaceINTEL = 6154,
|
||||
RegisterMapInterfaceINTEL = 6160,
|
||||
NamedBarrierCountINTEL = 6417,
|
||||
MaximumRegistersINTEL = 6461,
|
||||
MaximumRegistersIdINTEL = 6462,
|
||||
NamedMaximumRegistersINTEL = 6463,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum StorageClass
|
||||
@@ -211,6 +232,9 @@ namespace Spv
|
||||
AtomicCounter = 10,
|
||||
Image = 11,
|
||||
StorageBuffer = 12,
|
||||
TileImageEXT = 4172,
|
||||
NodePayloadAMDX = 5068,
|
||||
NodeOutputPayloadAMDX = 5076,
|
||||
CallableDataKHR = 5328,
|
||||
CallableDataNV = 5328,
|
||||
IncomingCallableDataKHR = 5329,
|
||||
@@ -241,6 +265,7 @@ namespace Spv
|
||||
Rect = 4,
|
||||
Buffer = 5,
|
||||
SubpassData = 6,
|
||||
TileImageDataEXT = 4173,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum SamplerAddressingMode
|
||||
@@ -347,6 +372,8 @@ namespace Spv
|
||||
Float = 14,
|
||||
UnormInt24 = 15,
|
||||
UnormInt101010_2 = 16,
|
||||
UnsignedIntRaw10EXT = 19,
|
||||
UnsignedIntRaw12EXT = 20,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum ImageOperandsShift
|
||||
@@ -405,8 +432,11 @@ namespace Spv
|
||||
NSZ = 2,
|
||||
AllowRecip = 3,
|
||||
Fast = 4,
|
||||
AllowContract = 16,
|
||||
AllowContractFastINTEL = 16,
|
||||
AllowReassoc = 17,
|
||||
AllowReassocINTEL = 17,
|
||||
AllowTransform = 18,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum FPFastMathModeMask
|
||||
@@ -417,8 +447,11 @@ namespace Spv
|
||||
NSZ = 0x00000004,
|
||||
AllowRecip = 0x00000008,
|
||||
Fast = 0x00000010,
|
||||
AllowContract = 0x00010000,
|
||||
AllowContractFastINTEL = 0x00010000,
|
||||
AllowReassoc = 0x00020000,
|
||||
AllowReassocINTEL = 0x00020000,
|
||||
AllowTransform = 0x00040000,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum FPRoundingMode
|
||||
@@ -507,7 +540,14 @@ namespace Spv
|
||||
MaxByteOffsetId = 47,
|
||||
NoSignedWrap = 4469,
|
||||
NoUnsignedWrap = 4470,
|
||||
WeightTextureQCOM = 4487,
|
||||
BlockMatchTextureQCOM = 4488,
|
||||
BlockMatchSamplerQCOM = 4499,
|
||||
ExplicitInterpAMD = 4999,
|
||||
NodeSharesPayloadLimitsWithAMDX = 5019,
|
||||
NodeMaxPayloadsAMDX = 5020,
|
||||
TrackFinishWritingAMDX = 5078,
|
||||
PayloadNodeNameAMDX = 5091,
|
||||
OverrideCoverageNV = 5248,
|
||||
PassthroughNV = 5250,
|
||||
ViewportRelativeNV = 5252,
|
||||
@@ -557,6 +597,9 @@ namespace Spv
|
||||
MergeINTEL = 5834,
|
||||
BankBitsINTEL = 5835,
|
||||
ForcePow2DepthINTEL = 5836,
|
||||
StridesizeINTEL = 5883,
|
||||
WordsizeINTEL = 5884,
|
||||
TrueDualPortINTEL = 5885,
|
||||
BurstCoalesceINTEL = 5899,
|
||||
CacheSizeINTEL = 5900,
|
||||
DontStaticallyCoalesceINTEL = 5901,
|
||||
@@ -575,6 +618,24 @@ namespace Spv
|
||||
SingleElementVectorINTEL = 6085,
|
||||
VectorComputeCallableFunctionINTEL = 6087,
|
||||
MediaBlockIOINTEL = 6140,
|
||||
StallFreeINTEL = 6151,
|
||||
FPMaxErrorDecorationINTEL = 6170,
|
||||
LatencyControlLabelINTEL = 6172,
|
||||
LatencyControlConstraintINTEL = 6173,
|
||||
ConduitKernelArgumentINTEL = 6175,
|
||||
RegisterMapKernelArgumentINTEL = 6176,
|
||||
MMHostInterfaceAddressWidthINTEL = 6177,
|
||||
MMHostInterfaceDataWidthINTEL = 6178,
|
||||
MMHostInterfaceLatencyINTEL = 6179,
|
||||
MMHostInterfaceReadWriteModeINTEL = 6180,
|
||||
MMHostInterfaceMaxBurstINTEL = 6181,
|
||||
MMHostInterfaceWaitRequestINTEL = 6182,
|
||||
StableKernelArgumentINTEL = 6183,
|
||||
HostAccessINTEL = 6188,
|
||||
InitModeINTEL = 6190,
|
||||
ImplementInRegisterMapINTEL = 6191,
|
||||
CacheControlLoadINTEL = 6442,
|
||||
CacheControlStoreINTEL = 6443,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum BuiltIn
|
||||
@@ -650,6 +711,8 @@ namespace Spv
|
||||
BaryCoordSmoothSampleAMD = 4997,
|
||||
BaryCoordPullModelAMD = 4998,
|
||||
FragStencilRefEXT = 5014,
|
||||
CoalescedInputCountAMDX = 5021,
|
||||
ShaderIndexAMDX = 5073,
|
||||
ViewportMaskNV = 5253,
|
||||
SecondaryPositionNV = 5257,
|
||||
SecondaryViewportMaskNV = 5258,
|
||||
@@ -702,6 +765,9 @@ namespace Spv
|
||||
HitKindKHR = 5333,
|
||||
HitKindNV = 5333,
|
||||
CurrentRayTimeNV = 5334,
|
||||
HitTriangleVertexPositionsKHR = 5335,
|
||||
HitMicroTriangleVertexPositionsNV = 5337,
|
||||
HitMicroTriangleVertexBarycentricsNV = 5344,
|
||||
IncomingRayFlagsKHR = 5351,
|
||||
IncomingRayFlagsNV = 5351,
|
||||
RayGeometryIndexKHR = 5352,
|
||||
@@ -709,6 +775,8 @@ namespace Spv
|
||||
SMCountNV = 5375,
|
||||
WarpIDNV = 5376,
|
||||
SMIDNV = 5377,
|
||||
HitKindFrontFacingMicroTriangleNV = 5405,
|
||||
HitKindBackFacingMicroTriangleNV = 5406,
|
||||
CullMaskKHR = 6021,
|
||||
}
|
||||
|
||||
@@ -979,6 +1047,9 @@ namespace Spv
|
||||
ShaderViewportIndex = 70,
|
||||
UniformDecoration = 71,
|
||||
CoreBuiltinsARM = 4165,
|
||||
TileImageColorReadAccessEXT = 4166,
|
||||
TileImageDepthReadAccessEXT = 4167,
|
||||
TileImageStencilReadAccessEXT = 4168,
|
||||
FragmentShadingRateKHR = 4422,
|
||||
SubgroupBallotKHR = 4423,
|
||||
DrawParameters = 4427,
|
||||
@@ -1010,6 +1081,10 @@ namespace Spv
|
||||
RayQueryKHR = 4472,
|
||||
RayTraversalPrimitiveCullingKHR = 4478,
|
||||
RayTracingKHR = 4479,
|
||||
TextureSampleWeightedQCOM = 4484,
|
||||
TextureBoxFilterQCOM = 4485,
|
||||
TextureBlockMatchQCOM = 4486,
|
||||
TextureBlockMatch2QCOM = 4498,
|
||||
Float16ImageAMD = 5008,
|
||||
ImageGatherBiasLodAMD = 5009,
|
||||
FragmentMaskAMD = 5010,
|
||||
@@ -1017,6 +1092,8 @@ namespace Spv
|
||||
ImageReadWriteLodAMD = 5015,
|
||||
Int64ImageEXT = 5016,
|
||||
ShaderClockKHR = 5055,
|
||||
ShaderEnqueueAMDX = 5067,
|
||||
QuadControlKHR = 5087,
|
||||
SampleMaskOverrideCoverageNV = 5249,
|
||||
GeometryShaderPassthroughNV = 5251,
|
||||
ShaderViewportIndexLayerEXT = 5254,
|
||||
@@ -1058,6 +1135,7 @@ namespace Spv
|
||||
UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
||||
StorageTexelBufferArrayNonUniformIndexing = 5312,
|
||||
StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
||||
RayTracingPositionFetchKHR = 5336,
|
||||
RayTracingNV = 5340,
|
||||
RayTracingMotionBlurNV = 5341,
|
||||
VulkanMemoryModel = 5345,
|
||||
@@ -1075,9 +1153,14 @@ namespace Spv
|
||||
FragmentShaderPixelInterlockEXT = 5378,
|
||||
DemoteToHelperInvocation = 5379,
|
||||
DemoteToHelperInvocationEXT = 5379,
|
||||
DisplacementMicromapNV = 5380,
|
||||
RayTracingOpacityMicromapEXT = 5381,
|
||||
ShaderInvocationReorderNV = 5383,
|
||||
BindlessTextureNV = 5390,
|
||||
RayQueryPositionFetchKHR = 5391,
|
||||
AtomicFloat16VectorNV = 5404,
|
||||
RayTracingDisplacementMicromapNV = 5409,
|
||||
RawAccessChainsNV = 5414,
|
||||
SubgroupShuffleINTEL = 5568,
|
||||
SubgroupBufferBlockIOINTEL = 5569,
|
||||
SubgroupImageBlockIOINTEL = 5570,
|
||||
@@ -1129,16 +1212,29 @@ namespace Spv
|
||||
DotProduct = 6019,
|
||||
DotProductKHR = 6019,
|
||||
RayCullMaskKHR = 6020,
|
||||
CooperativeMatrixKHR = 6022,
|
||||
BitInstructions = 6025,
|
||||
GroupNonUniformRotateKHR = 6026,
|
||||
FloatControls2 = 6029,
|
||||
AtomicFloat32AddEXT = 6033,
|
||||
AtomicFloat64AddEXT = 6034,
|
||||
LongConstantCompositeINTEL = 6089,
|
||||
LongCompositesINTEL = 6089,
|
||||
OptNoneINTEL = 6094,
|
||||
AtomicFloat16AddEXT = 6095,
|
||||
DebugInfoModuleINTEL = 6114,
|
||||
BFloat16ConversionINTEL = 6115,
|
||||
SplitBarrierINTEL = 6141,
|
||||
FPGAClusterAttributesV2INTEL = 6150,
|
||||
FPGAKernelAttributesv2INTEL = 6161,
|
||||
FPMaxErrorINTEL = 6169,
|
||||
FPGALatencyControlINTEL = 6171,
|
||||
FPGAArgumentInterfacesINTEL = 6174,
|
||||
GlobalVariableHostAccessINTEL = 6187,
|
||||
GlobalVariableFPGADecorationsINTEL = 6189,
|
||||
GroupUniformArithmeticKHR = 6400,
|
||||
MaskedGatherScatterINTEL = 6427,
|
||||
CacheControlsINTEL = 6441,
|
||||
RegisterLimitsINTEL = 6460,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum RayFlagsShift
|
||||
@@ -1246,6 +1342,87 @@ namespace Spv
|
||||
PackedVectorFormat4x8BitKHR = 0,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum CooperativeMatrixOperandsShift
|
||||
{
|
||||
MatrixASignedComponentsKHR = 0,
|
||||
MatrixBSignedComponentsKHR = 1,
|
||||
MatrixCSignedComponentsKHR = 2,
|
||||
MatrixResultSignedComponentsKHR = 3,
|
||||
SaturatingAccumulationKHR = 4,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum CooperativeMatrixOperandsMask
|
||||
{
|
||||
MaskNone = 0,
|
||||
MatrixASignedComponentsKHR = 0x00000001,
|
||||
MatrixBSignedComponentsKHR = 0x00000002,
|
||||
MatrixCSignedComponentsKHR = 0x00000004,
|
||||
MatrixResultSignedComponentsKHR = 0x00000008,
|
||||
SaturatingAccumulationKHR = 0x00000010,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum CooperativeMatrixLayout
|
||||
{
|
||||
RowMajorKHR = 0,
|
||||
ColumnMajorKHR = 1,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum CooperativeMatrixUse
|
||||
{
|
||||
MatrixAKHR = 0,
|
||||
MatrixBKHR = 1,
|
||||
MatrixAccumulatorKHR = 2,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum InitializationModeQualifier
|
||||
{
|
||||
InitOnDeviceReprogramINTEL = 0,
|
||||
InitOnDeviceResetINTEL = 1,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum HostAccessQualifier
|
||||
{
|
||||
NoneINTEL = 0,
|
||||
ReadINTEL = 1,
|
||||
WriteINTEL = 2,
|
||||
ReadWriteINTEL = 3,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum LoadCacheControl
|
||||
{
|
||||
UncachedINTEL = 0,
|
||||
CachedINTEL = 1,
|
||||
StreamingINTEL = 2,
|
||||
InvalidateAfterReadINTEL = 3,
|
||||
ConstCachedINTEL = 4,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum StoreCacheControl
|
||||
{
|
||||
UncachedINTEL = 0,
|
||||
WriteThroughINTEL = 1,
|
||||
WriteBackINTEL = 2,
|
||||
StreamingINTEL = 3,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum NamedMaximumNumberOfRegisters
|
||||
{
|
||||
AutoINTEL = 0,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum RawAccessChainOperandsShift
|
||||
{
|
||||
RobustnessPerComponentNV = 0,
|
||||
RobustnessPerElementNV = 1,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum RawAccessChainOperandsMask
|
||||
{
|
||||
MaskNone = 0,
|
||||
RobustnessPerComponentNV = 0x00000001,
|
||||
RobustnessPerElementNV = 0x00000002,
|
||||
}
|
||||
|
||||
[AllowDuplicates, CRepr] public enum Op
|
||||
{
|
||||
OpNop = 0,
|
||||
@@ -1592,6 +1769,9 @@ namespace Spv
|
||||
OpPtrEqual = 401,
|
||||
OpPtrNotEqual = 402,
|
||||
OpPtrDiff = 403,
|
||||
OpColorAttachmentReadEXT = 4160,
|
||||
OpDepthAttachmentReadEXT = 4161,
|
||||
OpStencilAttachmentReadEXT = 4162,
|
||||
OpTerminateInvocation = 4416,
|
||||
OpSubgroupBallotKHR = 4421,
|
||||
OpSubgroupFirstInvocationKHR = 4422,
|
||||
@@ -1617,6 +1797,11 @@ namespace Spv
|
||||
OpUDotAccSatKHR = 4454,
|
||||
OpSUDotAccSat = 4455,
|
||||
OpSUDotAccSatKHR = 4455,
|
||||
OpTypeCooperativeMatrixKHR = 4456,
|
||||
OpCooperativeMatrixLoadKHR = 4457,
|
||||
OpCooperativeMatrixStoreKHR = 4458,
|
||||
OpCooperativeMatrixMulAddKHR = 4459,
|
||||
OpCooperativeMatrixLengthKHR = 4460,
|
||||
OpTypeRayQueryKHR = 4472,
|
||||
OpRayQueryInitializeKHR = 4473,
|
||||
OpRayQueryTerminateKHR = 4474,
|
||||
@@ -1624,6 +1809,14 @@ namespace Spv
|
||||
OpRayQueryConfirmIntersectionKHR = 4476,
|
||||
OpRayQueryProceedKHR = 4477,
|
||||
OpRayQueryGetIntersectionTypeKHR = 4479,
|
||||
OpImageSampleWeightedQCOM = 4480,
|
||||
OpImageBoxFilterQCOM = 4481,
|
||||
OpImageBlockMatchSSDQCOM = 4482,
|
||||
OpImageBlockMatchSADQCOM = 4483,
|
||||
OpImageBlockMatchWindowSSDQCOM = 4500,
|
||||
OpImageBlockMatchWindowSADQCOM = 4501,
|
||||
OpImageBlockMatchGatherSSDQCOM = 4502,
|
||||
OpImageBlockMatchGatherSADQCOM = 4503,
|
||||
OpGroupIAddNonUniformAMD = 5000,
|
||||
OpGroupFAddNonUniformAMD = 5001,
|
||||
OpGroupFMinNonUniformAMD = 5002,
|
||||
@@ -1635,6 +1828,11 @@ namespace Spv
|
||||
OpFragmentMaskFetchAMD = 5011,
|
||||
OpFragmentFetchAMD = 5012,
|
||||
OpReadClockKHR = 5056,
|
||||
OpFinalizeNodePayloadsAMDX = 5075,
|
||||
OpFinishWritingNodePayloadAMDX = 5078,
|
||||
OpInitializeNodePayloadsAMDX = 5090,
|
||||
OpGroupNonUniformQuadAllKHR = 5110,
|
||||
OpGroupNonUniformQuadAnyKHR = 5111,
|
||||
OpHitObjectRecordHitMotionNV = 5249,
|
||||
OpHitObjectRecordHitWithIndexMotionNV = 5250,
|
||||
OpHitObjectRecordMissMotionNV = 5251,
|
||||
@@ -1673,6 +1871,8 @@ namespace Spv
|
||||
OpSetMeshOutputsEXT = 5295,
|
||||
OpGroupNonUniformPartitionNV = 5296,
|
||||
OpWritePackedPrimitiveIndices4x8NV = 5299,
|
||||
OpFetchMicroTriangleVertexPositionNV = 5300,
|
||||
OpFetchMicroTriangleVertexBarycentricNV = 5301,
|
||||
OpReportIntersectionKHR = 5334,
|
||||
OpReportIntersectionNV = 5334,
|
||||
OpIgnoreIntersectionNV = 5335,
|
||||
@@ -1680,6 +1880,7 @@ namespace Spv
|
||||
OpTraceNV = 5337,
|
||||
OpTraceMotionNV = 5338,
|
||||
OpTraceRayMotionNV = 5339,
|
||||
OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
|
||||
OpTypeAccelerationStructureKHR = 5341,
|
||||
OpTypeAccelerationStructureNV = 5341,
|
||||
OpExecuteCallableNV = 5344,
|
||||
@@ -1700,6 +1901,7 @@ namespace Spv
|
||||
OpConvertUToSampledImageNV = 5395,
|
||||
OpConvertSampledImageToUNV = 5396,
|
||||
OpSamplerImageAddressingModeNV = 5397,
|
||||
OpRawAccessChainNV = 5398,
|
||||
OpSubgroupShuffleINTEL = 5571,
|
||||
OpSubgroupShuffleDownINTEL = 5572,
|
||||
OpSubgroupShuffleUpINTEL = 5573,
|
||||
@@ -1941,6 +2143,9 @@ namespace Spv
|
||||
OpTypeStructContinuedINTEL = 6090,
|
||||
OpConstantCompositeContinuedINTEL = 6091,
|
||||
OpSpecConstantCompositeContinuedINTEL = 6092,
|
||||
OpCompositeConstructContinuedINTEL = 6096,
|
||||
OpConvertFToBF16INTEL = 6116,
|
||||
OpConvertBF16ToFINTEL = 6117,
|
||||
OpControlBarrierArriveINTEL = 6142,
|
||||
OpControlBarrierWaitINTEL = 6143,
|
||||
OpGroupIMulKHR = 6401,
|
||||
@@ -1951,6 +2156,8 @@ namespace Spv
|
||||
OpGroupLogicalAndKHR = 6406,
|
||||
OpGroupLogicalOrKHR = 6407,
|
||||
OpGroupLogicalXorKHR = 6408,
|
||||
OpMaskedGatherINTEL = 6428,
|
||||
OpMaskedScatterINTEL = 6429,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2607
-685
File diff suppressed because it is too large
Load Diff
+209
-2
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||
// Copyright (c) 2014-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and/or associated documentation files (the "Materials"),
|
||||
@@ -65,6 +65,11 @@ namespace Spv
|
||||
HLSL = 5,
|
||||
CPP_for_OpenCL = 6,
|
||||
SYCL = 7,
|
||||
HERO_C = 8,
|
||||
NZSL = 9,
|
||||
WGSL = 10,
|
||||
Slang = 11,
|
||||
Zig = 12,
|
||||
}
|
||||
|
||||
public enum ExecutionModel
|
||||
@@ -152,6 +157,9 @@ namespace Spv
|
||||
SubgroupsPerWorkgroupId = 37,
|
||||
LocalSizeId = 38,
|
||||
LocalSizeHintId = 39,
|
||||
NonCoherentColorAttachmentReadEXT = 4169,
|
||||
NonCoherentDepthAttachmentReadEXT = 4170,
|
||||
NonCoherentStencilAttachmentReadEXT = 4171,
|
||||
SubgroupUniformControlFlowKHR = 4421,
|
||||
PostDepthCoverage = 4446,
|
||||
DenormPreserve = 4459,
|
||||
@@ -161,12 +169,19 @@ namespace Spv
|
||||
RoundingModeRTZ = 4463,
|
||||
EarlyAndLateFragmentTestsAMD = 5017,
|
||||
StencilRefReplacingEXT = 5027,
|
||||
CoalescingAMDX = 5069,
|
||||
MaxNodeRecursionAMDX = 5071,
|
||||
StaticNumWorkgroupsAMDX = 5072,
|
||||
ShaderIndexAMDX = 5073,
|
||||
MaxNumWorkgroupsAMDX = 5077,
|
||||
StencilRefUnchangedFrontAMD = 5079,
|
||||
StencilRefGreaterFrontAMD = 5080,
|
||||
StencilRefLessFrontAMD = 5081,
|
||||
StencilRefUnchangedBackAMD = 5082,
|
||||
StencilRefGreaterBackAMD = 5083,
|
||||
StencilRefLessBackAMD = 5084,
|
||||
QuadDerivativesKHR = 5088,
|
||||
RequireFullQuadsKHR = 5089,
|
||||
OutputLinesEXT = 5269,
|
||||
OutputLinesNV = 5269,
|
||||
OutputPrimitivesEXT = 5270,
|
||||
@@ -191,8 +206,14 @@ namespace Spv
|
||||
NoGlobalOffsetINTEL = 5895,
|
||||
NumSIMDWorkitemsINTEL = 5896,
|
||||
SchedulerTargetFmaxMhzINTEL = 5903,
|
||||
MaximallyReconvergesKHR = 6023,
|
||||
FPFastMathDefault = 6028,
|
||||
StreamingInterfaceINTEL = 6154,
|
||||
RegisterMapInterfaceINTEL = 6160,
|
||||
NamedBarrierCountINTEL = 6417,
|
||||
MaximumRegistersINTEL = 6461,
|
||||
MaximumRegistersIdINTEL = 6462,
|
||||
NamedMaximumRegistersINTEL = 6463,
|
||||
}
|
||||
|
||||
public enum StorageClass
|
||||
@@ -210,6 +231,9 @@ namespace Spv
|
||||
AtomicCounter = 10,
|
||||
Image = 11,
|
||||
StorageBuffer = 12,
|
||||
TileImageEXT = 4172,
|
||||
NodePayloadAMDX = 5068,
|
||||
NodeOutputPayloadAMDX = 5076,
|
||||
CallableDataKHR = 5328,
|
||||
CallableDataNV = 5328,
|
||||
IncomingCallableDataKHR = 5329,
|
||||
@@ -240,6 +264,7 @@ namespace Spv
|
||||
Rect = 4,
|
||||
Buffer = 5,
|
||||
SubpassData = 6,
|
||||
TileImageDataEXT = 4173,
|
||||
}
|
||||
|
||||
public enum SamplerAddressingMode
|
||||
@@ -346,6 +371,8 @@ namespace Spv
|
||||
Float = 14,
|
||||
UnormInt24 = 15,
|
||||
UnormInt101010_2 = 16,
|
||||
UnsignedIntRaw10EXT = 19,
|
||||
UnsignedIntRaw12EXT = 20,
|
||||
}
|
||||
|
||||
public enum ImageOperandsShift
|
||||
@@ -404,8 +431,11 @@ namespace Spv
|
||||
NSZ = 2,
|
||||
AllowRecip = 3,
|
||||
Fast = 4,
|
||||
AllowContract = 16,
|
||||
AllowContractFastINTEL = 16,
|
||||
AllowReassoc = 17,
|
||||
AllowReassocINTEL = 17,
|
||||
AllowTransform = 18,
|
||||
}
|
||||
|
||||
public enum FPFastMathModeMask
|
||||
@@ -416,8 +446,11 @@ namespace Spv
|
||||
NSZ = 0x00000004,
|
||||
AllowRecip = 0x00000008,
|
||||
Fast = 0x00000010,
|
||||
AllowContract = 0x00010000,
|
||||
AllowContractFastINTEL = 0x00010000,
|
||||
AllowReassoc = 0x00020000,
|
||||
AllowReassocINTEL = 0x00020000,
|
||||
AllowTransform = 0x00040000,
|
||||
}
|
||||
|
||||
public enum FPRoundingMode
|
||||
@@ -506,7 +539,14 @@ namespace Spv
|
||||
MaxByteOffsetId = 47,
|
||||
NoSignedWrap = 4469,
|
||||
NoUnsignedWrap = 4470,
|
||||
WeightTextureQCOM = 4487,
|
||||
BlockMatchTextureQCOM = 4488,
|
||||
BlockMatchSamplerQCOM = 4499,
|
||||
ExplicitInterpAMD = 4999,
|
||||
NodeSharesPayloadLimitsWithAMDX = 5019,
|
||||
NodeMaxPayloadsAMDX = 5020,
|
||||
TrackFinishWritingAMDX = 5078,
|
||||
PayloadNodeNameAMDX = 5091,
|
||||
OverrideCoverageNV = 5248,
|
||||
PassthroughNV = 5250,
|
||||
ViewportRelativeNV = 5252,
|
||||
@@ -556,6 +596,9 @@ namespace Spv
|
||||
MergeINTEL = 5834,
|
||||
BankBitsINTEL = 5835,
|
||||
ForcePow2DepthINTEL = 5836,
|
||||
StridesizeINTEL = 5883,
|
||||
WordsizeINTEL = 5884,
|
||||
TrueDualPortINTEL = 5885,
|
||||
BurstCoalesceINTEL = 5899,
|
||||
CacheSizeINTEL = 5900,
|
||||
DontStaticallyCoalesceINTEL = 5901,
|
||||
@@ -574,6 +617,24 @@ namespace Spv
|
||||
SingleElementVectorINTEL = 6085,
|
||||
VectorComputeCallableFunctionINTEL = 6087,
|
||||
MediaBlockIOINTEL = 6140,
|
||||
StallFreeINTEL = 6151,
|
||||
FPMaxErrorDecorationINTEL = 6170,
|
||||
LatencyControlLabelINTEL = 6172,
|
||||
LatencyControlConstraintINTEL = 6173,
|
||||
ConduitKernelArgumentINTEL = 6175,
|
||||
RegisterMapKernelArgumentINTEL = 6176,
|
||||
MMHostInterfaceAddressWidthINTEL = 6177,
|
||||
MMHostInterfaceDataWidthINTEL = 6178,
|
||||
MMHostInterfaceLatencyINTEL = 6179,
|
||||
MMHostInterfaceReadWriteModeINTEL = 6180,
|
||||
MMHostInterfaceMaxBurstINTEL = 6181,
|
||||
MMHostInterfaceWaitRequestINTEL = 6182,
|
||||
StableKernelArgumentINTEL = 6183,
|
||||
HostAccessINTEL = 6188,
|
||||
InitModeINTEL = 6190,
|
||||
ImplementInRegisterMapINTEL = 6191,
|
||||
CacheControlLoadINTEL = 6442,
|
||||
CacheControlStoreINTEL = 6443,
|
||||
}
|
||||
|
||||
public enum BuiltIn
|
||||
@@ -649,6 +710,8 @@ namespace Spv
|
||||
BaryCoordSmoothSampleAMD = 4997,
|
||||
BaryCoordPullModelAMD = 4998,
|
||||
FragStencilRefEXT = 5014,
|
||||
CoalescedInputCountAMDX = 5021,
|
||||
ShaderIndexAMDX = 5073,
|
||||
ViewportMaskNV = 5253,
|
||||
SecondaryPositionNV = 5257,
|
||||
SecondaryViewportMaskNV = 5258,
|
||||
@@ -701,6 +764,9 @@ namespace Spv
|
||||
HitKindKHR = 5333,
|
||||
HitKindNV = 5333,
|
||||
CurrentRayTimeNV = 5334,
|
||||
HitTriangleVertexPositionsKHR = 5335,
|
||||
HitMicroTriangleVertexPositionsNV = 5337,
|
||||
HitMicroTriangleVertexBarycentricsNV = 5344,
|
||||
IncomingRayFlagsKHR = 5351,
|
||||
IncomingRayFlagsNV = 5351,
|
||||
RayGeometryIndexKHR = 5352,
|
||||
@@ -708,6 +774,8 @@ namespace Spv
|
||||
SMCountNV = 5375,
|
||||
WarpIDNV = 5376,
|
||||
SMIDNV = 5377,
|
||||
HitKindFrontFacingMicroTriangleNV = 5405,
|
||||
HitKindBackFacingMicroTriangleNV = 5406,
|
||||
CullMaskKHR = 6021,
|
||||
}
|
||||
|
||||
@@ -978,6 +1046,9 @@ namespace Spv
|
||||
ShaderViewportIndex = 70,
|
||||
UniformDecoration = 71,
|
||||
CoreBuiltinsARM = 4165,
|
||||
TileImageColorReadAccessEXT = 4166,
|
||||
TileImageDepthReadAccessEXT = 4167,
|
||||
TileImageStencilReadAccessEXT = 4168,
|
||||
FragmentShadingRateKHR = 4422,
|
||||
SubgroupBallotKHR = 4423,
|
||||
DrawParameters = 4427,
|
||||
@@ -1009,6 +1080,10 @@ namespace Spv
|
||||
RayQueryKHR = 4472,
|
||||
RayTraversalPrimitiveCullingKHR = 4478,
|
||||
RayTracingKHR = 4479,
|
||||
TextureSampleWeightedQCOM = 4484,
|
||||
TextureBoxFilterQCOM = 4485,
|
||||
TextureBlockMatchQCOM = 4486,
|
||||
TextureBlockMatch2QCOM = 4498,
|
||||
Float16ImageAMD = 5008,
|
||||
ImageGatherBiasLodAMD = 5009,
|
||||
FragmentMaskAMD = 5010,
|
||||
@@ -1016,6 +1091,8 @@ namespace Spv
|
||||
ImageReadWriteLodAMD = 5015,
|
||||
Int64ImageEXT = 5016,
|
||||
ShaderClockKHR = 5055,
|
||||
ShaderEnqueueAMDX = 5067,
|
||||
QuadControlKHR = 5087,
|
||||
SampleMaskOverrideCoverageNV = 5249,
|
||||
GeometryShaderPassthroughNV = 5251,
|
||||
ShaderViewportIndexLayerEXT = 5254,
|
||||
@@ -1057,6 +1134,7 @@ namespace Spv
|
||||
UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
||||
StorageTexelBufferArrayNonUniformIndexing = 5312,
|
||||
StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
||||
RayTracingPositionFetchKHR = 5336,
|
||||
RayTracingNV = 5340,
|
||||
RayTracingMotionBlurNV = 5341,
|
||||
VulkanMemoryModel = 5345,
|
||||
@@ -1074,9 +1152,14 @@ namespace Spv
|
||||
FragmentShaderPixelInterlockEXT = 5378,
|
||||
DemoteToHelperInvocation = 5379,
|
||||
DemoteToHelperInvocationEXT = 5379,
|
||||
DisplacementMicromapNV = 5380,
|
||||
RayTracingOpacityMicromapEXT = 5381,
|
||||
ShaderInvocationReorderNV = 5383,
|
||||
BindlessTextureNV = 5390,
|
||||
RayQueryPositionFetchKHR = 5391,
|
||||
AtomicFloat16VectorNV = 5404,
|
||||
RayTracingDisplacementMicromapNV = 5409,
|
||||
RawAccessChainsNV = 5414,
|
||||
SubgroupShuffleINTEL = 5568,
|
||||
SubgroupBufferBlockIOINTEL = 5569,
|
||||
SubgroupImageBlockIOINTEL = 5570,
|
||||
@@ -1128,16 +1211,29 @@ namespace Spv
|
||||
DotProduct = 6019,
|
||||
DotProductKHR = 6019,
|
||||
RayCullMaskKHR = 6020,
|
||||
CooperativeMatrixKHR = 6022,
|
||||
BitInstructions = 6025,
|
||||
GroupNonUniformRotateKHR = 6026,
|
||||
FloatControls2 = 6029,
|
||||
AtomicFloat32AddEXT = 6033,
|
||||
AtomicFloat64AddEXT = 6034,
|
||||
LongConstantCompositeINTEL = 6089,
|
||||
LongCompositesINTEL = 6089,
|
||||
OptNoneINTEL = 6094,
|
||||
AtomicFloat16AddEXT = 6095,
|
||||
DebugInfoModuleINTEL = 6114,
|
||||
BFloat16ConversionINTEL = 6115,
|
||||
SplitBarrierINTEL = 6141,
|
||||
FPGAClusterAttributesV2INTEL = 6150,
|
||||
FPGAKernelAttributesv2INTEL = 6161,
|
||||
FPMaxErrorINTEL = 6169,
|
||||
FPGALatencyControlINTEL = 6171,
|
||||
FPGAArgumentInterfacesINTEL = 6174,
|
||||
GlobalVariableHostAccessINTEL = 6187,
|
||||
GlobalVariableFPGADecorationsINTEL = 6189,
|
||||
GroupUniformArithmeticKHR = 6400,
|
||||
MaskedGatherScatterINTEL = 6427,
|
||||
CacheControlsINTEL = 6441,
|
||||
RegisterLimitsINTEL = 6460,
|
||||
}
|
||||
|
||||
public enum RayFlagsShift
|
||||
@@ -1245,6 +1341,87 @@ namespace Spv
|
||||
PackedVectorFormat4x8BitKHR = 0,
|
||||
}
|
||||
|
||||
public enum CooperativeMatrixOperandsShift
|
||||
{
|
||||
MatrixASignedComponentsKHR = 0,
|
||||
MatrixBSignedComponentsKHR = 1,
|
||||
MatrixCSignedComponentsKHR = 2,
|
||||
MatrixResultSignedComponentsKHR = 3,
|
||||
SaturatingAccumulationKHR = 4,
|
||||
}
|
||||
|
||||
public enum CooperativeMatrixOperandsMask
|
||||
{
|
||||
MaskNone = 0,
|
||||
MatrixASignedComponentsKHR = 0x00000001,
|
||||
MatrixBSignedComponentsKHR = 0x00000002,
|
||||
MatrixCSignedComponentsKHR = 0x00000004,
|
||||
MatrixResultSignedComponentsKHR = 0x00000008,
|
||||
SaturatingAccumulationKHR = 0x00000010,
|
||||
}
|
||||
|
||||
public enum CooperativeMatrixLayout
|
||||
{
|
||||
RowMajorKHR = 0,
|
||||
ColumnMajorKHR = 1,
|
||||
}
|
||||
|
||||
public enum CooperativeMatrixUse
|
||||
{
|
||||
MatrixAKHR = 0,
|
||||
MatrixBKHR = 1,
|
||||
MatrixAccumulatorKHR = 2,
|
||||
}
|
||||
|
||||
public enum InitializationModeQualifier
|
||||
{
|
||||
InitOnDeviceReprogramINTEL = 0,
|
||||
InitOnDeviceResetINTEL = 1,
|
||||
}
|
||||
|
||||
public enum HostAccessQualifier
|
||||
{
|
||||
NoneINTEL = 0,
|
||||
ReadINTEL = 1,
|
||||
WriteINTEL = 2,
|
||||
ReadWriteINTEL = 3,
|
||||
}
|
||||
|
||||
public enum LoadCacheControl
|
||||
{
|
||||
UncachedINTEL = 0,
|
||||
CachedINTEL = 1,
|
||||
StreamingINTEL = 2,
|
||||
InvalidateAfterReadINTEL = 3,
|
||||
ConstCachedINTEL = 4,
|
||||
}
|
||||
|
||||
public enum StoreCacheControl
|
||||
{
|
||||
UncachedINTEL = 0,
|
||||
WriteThroughINTEL = 1,
|
||||
WriteBackINTEL = 2,
|
||||
StreamingINTEL = 3,
|
||||
}
|
||||
|
||||
public enum NamedMaximumNumberOfRegisters
|
||||
{
|
||||
AutoINTEL = 0,
|
||||
}
|
||||
|
||||
public enum RawAccessChainOperandsShift
|
||||
{
|
||||
RobustnessPerComponentNV = 0,
|
||||
RobustnessPerElementNV = 1,
|
||||
}
|
||||
|
||||
public enum RawAccessChainOperandsMask
|
||||
{
|
||||
MaskNone = 0,
|
||||
RobustnessPerComponentNV = 0x00000001,
|
||||
RobustnessPerElementNV = 0x00000002,
|
||||
}
|
||||
|
||||
public enum Op
|
||||
{
|
||||
OpNop = 0,
|
||||
@@ -1591,6 +1768,9 @@ namespace Spv
|
||||
OpPtrEqual = 401,
|
||||
OpPtrNotEqual = 402,
|
||||
OpPtrDiff = 403,
|
||||
OpColorAttachmentReadEXT = 4160,
|
||||
OpDepthAttachmentReadEXT = 4161,
|
||||
OpStencilAttachmentReadEXT = 4162,
|
||||
OpTerminateInvocation = 4416,
|
||||
OpSubgroupBallotKHR = 4421,
|
||||
OpSubgroupFirstInvocationKHR = 4422,
|
||||
@@ -1616,6 +1796,11 @@ namespace Spv
|
||||
OpUDotAccSatKHR = 4454,
|
||||
OpSUDotAccSat = 4455,
|
||||
OpSUDotAccSatKHR = 4455,
|
||||
OpTypeCooperativeMatrixKHR = 4456,
|
||||
OpCooperativeMatrixLoadKHR = 4457,
|
||||
OpCooperativeMatrixStoreKHR = 4458,
|
||||
OpCooperativeMatrixMulAddKHR = 4459,
|
||||
OpCooperativeMatrixLengthKHR = 4460,
|
||||
OpTypeRayQueryKHR = 4472,
|
||||
OpRayQueryInitializeKHR = 4473,
|
||||
OpRayQueryTerminateKHR = 4474,
|
||||
@@ -1623,6 +1808,14 @@ namespace Spv
|
||||
OpRayQueryConfirmIntersectionKHR = 4476,
|
||||
OpRayQueryProceedKHR = 4477,
|
||||
OpRayQueryGetIntersectionTypeKHR = 4479,
|
||||
OpImageSampleWeightedQCOM = 4480,
|
||||
OpImageBoxFilterQCOM = 4481,
|
||||
OpImageBlockMatchSSDQCOM = 4482,
|
||||
OpImageBlockMatchSADQCOM = 4483,
|
||||
OpImageBlockMatchWindowSSDQCOM = 4500,
|
||||
OpImageBlockMatchWindowSADQCOM = 4501,
|
||||
OpImageBlockMatchGatherSSDQCOM = 4502,
|
||||
OpImageBlockMatchGatherSADQCOM = 4503,
|
||||
OpGroupIAddNonUniformAMD = 5000,
|
||||
OpGroupFAddNonUniformAMD = 5001,
|
||||
OpGroupFMinNonUniformAMD = 5002,
|
||||
@@ -1634,6 +1827,11 @@ namespace Spv
|
||||
OpFragmentMaskFetchAMD = 5011,
|
||||
OpFragmentFetchAMD = 5012,
|
||||
OpReadClockKHR = 5056,
|
||||
OpFinalizeNodePayloadsAMDX = 5075,
|
||||
OpFinishWritingNodePayloadAMDX = 5078,
|
||||
OpInitializeNodePayloadsAMDX = 5090,
|
||||
OpGroupNonUniformQuadAllKHR = 5110,
|
||||
OpGroupNonUniformQuadAnyKHR = 5111,
|
||||
OpHitObjectRecordHitMotionNV = 5249,
|
||||
OpHitObjectRecordHitWithIndexMotionNV = 5250,
|
||||
OpHitObjectRecordMissMotionNV = 5251,
|
||||
@@ -1672,6 +1870,8 @@ namespace Spv
|
||||
OpSetMeshOutputsEXT = 5295,
|
||||
OpGroupNonUniformPartitionNV = 5296,
|
||||
OpWritePackedPrimitiveIndices4x8NV = 5299,
|
||||
OpFetchMicroTriangleVertexPositionNV = 5300,
|
||||
OpFetchMicroTriangleVertexBarycentricNV = 5301,
|
||||
OpReportIntersectionKHR = 5334,
|
||||
OpReportIntersectionNV = 5334,
|
||||
OpIgnoreIntersectionNV = 5335,
|
||||
@@ -1679,6 +1879,7 @@ namespace Spv
|
||||
OpTraceNV = 5337,
|
||||
OpTraceMotionNV = 5338,
|
||||
OpTraceRayMotionNV = 5339,
|
||||
OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
|
||||
OpTypeAccelerationStructureKHR = 5341,
|
||||
OpTypeAccelerationStructureNV = 5341,
|
||||
OpExecuteCallableNV = 5344,
|
||||
@@ -1699,6 +1900,7 @@ namespace Spv
|
||||
OpConvertUToSampledImageNV = 5395,
|
||||
OpConvertSampledImageToUNV = 5396,
|
||||
OpSamplerImageAddressingModeNV = 5397,
|
||||
OpRawAccessChainNV = 5398,
|
||||
OpSubgroupShuffleINTEL = 5571,
|
||||
OpSubgroupShuffleDownINTEL = 5572,
|
||||
OpSubgroupShuffleUpINTEL = 5573,
|
||||
@@ -1940,6 +2142,9 @@ namespace Spv
|
||||
OpTypeStructContinuedINTEL = 6090,
|
||||
OpConstantCompositeContinuedINTEL = 6091,
|
||||
OpSpecConstantCompositeContinuedINTEL = 6092,
|
||||
OpCompositeConstructContinuedINTEL = 6096,
|
||||
OpConvertFToBF16INTEL = 6116,
|
||||
OpConvertBF16ToFINTEL = 6117,
|
||||
OpControlBarrierArriveINTEL = 6142,
|
||||
OpControlBarrierWaitINTEL = 6143,
|
||||
OpGroupIMulKHR = 6401,
|
||||
@@ -1950,6 +2155,8 @@ namespace Spv
|
||||
OpGroupLogicalAndKHR = 6406,
|
||||
OpGroupLogicalOrKHR = 6407,
|
||||
OpGroupLogicalXorKHR = 6408,
|
||||
OpMaskedGatherINTEL = 6428,
|
||||
OpMaskedScatterINTEL = 6429,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+237
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
** Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||
** Copyright (c) 2014-2024 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
** of this software and/or associated documentation files (the "Materials"),
|
||||
@@ -73,6 +73,11 @@ typedef enum SpvSourceLanguage_ {
|
||||
SpvSourceLanguageHLSL = 5,
|
||||
SpvSourceLanguageCPP_for_OpenCL = 6,
|
||||
SpvSourceLanguageSYCL = 7,
|
||||
SpvSourceLanguageHERO_C = 8,
|
||||
SpvSourceLanguageNZSL = 9,
|
||||
SpvSourceLanguageWGSL = 10,
|
||||
SpvSourceLanguageSlang = 11,
|
||||
SpvSourceLanguageZig = 12,
|
||||
SpvSourceLanguageMax = 0x7fffffff,
|
||||
} SpvSourceLanguage;
|
||||
|
||||
@@ -160,6 +165,9 @@ typedef enum SpvExecutionMode_ {
|
||||
SpvExecutionModeSubgroupsPerWorkgroupId = 37,
|
||||
SpvExecutionModeLocalSizeId = 38,
|
||||
SpvExecutionModeLocalSizeHintId = 39,
|
||||
SpvExecutionModeNonCoherentColorAttachmentReadEXT = 4169,
|
||||
SpvExecutionModeNonCoherentDepthAttachmentReadEXT = 4170,
|
||||
SpvExecutionModeNonCoherentStencilAttachmentReadEXT = 4171,
|
||||
SpvExecutionModeSubgroupUniformControlFlowKHR = 4421,
|
||||
SpvExecutionModePostDepthCoverage = 4446,
|
||||
SpvExecutionModeDenormPreserve = 4459,
|
||||
@@ -169,12 +177,19 @@ typedef enum SpvExecutionMode_ {
|
||||
SpvExecutionModeRoundingModeRTZ = 4463,
|
||||
SpvExecutionModeEarlyAndLateFragmentTestsAMD = 5017,
|
||||
SpvExecutionModeStencilRefReplacingEXT = 5027,
|
||||
SpvExecutionModeCoalescingAMDX = 5069,
|
||||
SpvExecutionModeMaxNodeRecursionAMDX = 5071,
|
||||
SpvExecutionModeStaticNumWorkgroupsAMDX = 5072,
|
||||
SpvExecutionModeShaderIndexAMDX = 5073,
|
||||
SpvExecutionModeMaxNumWorkgroupsAMDX = 5077,
|
||||
SpvExecutionModeStencilRefUnchangedFrontAMD = 5079,
|
||||
SpvExecutionModeStencilRefGreaterFrontAMD = 5080,
|
||||
SpvExecutionModeStencilRefLessFrontAMD = 5081,
|
||||
SpvExecutionModeStencilRefUnchangedBackAMD = 5082,
|
||||
SpvExecutionModeStencilRefGreaterBackAMD = 5083,
|
||||
SpvExecutionModeStencilRefLessBackAMD = 5084,
|
||||
SpvExecutionModeQuadDerivativesKHR = 5088,
|
||||
SpvExecutionModeRequireFullQuadsKHR = 5089,
|
||||
SpvExecutionModeOutputLinesEXT = 5269,
|
||||
SpvExecutionModeOutputLinesNV = 5269,
|
||||
SpvExecutionModeOutputPrimitivesEXT = 5270,
|
||||
@@ -199,8 +214,14 @@ typedef enum SpvExecutionMode_ {
|
||||
SpvExecutionModeNoGlobalOffsetINTEL = 5895,
|
||||
SpvExecutionModeNumSIMDWorkitemsINTEL = 5896,
|
||||
SpvExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
|
||||
SpvExecutionModeMaximallyReconvergesKHR = 6023,
|
||||
SpvExecutionModeFPFastMathDefault = 6028,
|
||||
SpvExecutionModeStreamingInterfaceINTEL = 6154,
|
||||
SpvExecutionModeRegisterMapInterfaceINTEL = 6160,
|
||||
SpvExecutionModeNamedBarrierCountINTEL = 6417,
|
||||
SpvExecutionModeMaximumRegistersINTEL = 6461,
|
||||
SpvExecutionModeMaximumRegistersIdINTEL = 6462,
|
||||
SpvExecutionModeNamedMaximumRegistersINTEL = 6463,
|
||||
SpvExecutionModeMax = 0x7fffffff,
|
||||
} SpvExecutionMode;
|
||||
|
||||
@@ -218,6 +239,9 @@ typedef enum SpvStorageClass_ {
|
||||
SpvStorageClassAtomicCounter = 10,
|
||||
SpvStorageClassImage = 11,
|
||||
SpvStorageClassStorageBuffer = 12,
|
||||
SpvStorageClassTileImageEXT = 4172,
|
||||
SpvStorageClassNodePayloadAMDX = 5068,
|
||||
SpvStorageClassNodeOutputPayloadAMDX = 5076,
|
||||
SpvStorageClassCallableDataKHR = 5328,
|
||||
SpvStorageClassCallableDataNV = 5328,
|
||||
SpvStorageClassIncomingCallableDataKHR = 5329,
|
||||
@@ -248,6 +272,7 @@ typedef enum SpvDim_ {
|
||||
SpvDimRect = 4,
|
||||
SpvDimBuffer = 5,
|
||||
SpvDimSubpassData = 6,
|
||||
SpvDimTileImageDataEXT = 4173,
|
||||
SpvDimMax = 0x7fffffff,
|
||||
} SpvDim;
|
||||
|
||||
@@ -354,6 +379,8 @@ typedef enum SpvImageChannelDataType_ {
|
||||
SpvImageChannelDataTypeFloat = 14,
|
||||
SpvImageChannelDataTypeUnormInt24 = 15,
|
||||
SpvImageChannelDataTypeUnormInt101010_2 = 16,
|
||||
SpvImageChannelDataTypeUnsignedIntRaw10EXT = 19,
|
||||
SpvImageChannelDataTypeUnsignedIntRaw12EXT = 20,
|
||||
SpvImageChannelDataTypeMax = 0x7fffffff,
|
||||
} SpvImageChannelDataType;
|
||||
|
||||
@@ -411,8 +438,11 @@ typedef enum SpvFPFastMathModeShift_ {
|
||||
SpvFPFastMathModeNSZShift = 2,
|
||||
SpvFPFastMathModeAllowRecipShift = 3,
|
||||
SpvFPFastMathModeFastShift = 4,
|
||||
SpvFPFastMathModeAllowContractShift = 16,
|
||||
SpvFPFastMathModeAllowContractFastINTELShift = 16,
|
||||
SpvFPFastMathModeAllowReassocShift = 17,
|
||||
SpvFPFastMathModeAllowReassocINTELShift = 17,
|
||||
SpvFPFastMathModeAllowTransformShift = 18,
|
||||
SpvFPFastMathModeMax = 0x7fffffff,
|
||||
} SpvFPFastMathModeShift;
|
||||
|
||||
@@ -423,8 +453,11 @@ typedef enum SpvFPFastMathModeMask_ {
|
||||
SpvFPFastMathModeNSZMask = 0x00000004,
|
||||
SpvFPFastMathModeAllowRecipMask = 0x00000008,
|
||||
SpvFPFastMathModeFastMask = 0x00000010,
|
||||
SpvFPFastMathModeAllowContractMask = 0x00010000,
|
||||
SpvFPFastMathModeAllowContractFastINTELMask = 0x00010000,
|
||||
SpvFPFastMathModeAllowReassocMask = 0x00020000,
|
||||
SpvFPFastMathModeAllowReassocINTELMask = 0x00020000,
|
||||
SpvFPFastMathModeAllowTransformMask = 0x00040000,
|
||||
} SpvFPFastMathModeMask;
|
||||
|
||||
typedef enum SpvFPRoundingMode_ {
|
||||
@@ -512,7 +545,14 @@ typedef enum SpvDecoration_ {
|
||||
SpvDecorationMaxByteOffsetId = 47,
|
||||
SpvDecorationNoSignedWrap = 4469,
|
||||
SpvDecorationNoUnsignedWrap = 4470,
|
||||
SpvDecorationWeightTextureQCOM = 4487,
|
||||
SpvDecorationBlockMatchTextureQCOM = 4488,
|
||||
SpvDecorationBlockMatchSamplerQCOM = 4499,
|
||||
SpvDecorationExplicitInterpAMD = 4999,
|
||||
SpvDecorationNodeSharesPayloadLimitsWithAMDX = 5019,
|
||||
SpvDecorationNodeMaxPayloadsAMDX = 5020,
|
||||
SpvDecorationTrackFinishWritingAMDX = 5078,
|
||||
SpvDecorationPayloadNodeNameAMDX = 5091,
|
||||
SpvDecorationOverrideCoverageNV = 5248,
|
||||
SpvDecorationPassthroughNV = 5250,
|
||||
SpvDecorationViewportRelativeNV = 5252,
|
||||
@@ -562,6 +602,9 @@ typedef enum SpvDecoration_ {
|
||||
SpvDecorationMergeINTEL = 5834,
|
||||
SpvDecorationBankBitsINTEL = 5835,
|
||||
SpvDecorationForcePow2DepthINTEL = 5836,
|
||||
SpvDecorationStridesizeINTEL = 5883,
|
||||
SpvDecorationWordsizeINTEL = 5884,
|
||||
SpvDecorationTrueDualPortINTEL = 5885,
|
||||
SpvDecorationBurstCoalesceINTEL = 5899,
|
||||
SpvDecorationCacheSizeINTEL = 5900,
|
||||
SpvDecorationDontStaticallyCoalesceINTEL = 5901,
|
||||
@@ -580,6 +623,24 @@ typedef enum SpvDecoration_ {
|
||||
SpvDecorationSingleElementVectorINTEL = 6085,
|
||||
SpvDecorationVectorComputeCallableFunctionINTEL = 6087,
|
||||
SpvDecorationMediaBlockIOINTEL = 6140,
|
||||
SpvDecorationStallFreeINTEL = 6151,
|
||||
SpvDecorationFPMaxErrorDecorationINTEL = 6170,
|
||||
SpvDecorationLatencyControlLabelINTEL = 6172,
|
||||
SpvDecorationLatencyControlConstraintINTEL = 6173,
|
||||
SpvDecorationConduitKernelArgumentINTEL = 6175,
|
||||
SpvDecorationRegisterMapKernelArgumentINTEL = 6176,
|
||||
SpvDecorationMMHostInterfaceAddressWidthINTEL = 6177,
|
||||
SpvDecorationMMHostInterfaceDataWidthINTEL = 6178,
|
||||
SpvDecorationMMHostInterfaceLatencyINTEL = 6179,
|
||||
SpvDecorationMMHostInterfaceReadWriteModeINTEL = 6180,
|
||||
SpvDecorationMMHostInterfaceMaxBurstINTEL = 6181,
|
||||
SpvDecorationMMHostInterfaceWaitRequestINTEL = 6182,
|
||||
SpvDecorationStableKernelArgumentINTEL = 6183,
|
||||
SpvDecorationHostAccessINTEL = 6188,
|
||||
SpvDecorationInitModeINTEL = 6190,
|
||||
SpvDecorationImplementInRegisterMapINTEL = 6191,
|
||||
SpvDecorationCacheControlLoadINTEL = 6442,
|
||||
SpvDecorationCacheControlStoreINTEL = 6443,
|
||||
SpvDecorationMax = 0x7fffffff,
|
||||
} SpvDecoration;
|
||||
|
||||
@@ -655,6 +716,8 @@ typedef enum SpvBuiltIn_ {
|
||||
SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
|
||||
SpvBuiltInBaryCoordPullModelAMD = 4998,
|
||||
SpvBuiltInFragStencilRefEXT = 5014,
|
||||
SpvBuiltInCoalescedInputCountAMDX = 5021,
|
||||
SpvBuiltInShaderIndexAMDX = 5073,
|
||||
SpvBuiltInViewportMaskNV = 5253,
|
||||
SpvBuiltInSecondaryPositionNV = 5257,
|
||||
SpvBuiltInSecondaryViewportMaskNV = 5258,
|
||||
@@ -707,6 +770,9 @@ typedef enum SpvBuiltIn_ {
|
||||
SpvBuiltInHitKindKHR = 5333,
|
||||
SpvBuiltInHitKindNV = 5333,
|
||||
SpvBuiltInCurrentRayTimeNV = 5334,
|
||||
SpvBuiltInHitTriangleVertexPositionsKHR = 5335,
|
||||
SpvBuiltInHitMicroTriangleVertexPositionsNV = 5337,
|
||||
SpvBuiltInHitMicroTriangleVertexBarycentricsNV = 5344,
|
||||
SpvBuiltInIncomingRayFlagsKHR = 5351,
|
||||
SpvBuiltInIncomingRayFlagsNV = 5351,
|
||||
SpvBuiltInRayGeometryIndexKHR = 5352,
|
||||
@@ -714,6 +780,8 @@ typedef enum SpvBuiltIn_ {
|
||||
SpvBuiltInSMCountNV = 5375,
|
||||
SpvBuiltInWarpIDNV = 5376,
|
||||
SpvBuiltInSMIDNV = 5377,
|
||||
SpvBuiltInHitKindFrontFacingMicroTriangleNV = 5405,
|
||||
SpvBuiltInHitKindBackFacingMicroTriangleNV = 5406,
|
||||
SpvBuiltInCullMaskKHR = 6021,
|
||||
SpvBuiltInMax = 0x7fffffff,
|
||||
} SpvBuiltIn;
|
||||
@@ -978,6 +1046,9 @@ typedef enum SpvCapability_ {
|
||||
SpvCapabilityShaderViewportIndex = 70,
|
||||
SpvCapabilityUniformDecoration = 71,
|
||||
SpvCapabilityCoreBuiltinsARM = 4165,
|
||||
SpvCapabilityTileImageColorReadAccessEXT = 4166,
|
||||
SpvCapabilityTileImageDepthReadAccessEXT = 4167,
|
||||
SpvCapabilityTileImageStencilReadAccessEXT = 4168,
|
||||
SpvCapabilityFragmentShadingRateKHR = 4422,
|
||||
SpvCapabilitySubgroupBallotKHR = 4423,
|
||||
SpvCapabilityDrawParameters = 4427,
|
||||
@@ -1009,6 +1080,10 @@ typedef enum SpvCapability_ {
|
||||
SpvCapabilityRayQueryKHR = 4472,
|
||||
SpvCapabilityRayTraversalPrimitiveCullingKHR = 4478,
|
||||
SpvCapabilityRayTracingKHR = 4479,
|
||||
SpvCapabilityTextureSampleWeightedQCOM = 4484,
|
||||
SpvCapabilityTextureBoxFilterQCOM = 4485,
|
||||
SpvCapabilityTextureBlockMatchQCOM = 4486,
|
||||
SpvCapabilityTextureBlockMatch2QCOM = 4498,
|
||||
SpvCapabilityFloat16ImageAMD = 5008,
|
||||
SpvCapabilityImageGatherBiasLodAMD = 5009,
|
||||
SpvCapabilityFragmentMaskAMD = 5010,
|
||||
@@ -1016,6 +1091,8 @@ typedef enum SpvCapability_ {
|
||||
SpvCapabilityImageReadWriteLodAMD = 5015,
|
||||
SpvCapabilityInt64ImageEXT = 5016,
|
||||
SpvCapabilityShaderClockKHR = 5055,
|
||||
SpvCapabilityShaderEnqueueAMDX = 5067,
|
||||
SpvCapabilityQuadControlKHR = 5087,
|
||||
SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
|
||||
SpvCapabilityGeometryShaderPassthroughNV = 5251,
|
||||
SpvCapabilityShaderViewportIndexLayerEXT = 5254,
|
||||
@@ -1057,6 +1134,7 @@ typedef enum SpvCapability_ {
|
||||
SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
||||
SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
|
||||
SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
||||
SpvCapabilityRayTracingPositionFetchKHR = 5336,
|
||||
SpvCapabilityRayTracingNV = 5340,
|
||||
SpvCapabilityRayTracingMotionBlurNV = 5341,
|
||||
SpvCapabilityVulkanMemoryModel = 5345,
|
||||
@@ -1074,9 +1152,14 @@ typedef enum SpvCapability_ {
|
||||
SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,
|
||||
SpvCapabilityDemoteToHelperInvocation = 5379,
|
||||
SpvCapabilityDemoteToHelperInvocationEXT = 5379,
|
||||
SpvCapabilityDisplacementMicromapNV = 5380,
|
||||
SpvCapabilityRayTracingOpacityMicromapEXT = 5381,
|
||||
SpvCapabilityShaderInvocationReorderNV = 5383,
|
||||
SpvCapabilityBindlessTextureNV = 5390,
|
||||
SpvCapabilityRayQueryPositionFetchKHR = 5391,
|
||||
SpvCapabilityAtomicFloat16VectorNV = 5404,
|
||||
SpvCapabilityRayTracingDisplacementMicromapNV = 5409,
|
||||
SpvCapabilityRawAccessChainsNV = 5414,
|
||||
SpvCapabilitySubgroupShuffleINTEL = 5568,
|
||||
SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
|
||||
SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
|
||||
@@ -1128,16 +1211,29 @@ typedef enum SpvCapability_ {
|
||||
SpvCapabilityDotProduct = 6019,
|
||||
SpvCapabilityDotProductKHR = 6019,
|
||||
SpvCapabilityRayCullMaskKHR = 6020,
|
||||
SpvCapabilityCooperativeMatrixKHR = 6022,
|
||||
SpvCapabilityBitInstructions = 6025,
|
||||
SpvCapabilityGroupNonUniformRotateKHR = 6026,
|
||||
SpvCapabilityFloatControls2 = 6029,
|
||||
SpvCapabilityAtomicFloat32AddEXT = 6033,
|
||||
SpvCapabilityAtomicFloat64AddEXT = 6034,
|
||||
SpvCapabilityLongConstantCompositeINTEL = 6089,
|
||||
SpvCapabilityLongCompositesINTEL = 6089,
|
||||
SpvCapabilityOptNoneINTEL = 6094,
|
||||
SpvCapabilityAtomicFloat16AddEXT = 6095,
|
||||
SpvCapabilityDebugInfoModuleINTEL = 6114,
|
||||
SpvCapabilityBFloat16ConversionINTEL = 6115,
|
||||
SpvCapabilitySplitBarrierINTEL = 6141,
|
||||
SpvCapabilityFPGAClusterAttributesV2INTEL = 6150,
|
||||
SpvCapabilityFPGAKernelAttributesv2INTEL = 6161,
|
||||
SpvCapabilityFPMaxErrorINTEL = 6169,
|
||||
SpvCapabilityFPGALatencyControlINTEL = 6171,
|
||||
SpvCapabilityFPGAArgumentInterfacesINTEL = 6174,
|
||||
SpvCapabilityGlobalVariableHostAccessINTEL = 6187,
|
||||
SpvCapabilityGlobalVariableFPGADecorationsINTEL = 6189,
|
||||
SpvCapabilityGroupUniformArithmeticKHR = 6400,
|
||||
SpvCapabilityMaskedGatherScatterINTEL = 6427,
|
||||
SpvCapabilityCacheControlsINTEL = 6441,
|
||||
SpvCapabilityRegisterLimitsINTEL = 6460,
|
||||
SpvCapabilityMax = 0x7fffffff,
|
||||
} SpvCapability;
|
||||
|
||||
@@ -1244,6 +1340,85 @@ typedef enum SpvPackedVectorFormat_ {
|
||||
SpvPackedVectorFormatMax = 0x7fffffff,
|
||||
} SpvPackedVectorFormat;
|
||||
|
||||
typedef enum SpvCooperativeMatrixOperandsShift_ {
|
||||
SpvCooperativeMatrixOperandsMatrixASignedComponentsKHRShift = 0,
|
||||
SpvCooperativeMatrixOperandsMatrixBSignedComponentsKHRShift = 1,
|
||||
SpvCooperativeMatrixOperandsMatrixCSignedComponentsKHRShift = 2,
|
||||
SpvCooperativeMatrixOperandsMatrixResultSignedComponentsKHRShift = 3,
|
||||
SpvCooperativeMatrixOperandsSaturatingAccumulationKHRShift = 4,
|
||||
SpvCooperativeMatrixOperandsMax = 0x7fffffff,
|
||||
} SpvCooperativeMatrixOperandsShift;
|
||||
|
||||
typedef enum SpvCooperativeMatrixOperandsMask_ {
|
||||
SpvCooperativeMatrixOperandsMaskNone = 0,
|
||||
SpvCooperativeMatrixOperandsMatrixASignedComponentsKHRMask = 0x00000001,
|
||||
SpvCooperativeMatrixOperandsMatrixBSignedComponentsKHRMask = 0x00000002,
|
||||
SpvCooperativeMatrixOperandsMatrixCSignedComponentsKHRMask = 0x00000004,
|
||||
SpvCooperativeMatrixOperandsMatrixResultSignedComponentsKHRMask = 0x00000008,
|
||||
SpvCooperativeMatrixOperandsSaturatingAccumulationKHRMask = 0x00000010,
|
||||
} SpvCooperativeMatrixOperandsMask;
|
||||
|
||||
typedef enum SpvCooperativeMatrixLayout_ {
|
||||
SpvCooperativeMatrixLayoutRowMajorKHR = 0,
|
||||
SpvCooperativeMatrixLayoutColumnMajorKHR = 1,
|
||||
SpvCooperativeMatrixLayoutMax = 0x7fffffff,
|
||||
} SpvCooperativeMatrixLayout;
|
||||
|
||||
typedef enum SpvCooperativeMatrixUse_ {
|
||||
SpvCooperativeMatrixUseMatrixAKHR = 0,
|
||||
SpvCooperativeMatrixUseMatrixBKHR = 1,
|
||||
SpvCooperativeMatrixUseMatrixAccumulatorKHR = 2,
|
||||
SpvCooperativeMatrixUseMax = 0x7fffffff,
|
||||
} SpvCooperativeMatrixUse;
|
||||
|
||||
typedef enum SpvInitializationModeQualifier_ {
|
||||
SpvInitializationModeQualifierInitOnDeviceReprogramINTEL = 0,
|
||||
SpvInitializationModeQualifierInitOnDeviceResetINTEL = 1,
|
||||
SpvInitializationModeQualifierMax = 0x7fffffff,
|
||||
} SpvInitializationModeQualifier;
|
||||
|
||||
typedef enum SpvHostAccessQualifier_ {
|
||||
SpvHostAccessQualifierNoneINTEL = 0,
|
||||
SpvHostAccessQualifierReadINTEL = 1,
|
||||
SpvHostAccessQualifierWriteINTEL = 2,
|
||||
SpvHostAccessQualifierReadWriteINTEL = 3,
|
||||
SpvHostAccessQualifierMax = 0x7fffffff,
|
||||
} SpvHostAccessQualifier;
|
||||
|
||||
typedef enum SpvLoadCacheControl_ {
|
||||
SpvLoadCacheControlUncachedINTEL = 0,
|
||||
SpvLoadCacheControlCachedINTEL = 1,
|
||||
SpvLoadCacheControlStreamingINTEL = 2,
|
||||
SpvLoadCacheControlInvalidateAfterReadINTEL = 3,
|
||||
SpvLoadCacheControlConstCachedINTEL = 4,
|
||||
SpvLoadCacheControlMax = 0x7fffffff,
|
||||
} SpvLoadCacheControl;
|
||||
|
||||
typedef enum SpvStoreCacheControl_ {
|
||||
SpvStoreCacheControlUncachedINTEL = 0,
|
||||
SpvStoreCacheControlWriteThroughINTEL = 1,
|
||||
SpvStoreCacheControlWriteBackINTEL = 2,
|
||||
SpvStoreCacheControlStreamingINTEL = 3,
|
||||
SpvStoreCacheControlMax = 0x7fffffff,
|
||||
} SpvStoreCacheControl;
|
||||
|
||||
typedef enum SpvNamedMaximumNumberOfRegisters_ {
|
||||
SpvNamedMaximumNumberOfRegistersAutoINTEL = 0,
|
||||
SpvNamedMaximumNumberOfRegistersMax = 0x7fffffff,
|
||||
} SpvNamedMaximumNumberOfRegisters;
|
||||
|
||||
typedef enum SpvRawAccessChainOperandsShift_ {
|
||||
SpvRawAccessChainOperandsRobustnessPerComponentNVShift = 0,
|
||||
SpvRawAccessChainOperandsRobustnessPerElementNVShift = 1,
|
||||
SpvRawAccessChainOperandsMax = 0x7fffffff,
|
||||
} SpvRawAccessChainOperandsShift;
|
||||
|
||||
typedef enum SpvRawAccessChainOperandsMask_ {
|
||||
SpvRawAccessChainOperandsMaskNone = 0,
|
||||
SpvRawAccessChainOperandsRobustnessPerComponentNVMask = 0x00000001,
|
||||
SpvRawAccessChainOperandsRobustnessPerElementNVMask = 0x00000002,
|
||||
} SpvRawAccessChainOperandsMask;
|
||||
|
||||
typedef enum SpvOp_ {
|
||||
SpvOpNop = 0,
|
||||
SpvOpUndef = 1,
|
||||
@@ -1589,6 +1764,9 @@ typedef enum SpvOp_ {
|
||||
SpvOpPtrEqual = 401,
|
||||
SpvOpPtrNotEqual = 402,
|
||||
SpvOpPtrDiff = 403,
|
||||
SpvOpColorAttachmentReadEXT = 4160,
|
||||
SpvOpDepthAttachmentReadEXT = 4161,
|
||||
SpvOpStencilAttachmentReadEXT = 4162,
|
||||
SpvOpTerminateInvocation = 4416,
|
||||
SpvOpSubgroupBallotKHR = 4421,
|
||||
SpvOpSubgroupFirstInvocationKHR = 4422,
|
||||
@@ -1614,6 +1792,11 @@ typedef enum SpvOp_ {
|
||||
SpvOpUDotAccSatKHR = 4454,
|
||||
SpvOpSUDotAccSat = 4455,
|
||||
SpvOpSUDotAccSatKHR = 4455,
|
||||
SpvOpTypeCooperativeMatrixKHR = 4456,
|
||||
SpvOpCooperativeMatrixLoadKHR = 4457,
|
||||
SpvOpCooperativeMatrixStoreKHR = 4458,
|
||||
SpvOpCooperativeMatrixMulAddKHR = 4459,
|
||||
SpvOpCooperativeMatrixLengthKHR = 4460,
|
||||
SpvOpTypeRayQueryKHR = 4472,
|
||||
SpvOpRayQueryInitializeKHR = 4473,
|
||||
SpvOpRayQueryTerminateKHR = 4474,
|
||||
@@ -1621,6 +1804,14 @@ typedef enum SpvOp_ {
|
||||
SpvOpRayQueryConfirmIntersectionKHR = 4476,
|
||||
SpvOpRayQueryProceedKHR = 4477,
|
||||
SpvOpRayQueryGetIntersectionTypeKHR = 4479,
|
||||
SpvOpImageSampleWeightedQCOM = 4480,
|
||||
SpvOpImageBoxFilterQCOM = 4481,
|
||||
SpvOpImageBlockMatchSSDQCOM = 4482,
|
||||
SpvOpImageBlockMatchSADQCOM = 4483,
|
||||
SpvOpImageBlockMatchWindowSSDQCOM = 4500,
|
||||
SpvOpImageBlockMatchWindowSADQCOM = 4501,
|
||||
SpvOpImageBlockMatchGatherSSDQCOM = 4502,
|
||||
SpvOpImageBlockMatchGatherSADQCOM = 4503,
|
||||
SpvOpGroupIAddNonUniformAMD = 5000,
|
||||
SpvOpGroupFAddNonUniformAMD = 5001,
|
||||
SpvOpGroupFMinNonUniformAMD = 5002,
|
||||
@@ -1632,6 +1823,11 @@ typedef enum SpvOp_ {
|
||||
SpvOpFragmentMaskFetchAMD = 5011,
|
||||
SpvOpFragmentFetchAMD = 5012,
|
||||
SpvOpReadClockKHR = 5056,
|
||||
SpvOpFinalizeNodePayloadsAMDX = 5075,
|
||||
SpvOpFinishWritingNodePayloadAMDX = 5078,
|
||||
SpvOpInitializeNodePayloadsAMDX = 5090,
|
||||
SpvOpGroupNonUniformQuadAllKHR = 5110,
|
||||
SpvOpGroupNonUniformQuadAnyKHR = 5111,
|
||||
SpvOpHitObjectRecordHitMotionNV = 5249,
|
||||
SpvOpHitObjectRecordHitWithIndexMotionNV = 5250,
|
||||
SpvOpHitObjectRecordMissMotionNV = 5251,
|
||||
@@ -1670,6 +1866,8 @@ typedef enum SpvOp_ {
|
||||
SpvOpSetMeshOutputsEXT = 5295,
|
||||
SpvOpGroupNonUniformPartitionNV = 5296,
|
||||
SpvOpWritePackedPrimitiveIndices4x8NV = 5299,
|
||||
SpvOpFetchMicroTriangleVertexPositionNV = 5300,
|
||||
SpvOpFetchMicroTriangleVertexBarycentricNV = 5301,
|
||||
SpvOpReportIntersectionKHR = 5334,
|
||||
SpvOpReportIntersectionNV = 5334,
|
||||
SpvOpIgnoreIntersectionNV = 5335,
|
||||
@@ -1677,6 +1875,7 @@ typedef enum SpvOp_ {
|
||||
SpvOpTraceNV = 5337,
|
||||
SpvOpTraceMotionNV = 5338,
|
||||
SpvOpTraceRayMotionNV = 5339,
|
||||
SpvOpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
|
||||
SpvOpTypeAccelerationStructureKHR = 5341,
|
||||
SpvOpTypeAccelerationStructureNV = 5341,
|
||||
SpvOpExecuteCallableNV = 5344,
|
||||
@@ -1697,6 +1896,7 @@ typedef enum SpvOp_ {
|
||||
SpvOpConvertUToSampledImageNV = 5395,
|
||||
SpvOpConvertSampledImageToUNV = 5396,
|
||||
SpvOpSamplerImageAddressingModeNV = 5397,
|
||||
SpvOpRawAccessChainNV = 5398,
|
||||
SpvOpSubgroupShuffleINTEL = 5571,
|
||||
SpvOpSubgroupShuffleDownINTEL = 5572,
|
||||
SpvOpSubgroupShuffleUpINTEL = 5573,
|
||||
@@ -1938,6 +2138,9 @@ typedef enum SpvOp_ {
|
||||
SpvOpTypeStructContinuedINTEL = 6090,
|
||||
SpvOpConstantCompositeContinuedINTEL = 6091,
|
||||
SpvOpSpecConstantCompositeContinuedINTEL = 6092,
|
||||
SpvOpCompositeConstructContinuedINTEL = 6096,
|
||||
SpvOpConvertFToBF16INTEL = 6116,
|
||||
SpvOpConvertBF16ToFINTEL = 6117,
|
||||
SpvOpControlBarrierArriveINTEL = 6142,
|
||||
SpvOpControlBarrierWaitINTEL = 6143,
|
||||
SpvOpGroupIMulKHR = 6401,
|
||||
@@ -1948,6 +2151,8 @@ typedef enum SpvOp_ {
|
||||
SpvOpGroupLogicalAndKHR = 6406,
|
||||
SpvOpGroupLogicalOrKHR = 6407,
|
||||
SpvOpGroupLogicalXorKHR = 6408,
|
||||
SpvOpMaskedGatherINTEL = 6428,
|
||||
SpvOpMaskedScatterINTEL = 6429,
|
||||
SpvOpMax = 0x7fffffff,
|
||||
} SpvOp;
|
||||
|
||||
@@ -2303,6 +2508,9 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
|
||||
case SpvOpPtrEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpPtrDiff: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2322,6 +2530,11 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
|
||||
case SpvOpSDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpUDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
|
||||
@@ -2329,6 +2542,14 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
|
||||
case SpvOpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSampleWeightedQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageBlockMatchWindowSSDQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageBlockMatchWindowSADQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageBlockMatchGatherSSDQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageBlockMatchGatherSADQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2340,6 +2561,11 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
|
||||
case SpvOpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpReadClockKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFinalizeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpFinishWritingNodePayloadAMDX: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpInitializeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
@@ -2378,12 +2604,15 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
|
||||
case SpvOpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpFetchMicroTriangleVertexPositionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFetchMicroTriangleVertexBarycentricNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpTraceNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpRayQueryGetIntersectionTriangleVertexPositionsKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
|
||||
@@ -2402,6 +2631,7 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
|
||||
case SpvOpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpRawAccessChainNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2641,6 +2871,9 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
|
||||
case SpvOpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpCompositeConstructContinuedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConvertFToBF16INTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConvertBF16ToFINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpControlBarrierWaitINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpGroupIMulKHR: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2651,6 +2884,8 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy
|
||||
case SpvOpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpMaskedGatherINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpMaskedScatterINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
}
|
||||
}
|
||||
#endif /* SPV_ENABLE_UTILITY_CODE */
|
||||
|
||||
+245
-2
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||
// Copyright (c) 2014-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and/or associated documentation files (the "Materials"),
|
||||
@@ -69,6 +69,11 @@ enum SourceLanguage {
|
||||
SourceLanguageHLSL = 5,
|
||||
SourceLanguageCPP_for_OpenCL = 6,
|
||||
SourceLanguageSYCL = 7,
|
||||
SourceLanguageHERO_C = 8,
|
||||
SourceLanguageNZSL = 9,
|
||||
SourceLanguageWGSL = 10,
|
||||
SourceLanguageSlang = 11,
|
||||
SourceLanguageZig = 12,
|
||||
SourceLanguageMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -156,6 +161,9 @@ enum ExecutionMode {
|
||||
ExecutionModeSubgroupsPerWorkgroupId = 37,
|
||||
ExecutionModeLocalSizeId = 38,
|
||||
ExecutionModeLocalSizeHintId = 39,
|
||||
ExecutionModeNonCoherentColorAttachmentReadEXT = 4169,
|
||||
ExecutionModeNonCoherentDepthAttachmentReadEXT = 4170,
|
||||
ExecutionModeNonCoherentStencilAttachmentReadEXT = 4171,
|
||||
ExecutionModeSubgroupUniformControlFlowKHR = 4421,
|
||||
ExecutionModePostDepthCoverage = 4446,
|
||||
ExecutionModeDenormPreserve = 4459,
|
||||
@@ -165,12 +173,19 @@ enum ExecutionMode {
|
||||
ExecutionModeRoundingModeRTZ = 4463,
|
||||
ExecutionModeEarlyAndLateFragmentTestsAMD = 5017,
|
||||
ExecutionModeStencilRefReplacingEXT = 5027,
|
||||
ExecutionModeCoalescingAMDX = 5069,
|
||||
ExecutionModeMaxNodeRecursionAMDX = 5071,
|
||||
ExecutionModeStaticNumWorkgroupsAMDX = 5072,
|
||||
ExecutionModeShaderIndexAMDX = 5073,
|
||||
ExecutionModeMaxNumWorkgroupsAMDX = 5077,
|
||||
ExecutionModeStencilRefUnchangedFrontAMD = 5079,
|
||||
ExecutionModeStencilRefGreaterFrontAMD = 5080,
|
||||
ExecutionModeStencilRefLessFrontAMD = 5081,
|
||||
ExecutionModeStencilRefUnchangedBackAMD = 5082,
|
||||
ExecutionModeStencilRefGreaterBackAMD = 5083,
|
||||
ExecutionModeStencilRefLessBackAMD = 5084,
|
||||
ExecutionModeQuadDerivativesKHR = 5088,
|
||||
ExecutionModeRequireFullQuadsKHR = 5089,
|
||||
ExecutionModeOutputLinesEXT = 5269,
|
||||
ExecutionModeOutputLinesNV = 5269,
|
||||
ExecutionModeOutputPrimitivesEXT = 5270,
|
||||
@@ -195,8 +210,14 @@ enum ExecutionMode {
|
||||
ExecutionModeNoGlobalOffsetINTEL = 5895,
|
||||
ExecutionModeNumSIMDWorkitemsINTEL = 5896,
|
||||
ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
|
||||
ExecutionModeMaximallyReconvergesKHR = 6023,
|
||||
ExecutionModeFPFastMathDefault = 6028,
|
||||
ExecutionModeStreamingInterfaceINTEL = 6154,
|
||||
ExecutionModeRegisterMapInterfaceINTEL = 6160,
|
||||
ExecutionModeNamedBarrierCountINTEL = 6417,
|
||||
ExecutionModeMaximumRegistersINTEL = 6461,
|
||||
ExecutionModeMaximumRegistersIdINTEL = 6462,
|
||||
ExecutionModeNamedMaximumRegistersINTEL = 6463,
|
||||
ExecutionModeMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -214,6 +235,9 @@ enum StorageClass {
|
||||
StorageClassAtomicCounter = 10,
|
||||
StorageClassImage = 11,
|
||||
StorageClassStorageBuffer = 12,
|
||||
StorageClassTileImageEXT = 4172,
|
||||
StorageClassNodePayloadAMDX = 5068,
|
||||
StorageClassNodeOutputPayloadAMDX = 5076,
|
||||
StorageClassCallableDataKHR = 5328,
|
||||
StorageClassCallableDataNV = 5328,
|
||||
StorageClassIncomingCallableDataKHR = 5329,
|
||||
@@ -244,6 +268,7 @@ enum Dim {
|
||||
DimRect = 4,
|
||||
DimBuffer = 5,
|
||||
DimSubpassData = 6,
|
||||
DimTileImageDataEXT = 4173,
|
||||
DimMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -350,6 +375,8 @@ enum ImageChannelDataType {
|
||||
ImageChannelDataTypeFloat = 14,
|
||||
ImageChannelDataTypeUnormInt24 = 15,
|
||||
ImageChannelDataTypeUnormInt101010_2 = 16,
|
||||
ImageChannelDataTypeUnsignedIntRaw10EXT = 19,
|
||||
ImageChannelDataTypeUnsignedIntRaw12EXT = 20,
|
||||
ImageChannelDataTypeMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -407,8 +434,11 @@ enum FPFastMathModeShift {
|
||||
FPFastMathModeNSZShift = 2,
|
||||
FPFastMathModeAllowRecipShift = 3,
|
||||
FPFastMathModeFastShift = 4,
|
||||
FPFastMathModeAllowContractShift = 16,
|
||||
FPFastMathModeAllowContractFastINTELShift = 16,
|
||||
FPFastMathModeAllowReassocShift = 17,
|
||||
FPFastMathModeAllowReassocINTELShift = 17,
|
||||
FPFastMathModeAllowTransformShift = 18,
|
||||
FPFastMathModeMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -419,8 +449,11 @@ enum FPFastMathModeMask {
|
||||
FPFastMathModeNSZMask = 0x00000004,
|
||||
FPFastMathModeAllowRecipMask = 0x00000008,
|
||||
FPFastMathModeFastMask = 0x00000010,
|
||||
FPFastMathModeAllowContractMask = 0x00010000,
|
||||
FPFastMathModeAllowContractFastINTELMask = 0x00010000,
|
||||
FPFastMathModeAllowReassocMask = 0x00020000,
|
||||
FPFastMathModeAllowReassocINTELMask = 0x00020000,
|
||||
FPFastMathModeAllowTransformMask = 0x00040000,
|
||||
};
|
||||
|
||||
enum FPRoundingMode {
|
||||
@@ -508,7 +541,14 @@ enum Decoration {
|
||||
DecorationMaxByteOffsetId = 47,
|
||||
DecorationNoSignedWrap = 4469,
|
||||
DecorationNoUnsignedWrap = 4470,
|
||||
DecorationWeightTextureQCOM = 4487,
|
||||
DecorationBlockMatchTextureQCOM = 4488,
|
||||
DecorationBlockMatchSamplerQCOM = 4499,
|
||||
DecorationExplicitInterpAMD = 4999,
|
||||
DecorationNodeSharesPayloadLimitsWithAMDX = 5019,
|
||||
DecorationNodeMaxPayloadsAMDX = 5020,
|
||||
DecorationTrackFinishWritingAMDX = 5078,
|
||||
DecorationPayloadNodeNameAMDX = 5091,
|
||||
DecorationOverrideCoverageNV = 5248,
|
||||
DecorationPassthroughNV = 5250,
|
||||
DecorationViewportRelativeNV = 5252,
|
||||
@@ -558,6 +598,9 @@ enum Decoration {
|
||||
DecorationMergeINTEL = 5834,
|
||||
DecorationBankBitsINTEL = 5835,
|
||||
DecorationForcePow2DepthINTEL = 5836,
|
||||
DecorationStridesizeINTEL = 5883,
|
||||
DecorationWordsizeINTEL = 5884,
|
||||
DecorationTrueDualPortINTEL = 5885,
|
||||
DecorationBurstCoalesceINTEL = 5899,
|
||||
DecorationCacheSizeINTEL = 5900,
|
||||
DecorationDontStaticallyCoalesceINTEL = 5901,
|
||||
@@ -576,6 +619,24 @@ enum Decoration {
|
||||
DecorationSingleElementVectorINTEL = 6085,
|
||||
DecorationVectorComputeCallableFunctionINTEL = 6087,
|
||||
DecorationMediaBlockIOINTEL = 6140,
|
||||
DecorationStallFreeINTEL = 6151,
|
||||
DecorationFPMaxErrorDecorationINTEL = 6170,
|
||||
DecorationLatencyControlLabelINTEL = 6172,
|
||||
DecorationLatencyControlConstraintINTEL = 6173,
|
||||
DecorationConduitKernelArgumentINTEL = 6175,
|
||||
DecorationRegisterMapKernelArgumentINTEL = 6176,
|
||||
DecorationMMHostInterfaceAddressWidthINTEL = 6177,
|
||||
DecorationMMHostInterfaceDataWidthINTEL = 6178,
|
||||
DecorationMMHostInterfaceLatencyINTEL = 6179,
|
||||
DecorationMMHostInterfaceReadWriteModeINTEL = 6180,
|
||||
DecorationMMHostInterfaceMaxBurstINTEL = 6181,
|
||||
DecorationMMHostInterfaceWaitRequestINTEL = 6182,
|
||||
DecorationStableKernelArgumentINTEL = 6183,
|
||||
DecorationHostAccessINTEL = 6188,
|
||||
DecorationInitModeINTEL = 6190,
|
||||
DecorationImplementInRegisterMapINTEL = 6191,
|
||||
DecorationCacheControlLoadINTEL = 6442,
|
||||
DecorationCacheControlStoreINTEL = 6443,
|
||||
DecorationMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -651,6 +712,8 @@ enum BuiltIn {
|
||||
BuiltInBaryCoordSmoothSampleAMD = 4997,
|
||||
BuiltInBaryCoordPullModelAMD = 4998,
|
||||
BuiltInFragStencilRefEXT = 5014,
|
||||
BuiltInCoalescedInputCountAMDX = 5021,
|
||||
BuiltInShaderIndexAMDX = 5073,
|
||||
BuiltInViewportMaskNV = 5253,
|
||||
BuiltInSecondaryPositionNV = 5257,
|
||||
BuiltInSecondaryViewportMaskNV = 5258,
|
||||
@@ -703,6 +766,9 @@ enum BuiltIn {
|
||||
BuiltInHitKindKHR = 5333,
|
||||
BuiltInHitKindNV = 5333,
|
||||
BuiltInCurrentRayTimeNV = 5334,
|
||||
BuiltInHitTriangleVertexPositionsKHR = 5335,
|
||||
BuiltInHitMicroTriangleVertexPositionsNV = 5337,
|
||||
BuiltInHitMicroTriangleVertexBarycentricsNV = 5344,
|
||||
BuiltInIncomingRayFlagsKHR = 5351,
|
||||
BuiltInIncomingRayFlagsNV = 5351,
|
||||
BuiltInRayGeometryIndexKHR = 5352,
|
||||
@@ -710,6 +776,8 @@ enum BuiltIn {
|
||||
BuiltInSMCountNV = 5375,
|
||||
BuiltInWarpIDNV = 5376,
|
||||
BuiltInSMIDNV = 5377,
|
||||
BuiltInHitKindFrontFacingMicroTriangleNV = 5405,
|
||||
BuiltInHitKindBackFacingMicroTriangleNV = 5406,
|
||||
BuiltInCullMaskKHR = 6021,
|
||||
BuiltInMax = 0x7fffffff,
|
||||
};
|
||||
@@ -974,6 +1042,9 @@ enum Capability {
|
||||
CapabilityShaderViewportIndex = 70,
|
||||
CapabilityUniformDecoration = 71,
|
||||
CapabilityCoreBuiltinsARM = 4165,
|
||||
CapabilityTileImageColorReadAccessEXT = 4166,
|
||||
CapabilityTileImageDepthReadAccessEXT = 4167,
|
||||
CapabilityTileImageStencilReadAccessEXT = 4168,
|
||||
CapabilityFragmentShadingRateKHR = 4422,
|
||||
CapabilitySubgroupBallotKHR = 4423,
|
||||
CapabilityDrawParameters = 4427,
|
||||
@@ -1005,6 +1076,10 @@ enum Capability {
|
||||
CapabilityRayQueryKHR = 4472,
|
||||
CapabilityRayTraversalPrimitiveCullingKHR = 4478,
|
||||
CapabilityRayTracingKHR = 4479,
|
||||
CapabilityTextureSampleWeightedQCOM = 4484,
|
||||
CapabilityTextureBoxFilterQCOM = 4485,
|
||||
CapabilityTextureBlockMatchQCOM = 4486,
|
||||
CapabilityTextureBlockMatch2QCOM = 4498,
|
||||
CapabilityFloat16ImageAMD = 5008,
|
||||
CapabilityImageGatherBiasLodAMD = 5009,
|
||||
CapabilityFragmentMaskAMD = 5010,
|
||||
@@ -1012,6 +1087,8 @@ enum Capability {
|
||||
CapabilityImageReadWriteLodAMD = 5015,
|
||||
CapabilityInt64ImageEXT = 5016,
|
||||
CapabilityShaderClockKHR = 5055,
|
||||
CapabilityShaderEnqueueAMDX = 5067,
|
||||
CapabilityQuadControlKHR = 5087,
|
||||
CapabilitySampleMaskOverrideCoverageNV = 5249,
|
||||
CapabilityGeometryShaderPassthroughNV = 5251,
|
||||
CapabilityShaderViewportIndexLayerEXT = 5254,
|
||||
@@ -1053,6 +1130,7 @@ enum Capability {
|
||||
CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
||||
CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
|
||||
CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
||||
CapabilityRayTracingPositionFetchKHR = 5336,
|
||||
CapabilityRayTracingNV = 5340,
|
||||
CapabilityRayTracingMotionBlurNV = 5341,
|
||||
CapabilityVulkanMemoryModel = 5345,
|
||||
@@ -1070,9 +1148,14 @@ enum Capability {
|
||||
CapabilityFragmentShaderPixelInterlockEXT = 5378,
|
||||
CapabilityDemoteToHelperInvocation = 5379,
|
||||
CapabilityDemoteToHelperInvocationEXT = 5379,
|
||||
CapabilityDisplacementMicromapNV = 5380,
|
||||
CapabilityRayTracingOpacityMicromapEXT = 5381,
|
||||
CapabilityShaderInvocationReorderNV = 5383,
|
||||
CapabilityBindlessTextureNV = 5390,
|
||||
CapabilityRayQueryPositionFetchKHR = 5391,
|
||||
CapabilityAtomicFloat16VectorNV = 5404,
|
||||
CapabilityRayTracingDisplacementMicromapNV = 5409,
|
||||
CapabilityRawAccessChainsNV = 5414,
|
||||
CapabilitySubgroupShuffleINTEL = 5568,
|
||||
CapabilitySubgroupBufferBlockIOINTEL = 5569,
|
||||
CapabilitySubgroupImageBlockIOINTEL = 5570,
|
||||
@@ -1124,16 +1207,29 @@ enum Capability {
|
||||
CapabilityDotProduct = 6019,
|
||||
CapabilityDotProductKHR = 6019,
|
||||
CapabilityRayCullMaskKHR = 6020,
|
||||
CapabilityCooperativeMatrixKHR = 6022,
|
||||
CapabilityBitInstructions = 6025,
|
||||
CapabilityGroupNonUniformRotateKHR = 6026,
|
||||
CapabilityFloatControls2 = 6029,
|
||||
CapabilityAtomicFloat32AddEXT = 6033,
|
||||
CapabilityAtomicFloat64AddEXT = 6034,
|
||||
CapabilityLongConstantCompositeINTEL = 6089,
|
||||
CapabilityLongCompositesINTEL = 6089,
|
||||
CapabilityOptNoneINTEL = 6094,
|
||||
CapabilityAtomicFloat16AddEXT = 6095,
|
||||
CapabilityDebugInfoModuleINTEL = 6114,
|
||||
CapabilityBFloat16ConversionINTEL = 6115,
|
||||
CapabilitySplitBarrierINTEL = 6141,
|
||||
CapabilityFPGAClusterAttributesV2INTEL = 6150,
|
||||
CapabilityFPGAKernelAttributesv2INTEL = 6161,
|
||||
CapabilityFPMaxErrorINTEL = 6169,
|
||||
CapabilityFPGALatencyControlINTEL = 6171,
|
||||
CapabilityFPGAArgumentInterfacesINTEL = 6174,
|
||||
CapabilityGlobalVariableHostAccessINTEL = 6187,
|
||||
CapabilityGlobalVariableFPGADecorationsINTEL = 6189,
|
||||
CapabilityGroupUniformArithmeticKHR = 6400,
|
||||
CapabilityMaskedGatherScatterINTEL = 6427,
|
||||
CapabilityCacheControlsINTEL = 6441,
|
||||
CapabilityRegisterLimitsINTEL = 6460,
|
||||
CapabilityMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -1240,6 +1336,85 @@ enum PackedVectorFormat {
|
||||
PackedVectorFormatMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum CooperativeMatrixOperandsShift {
|
||||
CooperativeMatrixOperandsMatrixASignedComponentsKHRShift = 0,
|
||||
CooperativeMatrixOperandsMatrixBSignedComponentsKHRShift = 1,
|
||||
CooperativeMatrixOperandsMatrixCSignedComponentsKHRShift = 2,
|
||||
CooperativeMatrixOperandsMatrixResultSignedComponentsKHRShift = 3,
|
||||
CooperativeMatrixOperandsSaturatingAccumulationKHRShift = 4,
|
||||
CooperativeMatrixOperandsMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum CooperativeMatrixOperandsMask {
|
||||
CooperativeMatrixOperandsMaskNone = 0,
|
||||
CooperativeMatrixOperandsMatrixASignedComponentsKHRMask = 0x00000001,
|
||||
CooperativeMatrixOperandsMatrixBSignedComponentsKHRMask = 0x00000002,
|
||||
CooperativeMatrixOperandsMatrixCSignedComponentsKHRMask = 0x00000004,
|
||||
CooperativeMatrixOperandsMatrixResultSignedComponentsKHRMask = 0x00000008,
|
||||
CooperativeMatrixOperandsSaturatingAccumulationKHRMask = 0x00000010,
|
||||
};
|
||||
|
||||
enum CooperativeMatrixLayout {
|
||||
CooperativeMatrixLayoutRowMajorKHR = 0,
|
||||
CooperativeMatrixLayoutColumnMajorKHR = 1,
|
||||
CooperativeMatrixLayoutMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum CooperativeMatrixUse {
|
||||
CooperativeMatrixUseMatrixAKHR = 0,
|
||||
CooperativeMatrixUseMatrixBKHR = 1,
|
||||
CooperativeMatrixUseMatrixAccumulatorKHR = 2,
|
||||
CooperativeMatrixUseMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum InitializationModeQualifier {
|
||||
InitializationModeQualifierInitOnDeviceReprogramINTEL = 0,
|
||||
InitializationModeQualifierInitOnDeviceResetINTEL = 1,
|
||||
InitializationModeQualifierMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum HostAccessQualifier {
|
||||
HostAccessQualifierNoneINTEL = 0,
|
||||
HostAccessQualifierReadINTEL = 1,
|
||||
HostAccessQualifierWriteINTEL = 2,
|
||||
HostAccessQualifierReadWriteINTEL = 3,
|
||||
HostAccessQualifierMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum LoadCacheControl {
|
||||
LoadCacheControlUncachedINTEL = 0,
|
||||
LoadCacheControlCachedINTEL = 1,
|
||||
LoadCacheControlStreamingINTEL = 2,
|
||||
LoadCacheControlInvalidateAfterReadINTEL = 3,
|
||||
LoadCacheControlConstCachedINTEL = 4,
|
||||
LoadCacheControlMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum StoreCacheControl {
|
||||
StoreCacheControlUncachedINTEL = 0,
|
||||
StoreCacheControlWriteThroughINTEL = 1,
|
||||
StoreCacheControlWriteBackINTEL = 2,
|
||||
StoreCacheControlStreamingINTEL = 3,
|
||||
StoreCacheControlMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum NamedMaximumNumberOfRegisters {
|
||||
NamedMaximumNumberOfRegistersAutoINTEL = 0,
|
||||
NamedMaximumNumberOfRegistersMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum RawAccessChainOperandsShift {
|
||||
RawAccessChainOperandsRobustnessPerComponentNVShift = 0,
|
||||
RawAccessChainOperandsRobustnessPerElementNVShift = 1,
|
||||
RawAccessChainOperandsMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum RawAccessChainOperandsMask {
|
||||
RawAccessChainOperandsMaskNone = 0,
|
||||
RawAccessChainOperandsRobustnessPerComponentNVMask = 0x00000001,
|
||||
RawAccessChainOperandsRobustnessPerElementNVMask = 0x00000002,
|
||||
};
|
||||
|
||||
enum Op {
|
||||
OpNop = 0,
|
||||
OpUndef = 1,
|
||||
@@ -1585,6 +1760,9 @@ enum Op {
|
||||
OpPtrEqual = 401,
|
||||
OpPtrNotEqual = 402,
|
||||
OpPtrDiff = 403,
|
||||
OpColorAttachmentReadEXT = 4160,
|
||||
OpDepthAttachmentReadEXT = 4161,
|
||||
OpStencilAttachmentReadEXT = 4162,
|
||||
OpTerminateInvocation = 4416,
|
||||
OpSubgroupBallotKHR = 4421,
|
||||
OpSubgroupFirstInvocationKHR = 4422,
|
||||
@@ -1610,6 +1788,11 @@ enum Op {
|
||||
OpUDotAccSatKHR = 4454,
|
||||
OpSUDotAccSat = 4455,
|
||||
OpSUDotAccSatKHR = 4455,
|
||||
OpTypeCooperativeMatrixKHR = 4456,
|
||||
OpCooperativeMatrixLoadKHR = 4457,
|
||||
OpCooperativeMatrixStoreKHR = 4458,
|
||||
OpCooperativeMatrixMulAddKHR = 4459,
|
||||
OpCooperativeMatrixLengthKHR = 4460,
|
||||
OpTypeRayQueryKHR = 4472,
|
||||
OpRayQueryInitializeKHR = 4473,
|
||||
OpRayQueryTerminateKHR = 4474,
|
||||
@@ -1617,6 +1800,14 @@ enum Op {
|
||||
OpRayQueryConfirmIntersectionKHR = 4476,
|
||||
OpRayQueryProceedKHR = 4477,
|
||||
OpRayQueryGetIntersectionTypeKHR = 4479,
|
||||
OpImageSampleWeightedQCOM = 4480,
|
||||
OpImageBoxFilterQCOM = 4481,
|
||||
OpImageBlockMatchSSDQCOM = 4482,
|
||||
OpImageBlockMatchSADQCOM = 4483,
|
||||
OpImageBlockMatchWindowSSDQCOM = 4500,
|
||||
OpImageBlockMatchWindowSADQCOM = 4501,
|
||||
OpImageBlockMatchGatherSSDQCOM = 4502,
|
||||
OpImageBlockMatchGatherSADQCOM = 4503,
|
||||
OpGroupIAddNonUniformAMD = 5000,
|
||||
OpGroupFAddNonUniformAMD = 5001,
|
||||
OpGroupFMinNonUniformAMD = 5002,
|
||||
@@ -1628,6 +1819,11 @@ enum Op {
|
||||
OpFragmentMaskFetchAMD = 5011,
|
||||
OpFragmentFetchAMD = 5012,
|
||||
OpReadClockKHR = 5056,
|
||||
OpFinalizeNodePayloadsAMDX = 5075,
|
||||
OpFinishWritingNodePayloadAMDX = 5078,
|
||||
OpInitializeNodePayloadsAMDX = 5090,
|
||||
OpGroupNonUniformQuadAllKHR = 5110,
|
||||
OpGroupNonUniformQuadAnyKHR = 5111,
|
||||
OpHitObjectRecordHitMotionNV = 5249,
|
||||
OpHitObjectRecordHitWithIndexMotionNV = 5250,
|
||||
OpHitObjectRecordMissMotionNV = 5251,
|
||||
@@ -1666,6 +1862,8 @@ enum Op {
|
||||
OpSetMeshOutputsEXT = 5295,
|
||||
OpGroupNonUniformPartitionNV = 5296,
|
||||
OpWritePackedPrimitiveIndices4x8NV = 5299,
|
||||
OpFetchMicroTriangleVertexPositionNV = 5300,
|
||||
OpFetchMicroTriangleVertexBarycentricNV = 5301,
|
||||
OpReportIntersectionKHR = 5334,
|
||||
OpReportIntersectionNV = 5334,
|
||||
OpIgnoreIntersectionNV = 5335,
|
||||
@@ -1673,6 +1871,7 @@ enum Op {
|
||||
OpTraceNV = 5337,
|
||||
OpTraceMotionNV = 5338,
|
||||
OpTraceRayMotionNV = 5339,
|
||||
OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
|
||||
OpTypeAccelerationStructureKHR = 5341,
|
||||
OpTypeAccelerationStructureNV = 5341,
|
||||
OpExecuteCallableNV = 5344,
|
||||
@@ -1693,6 +1892,7 @@ enum Op {
|
||||
OpConvertUToSampledImageNV = 5395,
|
||||
OpConvertSampledImageToUNV = 5396,
|
||||
OpSamplerImageAddressingModeNV = 5397,
|
||||
OpRawAccessChainNV = 5398,
|
||||
OpSubgroupShuffleINTEL = 5571,
|
||||
OpSubgroupShuffleDownINTEL = 5572,
|
||||
OpSubgroupShuffleUpINTEL = 5573,
|
||||
@@ -1934,6 +2134,9 @@ enum Op {
|
||||
OpTypeStructContinuedINTEL = 6090,
|
||||
OpConstantCompositeContinuedINTEL = 6091,
|
||||
OpSpecConstantCompositeContinuedINTEL = 6092,
|
||||
OpCompositeConstructContinuedINTEL = 6096,
|
||||
OpConvertFToBF16INTEL = 6116,
|
||||
OpConvertBF16ToFINTEL = 6117,
|
||||
OpControlBarrierArriveINTEL = 6142,
|
||||
OpControlBarrierWaitINTEL = 6143,
|
||||
OpGroupIMulKHR = 6401,
|
||||
@@ -1944,6 +2147,8 @@ enum Op {
|
||||
OpGroupLogicalAndKHR = 6406,
|
||||
OpGroupLogicalOrKHR = 6407,
|
||||
OpGroupLogicalXorKHR = 6408,
|
||||
OpMaskedGatherINTEL = 6428,
|
||||
OpMaskedScatterINTEL = 6429,
|
||||
OpMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -2299,6 +2504,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
|
||||
case OpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case OpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2318,6 +2526,11 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break;
|
||||
case OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
|
||||
case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
|
||||
@@ -2325,6 +2538,14 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleWeightedQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageBlockMatchWindowSSDQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageBlockMatchWindowSADQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageBlockMatchGatherSSDQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageBlockMatchGatherSADQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2336,6 +2557,11 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFinalizeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
|
||||
case OpFinishWritingNodePayloadAMDX: *hasResult = true; *hasResultType = true; break;
|
||||
case OpInitializeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
@@ -2374,12 +2600,15 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpFetchMicroTriangleVertexPositionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFetchMicroTriangleVertexBarycentricNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTraceNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpRayQueryGetIntersectionTriangleVertexPositionsKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
|
||||
case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
|
||||
@@ -2398,6 +2627,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpRawAccessChainNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2637,6 +2867,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpCompositeConstructContinuedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConvertFToBF16INTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConvertBF16ToFINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpControlBarrierWaitINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupIMulKHR: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2647,6 +2880,8 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case OpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpMaskedGatherINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpMaskedScatterINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
}
|
||||
}
|
||||
#endif /* SPV_ENABLE_UTILITY_CODE */
|
||||
@@ -2693,6 +2928,14 @@ inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShad
|
||||
inline FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); }
|
||||
inline FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); }
|
||||
inline CooperativeMatrixOperandsMask operator|(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) | unsigned(b)); }
|
||||
inline CooperativeMatrixOperandsMask operator&(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) & unsigned(b)); }
|
||||
inline CooperativeMatrixOperandsMask operator^(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline CooperativeMatrixOperandsMask operator~(CooperativeMatrixOperandsMask a) { return CooperativeMatrixOperandsMask(~unsigned(a)); }
|
||||
inline RawAccessChainOperandsMask operator|(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) | unsigned(b)); }
|
||||
inline RawAccessChainOperandsMask operator&(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) & unsigned(b)); }
|
||||
inline RawAccessChainOperandsMask operator^(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline RawAccessChainOperandsMask operator~(RawAccessChainOperandsMask a) { return RawAccessChainOperandsMask(~unsigned(a)); }
|
||||
|
||||
} // end namespace spv
|
||||
|
||||
|
||||
+285
-42
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||
// Copyright (c) 2014-2024 The Khronos Group Inc.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and/or associated documentation files (the "Materials"),
|
||||
@@ -69,6 +69,11 @@ enum class SourceLanguage : unsigned {
|
||||
HLSL = 5,
|
||||
CPP_for_OpenCL = 6,
|
||||
SYCL = 7,
|
||||
HERO_C = 8,
|
||||
NZSL = 9,
|
||||
WGSL = 10,
|
||||
Slang = 11,
|
||||
Zig = 12,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -156,6 +161,9 @@ enum class ExecutionMode : unsigned {
|
||||
SubgroupsPerWorkgroupId = 37,
|
||||
LocalSizeId = 38,
|
||||
LocalSizeHintId = 39,
|
||||
NonCoherentColorAttachmentReadEXT = 4169,
|
||||
NonCoherentDepthAttachmentReadEXT = 4170,
|
||||
NonCoherentStencilAttachmentReadEXT = 4171,
|
||||
SubgroupUniformControlFlowKHR = 4421,
|
||||
PostDepthCoverage = 4446,
|
||||
DenormPreserve = 4459,
|
||||
@@ -165,12 +173,19 @@ enum class ExecutionMode : unsigned {
|
||||
RoundingModeRTZ = 4463,
|
||||
EarlyAndLateFragmentTestsAMD = 5017,
|
||||
StencilRefReplacingEXT = 5027,
|
||||
CoalescingAMDX = 5069,
|
||||
MaxNodeRecursionAMDX = 5071,
|
||||
StaticNumWorkgroupsAMDX = 5072,
|
||||
ShaderIndexAMDX = 5073,
|
||||
MaxNumWorkgroupsAMDX = 5077,
|
||||
StencilRefUnchangedFrontAMD = 5079,
|
||||
StencilRefGreaterFrontAMD = 5080,
|
||||
StencilRefLessFrontAMD = 5081,
|
||||
StencilRefUnchangedBackAMD = 5082,
|
||||
StencilRefGreaterBackAMD = 5083,
|
||||
StencilRefLessBackAMD = 5084,
|
||||
QuadDerivativesKHR = 5088,
|
||||
RequireFullQuadsKHR = 5089,
|
||||
OutputLinesEXT = 5269,
|
||||
OutputLinesNV = 5269,
|
||||
OutputPrimitivesEXT = 5270,
|
||||
@@ -195,8 +210,14 @@ enum class ExecutionMode : unsigned {
|
||||
NoGlobalOffsetINTEL = 5895,
|
||||
NumSIMDWorkitemsINTEL = 5896,
|
||||
SchedulerTargetFmaxMhzINTEL = 5903,
|
||||
MaximallyReconvergesKHR = 6023,
|
||||
FPFastMathDefault = 6028,
|
||||
StreamingInterfaceINTEL = 6154,
|
||||
RegisterMapInterfaceINTEL = 6160,
|
||||
NamedBarrierCountINTEL = 6417,
|
||||
MaximumRegistersINTEL = 6461,
|
||||
MaximumRegistersIdINTEL = 6462,
|
||||
NamedMaximumRegistersINTEL = 6463,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -214,6 +235,9 @@ enum class StorageClass : unsigned {
|
||||
AtomicCounter = 10,
|
||||
Image = 11,
|
||||
StorageBuffer = 12,
|
||||
TileImageEXT = 4172,
|
||||
NodePayloadAMDX = 5068,
|
||||
NodeOutputPayloadAMDX = 5076,
|
||||
CallableDataKHR = 5328,
|
||||
CallableDataNV = 5328,
|
||||
IncomingCallableDataKHR = 5329,
|
||||
@@ -244,6 +268,7 @@ enum class Dim : unsigned {
|
||||
Rect = 4,
|
||||
Buffer = 5,
|
||||
SubpassData = 6,
|
||||
TileImageDataEXT = 4173,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -350,6 +375,8 @@ enum class ImageChannelDataType : unsigned {
|
||||
Float = 14,
|
||||
UnormInt24 = 15,
|
||||
UnormInt101010_2 = 16,
|
||||
UnsignedIntRaw10EXT = 19,
|
||||
UnsignedIntRaw12EXT = 20,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -407,8 +434,11 @@ enum class FPFastMathModeShift : unsigned {
|
||||
NSZ = 2,
|
||||
AllowRecip = 3,
|
||||
Fast = 4,
|
||||
AllowContract = 16,
|
||||
AllowContractFastINTEL = 16,
|
||||
AllowReassoc = 17,
|
||||
AllowReassocINTEL = 17,
|
||||
AllowTransform = 18,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -419,8 +449,11 @@ enum class FPFastMathModeMask : unsigned {
|
||||
NSZ = 0x00000004,
|
||||
AllowRecip = 0x00000008,
|
||||
Fast = 0x00000010,
|
||||
AllowContract = 0x00010000,
|
||||
AllowContractFastINTEL = 0x00010000,
|
||||
AllowReassoc = 0x00020000,
|
||||
AllowReassocINTEL = 0x00020000,
|
||||
AllowTransform = 0x00040000,
|
||||
};
|
||||
|
||||
enum class FPRoundingMode : unsigned {
|
||||
@@ -508,7 +541,14 @@ enum class Decoration : unsigned {
|
||||
MaxByteOffsetId = 47,
|
||||
NoSignedWrap = 4469,
|
||||
NoUnsignedWrap = 4470,
|
||||
WeightTextureQCOM = 4487,
|
||||
BlockMatchTextureQCOM = 4488,
|
||||
BlockMatchSamplerQCOM = 4499,
|
||||
ExplicitInterpAMD = 4999,
|
||||
NodeSharesPayloadLimitsWithAMDX = 5019,
|
||||
NodeMaxPayloadsAMDX = 5020,
|
||||
TrackFinishWritingAMDX = 5078,
|
||||
PayloadNodeNameAMDX = 5091,
|
||||
OverrideCoverageNV = 5248,
|
||||
PassthroughNV = 5250,
|
||||
ViewportRelativeNV = 5252,
|
||||
@@ -558,6 +598,9 @@ enum class Decoration : unsigned {
|
||||
MergeINTEL = 5834,
|
||||
BankBitsINTEL = 5835,
|
||||
ForcePow2DepthINTEL = 5836,
|
||||
StridesizeINTEL = 5883,
|
||||
WordsizeINTEL = 5884,
|
||||
TrueDualPortINTEL = 5885,
|
||||
BurstCoalesceINTEL = 5899,
|
||||
CacheSizeINTEL = 5900,
|
||||
DontStaticallyCoalesceINTEL = 5901,
|
||||
@@ -576,6 +619,24 @@ enum class Decoration : unsigned {
|
||||
SingleElementVectorINTEL = 6085,
|
||||
VectorComputeCallableFunctionINTEL = 6087,
|
||||
MediaBlockIOINTEL = 6140,
|
||||
StallFreeINTEL = 6151,
|
||||
FPMaxErrorDecorationINTEL = 6170,
|
||||
LatencyControlLabelINTEL = 6172,
|
||||
LatencyControlConstraintINTEL = 6173,
|
||||
ConduitKernelArgumentINTEL = 6175,
|
||||
RegisterMapKernelArgumentINTEL = 6176,
|
||||
MMHostInterfaceAddressWidthINTEL = 6177,
|
||||
MMHostInterfaceDataWidthINTEL = 6178,
|
||||
MMHostInterfaceLatencyINTEL = 6179,
|
||||
MMHostInterfaceReadWriteModeINTEL = 6180,
|
||||
MMHostInterfaceMaxBurstINTEL = 6181,
|
||||
MMHostInterfaceWaitRequestINTEL = 6182,
|
||||
StableKernelArgumentINTEL = 6183,
|
||||
HostAccessINTEL = 6188,
|
||||
InitModeINTEL = 6190,
|
||||
ImplementInRegisterMapINTEL = 6191,
|
||||
CacheControlLoadINTEL = 6442,
|
||||
CacheControlStoreINTEL = 6443,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -651,6 +712,8 @@ enum class BuiltIn : unsigned {
|
||||
BaryCoordSmoothSampleAMD = 4997,
|
||||
BaryCoordPullModelAMD = 4998,
|
||||
FragStencilRefEXT = 5014,
|
||||
CoalescedInputCountAMDX = 5021,
|
||||
ShaderIndexAMDX = 5073,
|
||||
ViewportMaskNV = 5253,
|
||||
SecondaryPositionNV = 5257,
|
||||
SecondaryViewportMaskNV = 5258,
|
||||
@@ -703,6 +766,9 @@ enum class BuiltIn : unsigned {
|
||||
HitKindKHR = 5333,
|
||||
HitKindNV = 5333,
|
||||
CurrentRayTimeNV = 5334,
|
||||
HitTriangleVertexPositionsKHR = 5335,
|
||||
HitMicroTriangleVertexPositionsNV = 5337,
|
||||
HitMicroTriangleVertexBarycentricsNV = 5344,
|
||||
IncomingRayFlagsKHR = 5351,
|
||||
IncomingRayFlagsNV = 5351,
|
||||
RayGeometryIndexKHR = 5352,
|
||||
@@ -710,6 +776,8 @@ enum class BuiltIn : unsigned {
|
||||
SMCountNV = 5375,
|
||||
WarpIDNV = 5376,
|
||||
SMIDNV = 5377,
|
||||
HitKindFrontFacingMicroTriangleNV = 5405,
|
||||
HitKindBackFacingMicroTriangleNV = 5406,
|
||||
CullMaskKHR = 6021,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
@@ -974,6 +1042,9 @@ enum class Capability : unsigned {
|
||||
ShaderViewportIndex = 70,
|
||||
UniformDecoration = 71,
|
||||
CoreBuiltinsARM = 4165,
|
||||
TileImageColorReadAccessEXT = 4166,
|
||||
TileImageDepthReadAccessEXT = 4167,
|
||||
TileImageStencilReadAccessEXT = 4168,
|
||||
FragmentShadingRateKHR = 4422,
|
||||
SubgroupBallotKHR = 4423,
|
||||
DrawParameters = 4427,
|
||||
@@ -1005,6 +1076,10 @@ enum class Capability : unsigned {
|
||||
RayQueryKHR = 4472,
|
||||
RayTraversalPrimitiveCullingKHR = 4478,
|
||||
RayTracingKHR = 4479,
|
||||
TextureSampleWeightedQCOM = 4484,
|
||||
TextureBoxFilterQCOM = 4485,
|
||||
TextureBlockMatchQCOM = 4486,
|
||||
TextureBlockMatch2QCOM = 4498,
|
||||
Float16ImageAMD = 5008,
|
||||
ImageGatherBiasLodAMD = 5009,
|
||||
FragmentMaskAMD = 5010,
|
||||
@@ -1012,6 +1087,8 @@ enum class Capability : unsigned {
|
||||
ImageReadWriteLodAMD = 5015,
|
||||
Int64ImageEXT = 5016,
|
||||
ShaderClockKHR = 5055,
|
||||
ShaderEnqueueAMDX = 5067,
|
||||
QuadControlKHR = 5087,
|
||||
SampleMaskOverrideCoverageNV = 5249,
|
||||
GeometryShaderPassthroughNV = 5251,
|
||||
ShaderViewportIndexLayerEXT = 5254,
|
||||
@@ -1053,6 +1130,7 @@ enum class Capability : unsigned {
|
||||
UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
||||
StorageTexelBufferArrayNonUniformIndexing = 5312,
|
||||
StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
||||
RayTracingPositionFetchKHR = 5336,
|
||||
RayTracingNV = 5340,
|
||||
RayTracingMotionBlurNV = 5341,
|
||||
VulkanMemoryModel = 5345,
|
||||
@@ -1070,9 +1148,14 @@ enum class Capability : unsigned {
|
||||
FragmentShaderPixelInterlockEXT = 5378,
|
||||
DemoteToHelperInvocation = 5379,
|
||||
DemoteToHelperInvocationEXT = 5379,
|
||||
DisplacementMicromapNV = 5380,
|
||||
RayTracingOpacityMicromapEXT = 5381,
|
||||
ShaderInvocationReorderNV = 5383,
|
||||
BindlessTextureNV = 5390,
|
||||
RayQueryPositionFetchKHR = 5391,
|
||||
AtomicFloat16VectorNV = 5404,
|
||||
RayTracingDisplacementMicromapNV = 5409,
|
||||
RawAccessChainsNV = 5414,
|
||||
SubgroupShuffleINTEL = 5568,
|
||||
SubgroupBufferBlockIOINTEL = 5569,
|
||||
SubgroupImageBlockIOINTEL = 5570,
|
||||
@@ -1124,16 +1207,29 @@ enum class Capability : unsigned {
|
||||
DotProduct = 6019,
|
||||
DotProductKHR = 6019,
|
||||
RayCullMaskKHR = 6020,
|
||||
CooperativeMatrixKHR = 6022,
|
||||
BitInstructions = 6025,
|
||||
GroupNonUniformRotateKHR = 6026,
|
||||
FloatControls2 = 6029,
|
||||
AtomicFloat32AddEXT = 6033,
|
||||
AtomicFloat64AddEXT = 6034,
|
||||
LongConstantCompositeINTEL = 6089,
|
||||
LongCompositesINTEL = 6089,
|
||||
OptNoneINTEL = 6094,
|
||||
AtomicFloat16AddEXT = 6095,
|
||||
DebugInfoModuleINTEL = 6114,
|
||||
BFloat16ConversionINTEL = 6115,
|
||||
SplitBarrierINTEL = 6141,
|
||||
FPGAClusterAttributesV2INTEL = 6150,
|
||||
FPGAKernelAttributesv2INTEL = 6161,
|
||||
FPMaxErrorINTEL = 6169,
|
||||
FPGALatencyControlINTEL = 6171,
|
||||
FPGAArgumentInterfacesINTEL = 6174,
|
||||
GlobalVariableHostAccessINTEL = 6187,
|
||||
GlobalVariableFPGADecorationsINTEL = 6189,
|
||||
GroupUniformArithmeticKHR = 6400,
|
||||
MaskedGatherScatterINTEL = 6427,
|
||||
CacheControlsINTEL = 6441,
|
||||
RegisterLimitsINTEL = 6460,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -1240,6 +1336,85 @@ enum class PackedVectorFormat : unsigned {
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum class CooperativeMatrixOperandsShift : unsigned {
|
||||
MatrixASignedComponentsKHR = 0,
|
||||
MatrixBSignedComponentsKHR = 1,
|
||||
MatrixCSignedComponentsKHR = 2,
|
||||
MatrixResultSignedComponentsKHR = 3,
|
||||
SaturatingAccumulationKHR = 4,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum class CooperativeMatrixOperandsMask : unsigned {
|
||||
MaskNone = 0,
|
||||
MatrixASignedComponentsKHR = 0x00000001,
|
||||
MatrixBSignedComponentsKHR = 0x00000002,
|
||||
MatrixCSignedComponentsKHR = 0x00000004,
|
||||
MatrixResultSignedComponentsKHR = 0x00000008,
|
||||
SaturatingAccumulationKHR = 0x00000010,
|
||||
};
|
||||
|
||||
enum class CooperativeMatrixLayout : unsigned {
|
||||
RowMajorKHR = 0,
|
||||
ColumnMajorKHR = 1,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum class CooperativeMatrixUse : unsigned {
|
||||
MatrixAKHR = 0,
|
||||
MatrixBKHR = 1,
|
||||
MatrixAccumulatorKHR = 2,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum class InitializationModeQualifier : unsigned {
|
||||
InitOnDeviceReprogramINTEL = 0,
|
||||
InitOnDeviceResetINTEL = 1,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum class HostAccessQualifier : unsigned {
|
||||
NoneINTEL = 0,
|
||||
ReadINTEL = 1,
|
||||
WriteINTEL = 2,
|
||||
ReadWriteINTEL = 3,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum class LoadCacheControl : unsigned {
|
||||
UncachedINTEL = 0,
|
||||
CachedINTEL = 1,
|
||||
StreamingINTEL = 2,
|
||||
InvalidateAfterReadINTEL = 3,
|
||||
ConstCachedINTEL = 4,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum class StoreCacheControl : unsigned {
|
||||
UncachedINTEL = 0,
|
||||
WriteThroughINTEL = 1,
|
||||
WriteBackINTEL = 2,
|
||||
StreamingINTEL = 3,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum class NamedMaximumNumberOfRegisters : unsigned {
|
||||
AutoINTEL = 0,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum class RawAccessChainOperandsShift : unsigned {
|
||||
RobustnessPerComponentNV = 0,
|
||||
RobustnessPerElementNV = 1,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
enum class RawAccessChainOperandsMask : unsigned {
|
||||
MaskNone = 0,
|
||||
RobustnessPerComponentNV = 0x00000001,
|
||||
RobustnessPerElementNV = 0x00000002,
|
||||
};
|
||||
|
||||
enum class Op : unsigned {
|
||||
OpNop = 0,
|
||||
OpUndef = 1,
|
||||
@@ -1585,6 +1760,9 @@ enum class Op : unsigned {
|
||||
OpPtrEqual = 401,
|
||||
OpPtrNotEqual = 402,
|
||||
OpPtrDiff = 403,
|
||||
OpColorAttachmentReadEXT = 4160,
|
||||
OpDepthAttachmentReadEXT = 4161,
|
||||
OpStencilAttachmentReadEXT = 4162,
|
||||
OpTerminateInvocation = 4416,
|
||||
OpSubgroupBallotKHR = 4421,
|
||||
OpSubgroupFirstInvocationKHR = 4422,
|
||||
@@ -1610,6 +1788,11 @@ enum class Op : unsigned {
|
||||
OpUDotAccSatKHR = 4454,
|
||||
OpSUDotAccSat = 4455,
|
||||
OpSUDotAccSatKHR = 4455,
|
||||
OpTypeCooperativeMatrixKHR = 4456,
|
||||
OpCooperativeMatrixLoadKHR = 4457,
|
||||
OpCooperativeMatrixStoreKHR = 4458,
|
||||
OpCooperativeMatrixMulAddKHR = 4459,
|
||||
OpCooperativeMatrixLengthKHR = 4460,
|
||||
OpTypeRayQueryKHR = 4472,
|
||||
OpRayQueryInitializeKHR = 4473,
|
||||
OpRayQueryTerminateKHR = 4474,
|
||||
@@ -1617,6 +1800,14 @@ enum class Op : unsigned {
|
||||
OpRayQueryConfirmIntersectionKHR = 4476,
|
||||
OpRayQueryProceedKHR = 4477,
|
||||
OpRayQueryGetIntersectionTypeKHR = 4479,
|
||||
OpImageSampleWeightedQCOM = 4480,
|
||||
OpImageBoxFilterQCOM = 4481,
|
||||
OpImageBlockMatchSSDQCOM = 4482,
|
||||
OpImageBlockMatchSADQCOM = 4483,
|
||||
OpImageBlockMatchWindowSSDQCOM = 4500,
|
||||
OpImageBlockMatchWindowSADQCOM = 4501,
|
||||
OpImageBlockMatchGatherSSDQCOM = 4502,
|
||||
OpImageBlockMatchGatherSADQCOM = 4503,
|
||||
OpGroupIAddNonUniformAMD = 5000,
|
||||
OpGroupFAddNonUniformAMD = 5001,
|
||||
OpGroupFMinNonUniformAMD = 5002,
|
||||
@@ -1628,6 +1819,11 @@ enum class Op : unsigned {
|
||||
OpFragmentMaskFetchAMD = 5011,
|
||||
OpFragmentFetchAMD = 5012,
|
||||
OpReadClockKHR = 5056,
|
||||
OpFinalizeNodePayloadsAMDX = 5075,
|
||||
OpFinishWritingNodePayloadAMDX = 5078,
|
||||
OpInitializeNodePayloadsAMDX = 5090,
|
||||
OpGroupNonUniformQuadAllKHR = 5110,
|
||||
OpGroupNonUniformQuadAnyKHR = 5111,
|
||||
OpHitObjectRecordHitMotionNV = 5249,
|
||||
OpHitObjectRecordHitWithIndexMotionNV = 5250,
|
||||
OpHitObjectRecordMissMotionNV = 5251,
|
||||
@@ -1666,6 +1862,8 @@ enum class Op : unsigned {
|
||||
OpSetMeshOutputsEXT = 5295,
|
||||
OpGroupNonUniformPartitionNV = 5296,
|
||||
OpWritePackedPrimitiveIndices4x8NV = 5299,
|
||||
OpFetchMicroTriangleVertexPositionNV = 5300,
|
||||
OpFetchMicroTriangleVertexBarycentricNV = 5301,
|
||||
OpReportIntersectionKHR = 5334,
|
||||
OpReportIntersectionNV = 5334,
|
||||
OpIgnoreIntersectionNV = 5335,
|
||||
@@ -1673,6 +1871,7 @@ enum class Op : unsigned {
|
||||
OpTraceNV = 5337,
|
||||
OpTraceMotionNV = 5338,
|
||||
OpTraceRayMotionNV = 5339,
|
||||
OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
|
||||
OpTypeAccelerationStructureKHR = 5341,
|
||||
OpTypeAccelerationStructureNV = 5341,
|
||||
OpExecuteCallableNV = 5344,
|
||||
@@ -1693,6 +1892,7 @@ enum class Op : unsigned {
|
||||
OpConvertUToSampledImageNV = 5395,
|
||||
OpConvertSampledImageToUNV = 5396,
|
||||
OpSamplerImageAddressingModeNV = 5397,
|
||||
OpRawAccessChainNV = 5398,
|
||||
OpSubgroupShuffleINTEL = 5571,
|
||||
OpSubgroupShuffleDownINTEL = 5572,
|
||||
OpSubgroupShuffleUpINTEL = 5573,
|
||||
@@ -1934,6 +2134,9 @@ enum class Op : unsigned {
|
||||
OpTypeStructContinuedINTEL = 6090,
|
||||
OpConstantCompositeContinuedINTEL = 6091,
|
||||
OpSpecConstantCompositeContinuedINTEL = 6092,
|
||||
OpCompositeConstructContinuedINTEL = 6096,
|
||||
OpConvertFToBF16INTEL = 6116,
|
||||
OpConvertBF16ToFINTEL = 6117,
|
||||
OpControlBarrierArriveINTEL = 6142,
|
||||
OpControlBarrierWaitINTEL = 6143,
|
||||
OpGroupIMulKHR = 6401,
|
||||
@@ -1944,6 +2147,8 @@ enum class Op : unsigned {
|
||||
OpGroupLogicalAndKHR = 6406,
|
||||
OpGroupLogicalOrKHR = 6407,
|
||||
OpGroupLogicalXorKHR = 6408,
|
||||
OpMaskedGatherINTEL = 6428,
|
||||
OpMaskedScatterINTEL = 6429,
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
@@ -2299,6 +2504,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case Op::OpPtrEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpPtrDiff: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2318,6 +2526,11 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case Op::OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
|
||||
@@ -2325,6 +2538,14 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case Op::OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSampleWeightedQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageBlockMatchWindowSSDQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageBlockMatchWindowSADQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageBlockMatchGatherSSDQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageBlockMatchGatherSADQCOM: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2336,6 +2557,11 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case Op::OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFinalizeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpFinishWritingNodePayloadAMDX: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpInitializeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
@@ -2374,12 +2600,15 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case Op::OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpFetchMicroTriangleVertexPositionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFetchMicroTriangleVertexBarycentricNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpTraceNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpRayQueryGetIntersectionTriangleVertexPositionsKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
|
||||
@@ -2398,6 +2627,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case Op::OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpRawAccessChainNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2637,6 +2867,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case Op::OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpCompositeConstructContinuedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConvertFToBF16INTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConvertBF16ToFINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpControlBarrierWaitINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpGroupIMulKHR: *hasResult = true; *hasResultType = true; break;
|
||||
@@ -2647,52 +2880,62 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
case Op::OpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpMaskedGatherINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpMaskedScatterINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
}
|
||||
}
|
||||
#endif /* SPV_ENABLE_UTILITY_CODE */
|
||||
|
||||
// Overload bitwise operators for mask bit combining
|
||||
|
||||
inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
|
||||
inline ImageOperandsMask operator&(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) & unsigned(b)); }
|
||||
inline ImageOperandsMask operator^(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline ImageOperandsMask operator~(ImageOperandsMask a) { return ImageOperandsMask(~unsigned(a)); }
|
||||
inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
|
||||
inline FPFastMathModeMask operator&(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) & unsigned(b)); }
|
||||
inline FPFastMathModeMask operator^(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline FPFastMathModeMask operator~(FPFastMathModeMask a) { return FPFastMathModeMask(~unsigned(a)); }
|
||||
inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
|
||||
inline SelectionControlMask operator&(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) & unsigned(b)); }
|
||||
inline SelectionControlMask operator^(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline SelectionControlMask operator~(SelectionControlMask a) { return SelectionControlMask(~unsigned(a)); }
|
||||
inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
|
||||
inline LoopControlMask operator&(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) & unsigned(b)); }
|
||||
inline LoopControlMask operator^(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline LoopControlMask operator~(LoopControlMask a) { return LoopControlMask(~unsigned(a)); }
|
||||
inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
|
||||
inline FunctionControlMask operator&(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) & unsigned(b)); }
|
||||
inline FunctionControlMask operator^(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline FunctionControlMask operator~(FunctionControlMask a) { return FunctionControlMask(~unsigned(a)); }
|
||||
inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
|
||||
inline MemorySemanticsMask operator&(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) & unsigned(b)); }
|
||||
inline MemorySemanticsMask operator^(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline MemorySemanticsMask operator~(MemorySemanticsMask a) { return MemorySemanticsMask(~unsigned(a)); }
|
||||
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
|
||||
inline MemoryAccessMask operator&(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) & unsigned(b)); }
|
||||
inline MemoryAccessMask operator^(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline MemoryAccessMask operator~(MemoryAccessMask a) { return MemoryAccessMask(~unsigned(a)); }
|
||||
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
|
||||
inline KernelProfilingInfoMask operator&(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) & unsigned(b)); }
|
||||
inline KernelProfilingInfoMask operator^(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline KernelProfilingInfoMask operator~(KernelProfilingInfoMask a) { return KernelProfilingInfoMask(~unsigned(a)); }
|
||||
inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
|
||||
inline RayFlagsMask operator&(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) & unsigned(b)); }
|
||||
inline RayFlagsMask operator^(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline RayFlagsMask operator~(RayFlagsMask a) { return RayFlagsMask(~unsigned(a)); }
|
||||
inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
|
||||
inline FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); }
|
||||
inline FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); }
|
||||
inline FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); }
|
||||
constexpr ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr ImageOperandsMask operator&(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr ImageOperandsMask operator^(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr ImageOperandsMask operator~(ImageOperandsMask a) { return ImageOperandsMask(~unsigned(a)); }
|
||||
constexpr FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr FPFastMathModeMask operator&(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr FPFastMathModeMask operator^(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr FPFastMathModeMask operator~(FPFastMathModeMask a) { return FPFastMathModeMask(~unsigned(a)); }
|
||||
constexpr SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr SelectionControlMask operator&(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr SelectionControlMask operator^(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr SelectionControlMask operator~(SelectionControlMask a) { return SelectionControlMask(~unsigned(a)); }
|
||||
constexpr LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr LoopControlMask operator&(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr LoopControlMask operator^(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr LoopControlMask operator~(LoopControlMask a) { return LoopControlMask(~unsigned(a)); }
|
||||
constexpr FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr FunctionControlMask operator&(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr FunctionControlMask operator^(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr FunctionControlMask operator~(FunctionControlMask a) { return FunctionControlMask(~unsigned(a)); }
|
||||
constexpr MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr MemorySemanticsMask operator&(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr MemorySemanticsMask operator^(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr MemorySemanticsMask operator~(MemorySemanticsMask a) { return MemorySemanticsMask(~unsigned(a)); }
|
||||
constexpr MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr MemoryAccessMask operator&(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr MemoryAccessMask operator^(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr MemoryAccessMask operator~(MemoryAccessMask a) { return MemoryAccessMask(~unsigned(a)); }
|
||||
constexpr KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr KernelProfilingInfoMask operator&(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr KernelProfilingInfoMask operator^(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr KernelProfilingInfoMask operator~(KernelProfilingInfoMask a) { return KernelProfilingInfoMask(~unsigned(a)); }
|
||||
constexpr RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr RayFlagsMask operator&(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr RayFlagsMask operator^(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr RayFlagsMask operator~(RayFlagsMask a) { return RayFlagsMask(~unsigned(a)); }
|
||||
constexpr FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); }
|
||||
constexpr CooperativeMatrixOperandsMask operator|(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr CooperativeMatrixOperandsMask operator&(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr CooperativeMatrixOperandsMask operator^(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr CooperativeMatrixOperandsMask operator~(CooperativeMatrixOperandsMask a) { return CooperativeMatrixOperandsMask(~unsigned(a)); }
|
||||
constexpr RawAccessChainOperandsMask operator|(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) | unsigned(b)); }
|
||||
constexpr RawAccessChainOperandsMask operator&(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) & unsigned(b)); }
|
||||
constexpr RawAccessChainOperandsMask operator^(RawAccessChainOperandsMask a, RawAccessChainOperandsMask b) { return RawAccessChainOperandsMask(unsigned(a) ^ unsigned(b)); }
|
||||
constexpr RawAccessChainOperandsMask operator~(RawAccessChainOperandsMask a) { return RawAccessChainOperandsMask(~unsigned(a)); }
|
||||
|
||||
} // end namespace spv
|
||||
|
||||
|
||||
+224
-10
@@ -6,7 +6,7 @@
|
||||
"Comment":
|
||||
[
|
||||
[
|
||||
"Copyright (c) 2014-2020 The Khronos Group Inc.",
|
||||
"Copyright (c) 2014-2024 The Khronos Group Inc.",
|
||||
"",
|
||||
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
||||
"of this software and/or associated documentation files (the \"Materials\"),",
|
||||
@@ -75,7 +75,12 @@
|
||||
"OpenCL_CPP": 4,
|
||||
"HLSL": 5,
|
||||
"CPP_for_OpenCL": 6,
|
||||
"SYCL": 7
|
||||
"SYCL": 7,
|
||||
"HERO_C": 8,
|
||||
"NZSL": 9,
|
||||
"WGSL": 10,
|
||||
"Slang": 11,
|
||||
"Zig": 12
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -175,6 +180,9 @@
|
||||
"SubgroupsPerWorkgroupId": 37,
|
||||
"LocalSizeId": 38,
|
||||
"LocalSizeHintId": 39,
|
||||
"NonCoherentColorAttachmentReadEXT": 4169,
|
||||
"NonCoherentDepthAttachmentReadEXT": 4170,
|
||||
"NonCoherentStencilAttachmentReadEXT": 4171,
|
||||
"SubgroupUniformControlFlowKHR": 4421,
|
||||
"PostDepthCoverage": 4446,
|
||||
"DenormPreserve": 4459,
|
||||
@@ -184,12 +192,19 @@
|
||||
"RoundingModeRTZ": 4463,
|
||||
"EarlyAndLateFragmentTestsAMD": 5017,
|
||||
"StencilRefReplacingEXT": 5027,
|
||||
"CoalescingAMDX": 5069,
|
||||
"MaxNodeRecursionAMDX": 5071,
|
||||
"StaticNumWorkgroupsAMDX": 5072,
|
||||
"ShaderIndexAMDX": 5073,
|
||||
"MaxNumWorkgroupsAMDX": 5077,
|
||||
"StencilRefUnchangedFrontAMD": 5079,
|
||||
"StencilRefGreaterFrontAMD": 5080,
|
||||
"StencilRefLessFrontAMD": 5081,
|
||||
"StencilRefUnchangedBackAMD": 5082,
|
||||
"StencilRefGreaterBackAMD": 5083,
|
||||
"StencilRefLessBackAMD": 5084,
|
||||
"QuadDerivativesKHR": 5088,
|
||||
"RequireFullQuadsKHR": 5089,
|
||||
"OutputLinesEXT": 5269,
|
||||
"OutputLinesNV": 5269,
|
||||
"OutputPrimitivesEXT": 5270,
|
||||
@@ -214,8 +229,14 @@
|
||||
"NoGlobalOffsetINTEL": 5895,
|
||||
"NumSIMDWorkitemsINTEL": 5896,
|
||||
"SchedulerTargetFmaxMhzINTEL": 5903,
|
||||
"MaximallyReconvergesKHR": 6023,
|
||||
"FPFastMathDefault": 6028,
|
||||
"StreamingInterfaceINTEL": 6154,
|
||||
"NamedBarrierCountINTEL": 6417
|
||||
"RegisterMapInterfaceINTEL": 6160,
|
||||
"NamedBarrierCountINTEL": 6417,
|
||||
"MaximumRegistersINTEL": 6461,
|
||||
"MaximumRegistersIdINTEL": 6462,
|
||||
"NamedMaximumRegistersINTEL": 6463
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -236,6 +257,9 @@
|
||||
"AtomicCounter": 10,
|
||||
"Image": 11,
|
||||
"StorageBuffer": 12,
|
||||
"TileImageEXT": 4172,
|
||||
"NodePayloadAMDX": 5068,
|
||||
"NodeOutputPayloadAMDX": 5076,
|
||||
"CallableDataKHR": 5328,
|
||||
"CallableDataNV": 5328,
|
||||
"IncomingCallableDataKHR": 5329,
|
||||
@@ -268,7 +292,8 @@
|
||||
"Cube": 3,
|
||||
"Rect": 4,
|
||||
"Buffer": 5,
|
||||
"SubpassData": 6
|
||||
"SubpassData": 6,
|
||||
"TileImageDataEXT": 4173
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -389,7 +414,9 @@
|
||||
"HalfFloat": 13,
|
||||
"Float": 14,
|
||||
"UnormInt24": 15,
|
||||
"UnormInt101010_2": 16
|
||||
"UnormInt101010_2": 16,
|
||||
"UnsignedIntRaw10EXT": 19,
|
||||
"UnsignedIntRaw12EXT": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -429,8 +456,11 @@
|
||||
"NSZ": 2,
|
||||
"AllowRecip": 3,
|
||||
"Fast": 4,
|
||||
"AllowContract": 16,
|
||||
"AllowContractFastINTEL": 16,
|
||||
"AllowReassocINTEL": 17
|
||||
"AllowReassoc": 17,
|
||||
"AllowReassocINTEL": 17,
|
||||
"AllowTransform": 18
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -534,7 +564,14 @@
|
||||
"MaxByteOffsetId": 47,
|
||||
"NoSignedWrap": 4469,
|
||||
"NoUnsignedWrap": 4470,
|
||||
"WeightTextureQCOM": 4487,
|
||||
"BlockMatchTextureQCOM": 4488,
|
||||
"BlockMatchSamplerQCOM": 4499,
|
||||
"ExplicitInterpAMD": 4999,
|
||||
"NodeSharesPayloadLimitsWithAMDX": 5019,
|
||||
"NodeMaxPayloadsAMDX": 5020,
|
||||
"TrackFinishWritingAMDX": 5078,
|
||||
"PayloadNodeNameAMDX": 5091,
|
||||
"OverrideCoverageNV": 5248,
|
||||
"PassthroughNV": 5250,
|
||||
"ViewportRelativeNV": 5252,
|
||||
@@ -584,6 +621,9 @@
|
||||
"MergeINTEL": 5834,
|
||||
"BankBitsINTEL": 5835,
|
||||
"ForcePow2DepthINTEL": 5836,
|
||||
"StridesizeINTEL": 5883,
|
||||
"WordsizeINTEL": 5884,
|
||||
"TrueDualPortINTEL": 5885,
|
||||
"BurstCoalesceINTEL": 5899,
|
||||
"CacheSizeINTEL": 5900,
|
||||
"DontStaticallyCoalesceINTEL": 5901,
|
||||
@@ -601,7 +641,25 @@
|
||||
"FunctionFloatingPointModeINTEL": 6080,
|
||||
"SingleElementVectorINTEL": 6085,
|
||||
"VectorComputeCallableFunctionINTEL": 6087,
|
||||
"MediaBlockIOINTEL": 6140
|
||||
"MediaBlockIOINTEL": 6140,
|
||||
"StallFreeINTEL": 6151,
|
||||
"FPMaxErrorDecorationINTEL": 6170,
|
||||
"LatencyControlLabelINTEL": 6172,
|
||||
"LatencyControlConstraintINTEL": 6173,
|
||||
"ConduitKernelArgumentINTEL": 6175,
|
||||
"RegisterMapKernelArgumentINTEL": 6176,
|
||||
"MMHostInterfaceAddressWidthINTEL": 6177,
|
||||
"MMHostInterfaceDataWidthINTEL": 6178,
|
||||
"MMHostInterfaceLatencyINTEL": 6179,
|
||||
"MMHostInterfaceReadWriteModeINTEL": 6180,
|
||||
"MMHostInterfaceMaxBurstINTEL": 6181,
|
||||
"MMHostInterfaceWaitRequestINTEL": 6182,
|
||||
"StableKernelArgumentINTEL": 6183,
|
||||
"HostAccessINTEL": 6188,
|
||||
"InitModeINTEL": 6190,
|
||||
"ImplementInRegisterMapINTEL": 6191,
|
||||
"CacheControlLoadINTEL": 6442,
|
||||
"CacheControlStoreINTEL": 6443
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -680,6 +738,8 @@
|
||||
"BaryCoordSmoothSampleAMD": 4997,
|
||||
"BaryCoordPullModelAMD": 4998,
|
||||
"FragStencilRefEXT": 5014,
|
||||
"CoalescedInputCountAMDX": 5021,
|
||||
"ShaderIndexAMDX": 5073,
|
||||
"ViewportMaskNV": 5253,
|
||||
"SecondaryPositionNV": 5257,
|
||||
"SecondaryViewportMaskNV": 5258,
|
||||
@@ -732,6 +792,9 @@
|
||||
"HitKindKHR": 5333,
|
||||
"HitKindNV": 5333,
|
||||
"CurrentRayTimeNV": 5334,
|
||||
"HitTriangleVertexPositionsKHR": 5335,
|
||||
"HitMicroTriangleVertexPositionsNV": 5337,
|
||||
"HitMicroTriangleVertexBarycentricsNV": 5344,
|
||||
"IncomingRayFlagsKHR": 5351,
|
||||
"IncomingRayFlagsNV": 5351,
|
||||
"RayGeometryIndexKHR": 5352,
|
||||
@@ -739,6 +802,8 @@
|
||||
"SMCountNV": 5375,
|
||||
"WarpIDNV": 5376,
|
||||
"SMIDNV": 5377,
|
||||
"HitKindFrontFacingMicroTriangleNV": 5405,
|
||||
"HitKindBackFacingMicroTriangleNV": 5406,
|
||||
"CullMaskKHR": 6021
|
||||
}
|
||||
},
|
||||
@@ -954,6 +1019,9 @@
|
||||
"ShaderViewportIndex": 70,
|
||||
"UniformDecoration": 71,
|
||||
"CoreBuiltinsARM": 4165,
|
||||
"TileImageColorReadAccessEXT": 4166,
|
||||
"TileImageDepthReadAccessEXT": 4167,
|
||||
"TileImageStencilReadAccessEXT": 4168,
|
||||
"FragmentShadingRateKHR": 4422,
|
||||
"SubgroupBallotKHR": 4423,
|
||||
"DrawParameters": 4427,
|
||||
@@ -985,6 +1053,10 @@
|
||||
"RayQueryKHR": 4472,
|
||||
"RayTraversalPrimitiveCullingKHR": 4478,
|
||||
"RayTracingKHR": 4479,
|
||||
"TextureSampleWeightedQCOM": 4484,
|
||||
"TextureBoxFilterQCOM": 4485,
|
||||
"TextureBlockMatchQCOM": 4486,
|
||||
"TextureBlockMatch2QCOM": 4498,
|
||||
"Float16ImageAMD": 5008,
|
||||
"ImageGatherBiasLodAMD": 5009,
|
||||
"FragmentMaskAMD": 5010,
|
||||
@@ -992,6 +1064,8 @@
|
||||
"ImageReadWriteLodAMD": 5015,
|
||||
"Int64ImageEXT": 5016,
|
||||
"ShaderClockKHR": 5055,
|
||||
"ShaderEnqueueAMDX": 5067,
|
||||
"QuadControlKHR": 5087,
|
||||
"SampleMaskOverrideCoverageNV": 5249,
|
||||
"GeometryShaderPassthroughNV": 5251,
|
||||
"ShaderViewportIndexLayerEXT": 5254,
|
||||
@@ -1033,6 +1107,7 @@
|
||||
"UniformTexelBufferArrayNonUniformIndexingEXT": 5311,
|
||||
"StorageTexelBufferArrayNonUniformIndexing": 5312,
|
||||
"StorageTexelBufferArrayNonUniformIndexingEXT": 5312,
|
||||
"RayTracingPositionFetchKHR": 5336,
|
||||
"RayTracingNV": 5340,
|
||||
"RayTracingMotionBlurNV": 5341,
|
||||
"VulkanMemoryModel": 5345,
|
||||
@@ -1050,9 +1125,14 @@
|
||||
"FragmentShaderPixelInterlockEXT": 5378,
|
||||
"DemoteToHelperInvocation": 5379,
|
||||
"DemoteToHelperInvocationEXT": 5379,
|
||||
"DisplacementMicromapNV": 5380,
|
||||
"RayTracingOpacityMicromapEXT": 5381,
|
||||
"ShaderInvocationReorderNV": 5383,
|
||||
"BindlessTextureNV": 5390,
|
||||
"RayQueryPositionFetchKHR": 5391,
|
||||
"AtomicFloat16VectorNV": 5404,
|
||||
"RayTracingDisplacementMicromapNV": 5409,
|
||||
"RawAccessChainsNV": 5414,
|
||||
"SubgroupShuffleINTEL": 5568,
|
||||
"SubgroupBufferBlockIOINTEL": 5569,
|
||||
"SubgroupImageBlockIOINTEL": 5570,
|
||||
@@ -1104,16 +1184,29 @@
|
||||
"DotProduct": 6019,
|
||||
"DotProductKHR": 6019,
|
||||
"RayCullMaskKHR": 6020,
|
||||
"CooperativeMatrixKHR": 6022,
|
||||
"BitInstructions": 6025,
|
||||
"GroupNonUniformRotateKHR": 6026,
|
||||
"FloatControls2": 6029,
|
||||
"AtomicFloat32AddEXT": 6033,
|
||||
"AtomicFloat64AddEXT": 6034,
|
||||
"LongConstantCompositeINTEL": 6089,
|
||||
"LongCompositesINTEL": 6089,
|
||||
"OptNoneINTEL": 6094,
|
||||
"AtomicFloat16AddEXT": 6095,
|
||||
"DebugInfoModuleINTEL": 6114,
|
||||
"BFloat16ConversionINTEL": 6115,
|
||||
"SplitBarrierINTEL": 6141,
|
||||
"GroupUniformArithmeticKHR": 6400
|
||||
"FPGAClusterAttributesV2INTEL": 6150,
|
||||
"FPGAKernelAttributesv2INTEL": 6161,
|
||||
"FPMaxErrorINTEL": 6169,
|
||||
"FPGALatencyControlINTEL": 6171,
|
||||
"FPGAArgumentInterfacesINTEL": 6174,
|
||||
"GlobalVariableHostAccessINTEL": 6187,
|
||||
"GlobalVariableFPGADecorationsINTEL": 6189,
|
||||
"GroupUniformArithmeticKHR": 6400,
|
||||
"MaskedGatherScatterINTEL": 6427,
|
||||
"CacheControlsINTEL": 6441,
|
||||
"RegisterLimitsINTEL": 6460
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -1226,6 +1319,97 @@
|
||||
"PackedVectorFormat4x8BitKHR": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "CooperativeMatrixOperands",
|
||||
"Type": "Bit",
|
||||
"Values":
|
||||
{
|
||||
"MatrixASignedComponentsKHR": 0,
|
||||
"MatrixBSignedComponentsKHR": 1,
|
||||
"MatrixCSignedComponentsKHR": 2,
|
||||
"MatrixResultSignedComponentsKHR": 3,
|
||||
"SaturatingAccumulationKHR": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "CooperativeMatrixLayout",
|
||||
"Type": "Value",
|
||||
"Values":
|
||||
{
|
||||
"RowMajorKHR": 0,
|
||||
"ColumnMajorKHR": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "CooperativeMatrixUse",
|
||||
"Type": "Value",
|
||||
"Values":
|
||||
{
|
||||
"MatrixAKHR": 0,
|
||||
"MatrixBKHR": 1,
|
||||
"MatrixAccumulatorKHR": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "InitializationModeQualifier",
|
||||
"Type": "Value",
|
||||
"Values":
|
||||
{
|
||||
"InitOnDeviceReprogramINTEL": 0,
|
||||
"InitOnDeviceResetINTEL": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "HostAccessQualifier",
|
||||
"Type": "Value",
|
||||
"Values":
|
||||
{
|
||||
"NoneINTEL": 0,
|
||||
"ReadINTEL": 1,
|
||||
"WriteINTEL": 2,
|
||||
"ReadWriteINTEL": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "LoadCacheControl",
|
||||
"Type": "Value",
|
||||
"Values":
|
||||
{
|
||||
"UncachedINTEL": 0,
|
||||
"CachedINTEL": 1,
|
||||
"StreamingINTEL": 2,
|
||||
"InvalidateAfterReadINTEL": 3,
|
||||
"ConstCachedINTEL": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "StoreCacheControl",
|
||||
"Type": "Value",
|
||||
"Values":
|
||||
{
|
||||
"UncachedINTEL": 0,
|
||||
"WriteThroughINTEL": 1,
|
||||
"WriteBackINTEL": 2,
|
||||
"StreamingINTEL": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "NamedMaximumNumberOfRegisters",
|
||||
"Type": "Value",
|
||||
"Values":
|
||||
{
|
||||
"AutoINTEL": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "RawAccessChainOperands",
|
||||
"Type": "Bit",
|
||||
"Values":
|
||||
{
|
||||
"RobustnessPerComponentNV": 0,
|
||||
"RobustnessPerElementNV": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Name": "Op",
|
||||
"Type": "Value",
|
||||
@@ -1575,6 +1759,9 @@
|
||||
"OpPtrEqual": 401,
|
||||
"OpPtrNotEqual": 402,
|
||||
"OpPtrDiff": 403,
|
||||
"OpColorAttachmentReadEXT": 4160,
|
||||
"OpDepthAttachmentReadEXT": 4161,
|
||||
"OpStencilAttachmentReadEXT": 4162,
|
||||
"OpTerminateInvocation": 4416,
|
||||
"OpSubgroupBallotKHR": 4421,
|
||||
"OpSubgroupFirstInvocationKHR": 4422,
|
||||
@@ -1600,6 +1787,11 @@
|
||||
"OpUDotAccSatKHR": 4454,
|
||||
"OpSUDotAccSat": 4455,
|
||||
"OpSUDotAccSatKHR": 4455,
|
||||
"OpTypeCooperativeMatrixKHR": 4456,
|
||||
"OpCooperativeMatrixLoadKHR": 4457,
|
||||
"OpCooperativeMatrixStoreKHR": 4458,
|
||||
"OpCooperativeMatrixMulAddKHR": 4459,
|
||||
"OpCooperativeMatrixLengthKHR": 4460,
|
||||
"OpTypeRayQueryKHR": 4472,
|
||||
"OpRayQueryInitializeKHR": 4473,
|
||||
"OpRayQueryTerminateKHR": 4474,
|
||||
@@ -1607,6 +1799,14 @@
|
||||
"OpRayQueryConfirmIntersectionKHR": 4476,
|
||||
"OpRayQueryProceedKHR": 4477,
|
||||
"OpRayQueryGetIntersectionTypeKHR": 4479,
|
||||
"OpImageSampleWeightedQCOM": 4480,
|
||||
"OpImageBoxFilterQCOM": 4481,
|
||||
"OpImageBlockMatchSSDQCOM": 4482,
|
||||
"OpImageBlockMatchSADQCOM": 4483,
|
||||
"OpImageBlockMatchWindowSSDQCOM": 4500,
|
||||
"OpImageBlockMatchWindowSADQCOM": 4501,
|
||||
"OpImageBlockMatchGatherSSDQCOM": 4502,
|
||||
"OpImageBlockMatchGatherSADQCOM": 4503,
|
||||
"OpGroupIAddNonUniformAMD": 5000,
|
||||
"OpGroupFAddNonUniformAMD": 5001,
|
||||
"OpGroupFMinNonUniformAMD": 5002,
|
||||
@@ -1618,6 +1818,11 @@
|
||||
"OpFragmentMaskFetchAMD": 5011,
|
||||
"OpFragmentFetchAMD": 5012,
|
||||
"OpReadClockKHR": 5056,
|
||||
"OpFinalizeNodePayloadsAMDX": 5075,
|
||||
"OpFinishWritingNodePayloadAMDX": 5078,
|
||||
"OpInitializeNodePayloadsAMDX": 5090,
|
||||
"OpGroupNonUniformQuadAllKHR": 5110,
|
||||
"OpGroupNonUniformQuadAnyKHR": 5111,
|
||||
"OpHitObjectRecordHitMotionNV": 5249,
|
||||
"OpHitObjectRecordHitWithIndexMotionNV": 5250,
|
||||
"OpHitObjectRecordMissMotionNV": 5251,
|
||||
@@ -1656,6 +1861,8 @@
|
||||
"OpSetMeshOutputsEXT": 5295,
|
||||
"OpGroupNonUniformPartitionNV": 5296,
|
||||
"OpWritePackedPrimitiveIndices4x8NV": 5299,
|
||||
"OpFetchMicroTriangleVertexPositionNV": 5300,
|
||||
"OpFetchMicroTriangleVertexBarycentricNV": 5301,
|
||||
"OpReportIntersectionKHR": 5334,
|
||||
"OpReportIntersectionNV": 5334,
|
||||
"OpIgnoreIntersectionNV": 5335,
|
||||
@@ -1663,6 +1870,7 @@
|
||||
"OpTraceNV": 5337,
|
||||
"OpTraceMotionNV": 5338,
|
||||
"OpTraceRayMotionNV": 5339,
|
||||
"OpRayQueryGetIntersectionTriangleVertexPositionsKHR": 5340,
|
||||
"OpTypeAccelerationStructureKHR": 5341,
|
||||
"OpTypeAccelerationStructureNV": 5341,
|
||||
"OpExecuteCallableNV": 5344,
|
||||
@@ -1683,6 +1891,7 @@
|
||||
"OpConvertUToSampledImageNV": 5395,
|
||||
"OpConvertSampledImageToUNV": 5396,
|
||||
"OpSamplerImageAddressingModeNV": 5397,
|
||||
"OpRawAccessChainNV": 5398,
|
||||
"OpSubgroupShuffleINTEL": 5571,
|
||||
"OpSubgroupShuffleDownINTEL": 5572,
|
||||
"OpSubgroupShuffleUpINTEL": 5573,
|
||||
@@ -1924,6 +2133,9 @@
|
||||
"OpTypeStructContinuedINTEL": 6090,
|
||||
"OpConstantCompositeContinuedINTEL": 6091,
|
||||
"OpSpecConstantCompositeContinuedINTEL": 6092,
|
||||
"OpCompositeConstructContinuedINTEL": 6096,
|
||||
"OpConvertFToBF16INTEL": 6116,
|
||||
"OpConvertBF16ToFINTEL": 6117,
|
||||
"OpControlBarrierArriveINTEL": 6142,
|
||||
"OpControlBarrierWaitINTEL": 6143,
|
||||
"OpGroupIMulKHR": 6401,
|
||||
@@ -1933,7 +2145,9 @@
|
||||
"OpGroupBitwiseXorKHR": 6405,
|
||||
"OpGroupLogicalAndKHR": 6406,
|
||||
"OpGroupLogicalOrKHR": 6407,
|
||||
"OpGroupLogicalXorKHR": 6408
|
||||
"OpGroupLogicalXorKHR": 6408,
|
||||
"OpMaskedGatherINTEL": 6428,
|
||||
"OpMaskedScatterINTEL": 6429
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
+198
-2
@@ -1,4 +1,4 @@
|
||||
-- Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||
-- Copyright (c) 2014-2024 The Khronos Group Inc.
|
||||
--
|
||||
-- Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
-- of this software and/or associated documentation files (the "Materials"),
|
||||
@@ -60,6 +60,11 @@ spv = {
|
||||
HLSL = 5,
|
||||
CPP_for_OpenCL = 6,
|
||||
SYCL = 7,
|
||||
HERO_C = 8,
|
||||
NZSL = 9,
|
||||
WGSL = 10,
|
||||
Slang = 11,
|
||||
Zig = 12,
|
||||
},
|
||||
|
||||
ExecutionModel = {
|
||||
@@ -143,6 +148,9 @@ spv = {
|
||||
SubgroupsPerWorkgroupId = 37,
|
||||
LocalSizeId = 38,
|
||||
LocalSizeHintId = 39,
|
||||
NonCoherentColorAttachmentReadEXT = 4169,
|
||||
NonCoherentDepthAttachmentReadEXT = 4170,
|
||||
NonCoherentStencilAttachmentReadEXT = 4171,
|
||||
SubgroupUniformControlFlowKHR = 4421,
|
||||
PostDepthCoverage = 4446,
|
||||
DenormPreserve = 4459,
|
||||
@@ -152,12 +160,19 @@ spv = {
|
||||
RoundingModeRTZ = 4463,
|
||||
EarlyAndLateFragmentTestsAMD = 5017,
|
||||
StencilRefReplacingEXT = 5027,
|
||||
CoalescingAMDX = 5069,
|
||||
MaxNodeRecursionAMDX = 5071,
|
||||
StaticNumWorkgroupsAMDX = 5072,
|
||||
ShaderIndexAMDX = 5073,
|
||||
MaxNumWorkgroupsAMDX = 5077,
|
||||
StencilRefUnchangedFrontAMD = 5079,
|
||||
StencilRefGreaterFrontAMD = 5080,
|
||||
StencilRefLessFrontAMD = 5081,
|
||||
StencilRefUnchangedBackAMD = 5082,
|
||||
StencilRefGreaterBackAMD = 5083,
|
||||
StencilRefLessBackAMD = 5084,
|
||||
QuadDerivativesKHR = 5088,
|
||||
RequireFullQuadsKHR = 5089,
|
||||
OutputLinesEXT = 5269,
|
||||
OutputLinesNV = 5269,
|
||||
OutputPrimitivesEXT = 5270,
|
||||
@@ -182,8 +197,14 @@ spv = {
|
||||
NoGlobalOffsetINTEL = 5895,
|
||||
NumSIMDWorkitemsINTEL = 5896,
|
||||
SchedulerTargetFmaxMhzINTEL = 5903,
|
||||
MaximallyReconvergesKHR = 6023,
|
||||
FPFastMathDefault = 6028,
|
||||
StreamingInterfaceINTEL = 6154,
|
||||
RegisterMapInterfaceINTEL = 6160,
|
||||
NamedBarrierCountINTEL = 6417,
|
||||
MaximumRegistersINTEL = 6461,
|
||||
MaximumRegistersIdINTEL = 6462,
|
||||
NamedMaximumRegistersINTEL = 6463,
|
||||
},
|
||||
|
||||
StorageClass = {
|
||||
@@ -200,6 +221,9 @@ spv = {
|
||||
AtomicCounter = 10,
|
||||
Image = 11,
|
||||
StorageBuffer = 12,
|
||||
TileImageEXT = 4172,
|
||||
NodePayloadAMDX = 5068,
|
||||
NodeOutputPayloadAMDX = 5076,
|
||||
CallableDataKHR = 5328,
|
||||
CallableDataNV = 5328,
|
||||
IncomingCallableDataKHR = 5329,
|
||||
@@ -229,6 +253,7 @@ spv = {
|
||||
Rect = 4,
|
||||
Buffer = 5,
|
||||
SubpassData = 6,
|
||||
TileImageDataEXT = 4173,
|
||||
},
|
||||
|
||||
SamplerAddressingMode = {
|
||||
@@ -330,6 +355,8 @@ spv = {
|
||||
Float = 14,
|
||||
UnormInt24 = 15,
|
||||
UnormInt101010_2 = 16,
|
||||
UnsignedIntRaw10EXT = 19,
|
||||
UnsignedIntRaw12EXT = 20,
|
||||
},
|
||||
|
||||
ImageOperandsShift = {
|
||||
@@ -385,8 +412,11 @@ spv = {
|
||||
NSZ = 2,
|
||||
AllowRecip = 3,
|
||||
Fast = 4,
|
||||
AllowContract = 16,
|
||||
AllowContractFastINTEL = 16,
|
||||
AllowReassoc = 17,
|
||||
AllowReassocINTEL = 17,
|
||||
AllowTransform = 18,
|
||||
},
|
||||
|
||||
FPFastMathModeMask = {
|
||||
@@ -396,8 +426,11 @@ spv = {
|
||||
NSZ = 0x00000004,
|
||||
AllowRecip = 0x00000008,
|
||||
Fast = 0x00000010,
|
||||
AllowContract = 0x00010000,
|
||||
AllowContractFastINTEL = 0x00010000,
|
||||
AllowReassoc = 0x00020000,
|
||||
AllowReassocINTEL = 0x00020000,
|
||||
AllowTransform = 0x00040000,
|
||||
},
|
||||
|
||||
FPRoundingMode = {
|
||||
@@ -481,7 +514,14 @@ spv = {
|
||||
MaxByteOffsetId = 47,
|
||||
NoSignedWrap = 4469,
|
||||
NoUnsignedWrap = 4470,
|
||||
WeightTextureQCOM = 4487,
|
||||
BlockMatchTextureQCOM = 4488,
|
||||
BlockMatchSamplerQCOM = 4499,
|
||||
ExplicitInterpAMD = 4999,
|
||||
NodeSharesPayloadLimitsWithAMDX = 5019,
|
||||
NodeMaxPayloadsAMDX = 5020,
|
||||
TrackFinishWritingAMDX = 5078,
|
||||
PayloadNodeNameAMDX = 5091,
|
||||
OverrideCoverageNV = 5248,
|
||||
PassthroughNV = 5250,
|
||||
ViewportRelativeNV = 5252,
|
||||
@@ -531,6 +571,9 @@ spv = {
|
||||
MergeINTEL = 5834,
|
||||
BankBitsINTEL = 5835,
|
||||
ForcePow2DepthINTEL = 5836,
|
||||
StridesizeINTEL = 5883,
|
||||
WordsizeINTEL = 5884,
|
||||
TrueDualPortINTEL = 5885,
|
||||
BurstCoalesceINTEL = 5899,
|
||||
CacheSizeINTEL = 5900,
|
||||
DontStaticallyCoalesceINTEL = 5901,
|
||||
@@ -549,6 +592,24 @@ spv = {
|
||||
SingleElementVectorINTEL = 6085,
|
||||
VectorComputeCallableFunctionINTEL = 6087,
|
||||
MediaBlockIOINTEL = 6140,
|
||||
StallFreeINTEL = 6151,
|
||||
FPMaxErrorDecorationINTEL = 6170,
|
||||
LatencyControlLabelINTEL = 6172,
|
||||
LatencyControlConstraintINTEL = 6173,
|
||||
ConduitKernelArgumentINTEL = 6175,
|
||||
RegisterMapKernelArgumentINTEL = 6176,
|
||||
MMHostInterfaceAddressWidthINTEL = 6177,
|
||||
MMHostInterfaceDataWidthINTEL = 6178,
|
||||
MMHostInterfaceLatencyINTEL = 6179,
|
||||
MMHostInterfaceReadWriteModeINTEL = 6180,
|
||||
MMHostInterfaceMaxBurstINTEL = 6181,
|
||||
MMHostInterfaceWaitRequestINTEL = 6182,
|
||||
StableKernelArgumentINTEL = 6183,
|
||||
HostAccessINTEL = 6188,
|
||||
InitModeINTEL = 6190,
|
||||
ImplementInRegisterMapINTEL = 6191,
|
||||
CacheControlLoadINTEL = 6442,
|
||||
CacheControlStoreINTEL = 6443,
|
||||
},
|
||||
|
||||
BuiltIn = {
|
||||
@@ -623,6 +684,8 @@ spv = {
|
||||
BaryCoordSmoothSampleAMD = 4997,
|
||||
BaryCoordPullModelAMD = 4998,
|
||||
FragStencilRefEXT = 5014,
|
||||
CoalescedInputCountAMDX = 5021,
|
||||
ShaderIndexAMDX = 5073,
|
||||
ViewportMaskNV = 5253,
|
||||
SecondaryPositionNV = 5257,
|
||||
SecondaryViewportMaskNV = 5258,
|
||||
@@ -675,6 +738,9 @@ spv = {
|
||||
HitKindKHR = 5333,
|
||||
HitKindNV = 5333,
|
||||
CurrentRayTimeNV = 5334,
|
||||
HitTriangleVertexPositionsKHR = 5335,
|
||||
HitMicroTriangleVertexPositionsNV = 5337,
|
||||
HitMicroTriangleVertexBarycentricsNV = 5344,
|
||||
IncomingRayFlagsKHR = 5351,
|
||||
IncomingRayFlagsNV = 5351,
|
||||
RayGeometryIndexKHR = 5352,
|
||||
@@ -682,6 +748,8 @@ spv = {
|
||||
SMCountNV = 5375,
|
||||
WarpIDNV = 5376,
|
||||
SMIDNV = 5377,
|
||||
HitKindFrontFacingMicroTriangleNV = 5405,
|
||||
HitKindBackFacingMicroTriangleNV = 5406,
|
||||
CullMaskKHR = 6021,
|
||||
},
|
||||
|
||||
@@ -936,6 +1004,9 @@ spv = {
|
||||
ShaderViewportIndex = 70,
|
||||
UniformDecoration = 71,
|
||||
CoreBuiltinsARM = 4165,
|
||||
TileImageColorReadAccessEXT = 4166,
|
||||
TileImageDepthReadAccessEXT = 4167,
|
||||
TileImageStencilReadAccessEXT = 4168,
|
||||
FragmentShadingRateKHR = 4422,
|
||||
SubgroupBallotKHR = 4423,
|
||||
DrawParameters = 4427,
|
||||
@@ -967,6 +1038,10 @@ spv = {
|
||||
RayQueryKHR = 4472,
|
||||
RayTraversalPrimitiveCullingKHR = 4478,
|
||||
RayTracingKHR = 4479,
|
||||
TextureSampleWeightedQCOM = 4484,
|
||||
TextureBoxFilterQCOM = 4485,
|
||||
TextureBlockMatchQCOM = 4486,
|
||||
TextureBlockMatch2QCOM = 4498,
|
||||
Float16ImageAMD = 5008,
|
||||
ImageGatherBiasLodAMD = 5009,
|
||||
FragmentMaskAMD = 5010,
|
||||
@@ -974,6 +1049,8 @@ spv = {
|
||||
ImageReadWriteLodAMD = 5015,
|
||||
Int64ImageEXT = 5016,
|
||||
ShaderClockKHR = 5055,
|
||||
ShaderEnqueueAMDX = 5067,
|
||||
QuadControlKHR = 5087,
|
||||
SampleMaskOverrideCoverageNV = 5249,
|
||||
GeometryShaderPassthroughNV = 5251,
|
||||
ShaderViewportIndexLayerEXT = 5254,
|
||||
@@ -1015,6 +1092,7 @@ spv = {
|
||||
UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
||||
StorageTexelBufferArrayNonUniformIndexing = 5312,
|
||||
StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
||||
RayTracingPositionFetchKHR = 5336,
|
||||
RayTracingNV = 5340,
|
||||
RayTracingMotionBlurNV = 5341,
|
||||
VulkanMemoryModel = 5345,
|
||||
@@ -1032,9 +1110,14 @@ spv = {
|
||||
FragmentShaderPixelInterlockEXT = 5378,
|
||||
DemoteToHelperInvocation = 5379,
|
||||
DemoteToHelperInvocationEXT = 5379,
|
||||
DisplacementMicromapNV = 5380,
|
||||
RayTracingOpacityMicromapEXT = 5381,
|
||||
ShaderInvocationReorderNV = 5383,
|
||||
BindlessTextureNV = 5390,
|
||||
RayQueryPositionFetchKHR = 5391,
|
||||
AtomicFloat16VectorNV = 5404,
|
||||
RayTracingDisplacementMicromapNV = 5409,
|
||||
RawAccessChainsNV = 5414,
|
||||
SubgroupShuffleINTEL = 5568,
|
||||
SubgroupBufferBlockIOINTEL = 5569,
|
||||
SubgroupImageBlockIOINTEL = 5570,
|
||||
@@ -1086,16 +1169,29 @@ spv = {
|
||||
DotProduct = 6019,
|
||||
DotProductKHR = 6019,
|
||||
RayCullMaskKHR = 6020,
|
||||
CooperativeMatrixKHR = 6022,
|
||||
BitInstructions = 6025,
|
||||
GroupNonUniformRotateKHR = 6026,
|
||||
FloatControls2 = 6029,
|
||||
AtomicFloat32AddEXT = 6033,
|
||||
AtomicFloat64AddEXT = 6034,
|
||||
LongConstantCompositeINTEL = 6089,
|
||||
LongCompositesINTEL = 6089,
|
||||
OptNoneINTEL = 6094,
|
||||
AtomicFloat16AddEXT = 6095,
|
||||
DebugInfoModuleINTEL = 6114,
|
||||
BFloat16ConversionINTEL = 6115,
|
||||
SplitBarrierINTEL = 6141,
|
||||
FPGAClusterAttributesV2INTEL = 6150,
|
||||
FPGAKernelAttributesv2INTEL = 6161,
|
||||
FPMaxErrorINTEL = 6169,
|
||||
FPGALatencyControlINTEL = 6171,
|
||||
FPGAArgumentInterfacesINTEL = 6174,
|
||||
GlobalVariableHostAccessINTEL = 6187,
|
||||
GlobalVariableFPGADecorationsINTEL = 6189,
|
||||
GroupUniformArithmeticKHR = 6400,
|
||||
MaskedGatherScatterINTEL = 6427,
|
||||
CacheControlsINTEL = 6441,
|
||||
RegisterLimitsINTEL = 6460,
|
||||
},
|
||||
|
||||
RayFlagsShift = {
|
||||
@@ -1191,6 +1287,76 @@ spv = {
|
||||
PackedVectorFormat4x8BitKHR = 0,
|
||||
},
|
||||
|
||||
CooperativeMatrixOperandsShift = {
|
||||
MatrixASignedComponentsKHR = 0,
|
||||
MatrixBSignedComponentsKHR = 1,
|
||||
MatrixCSignedComponentsKHR = 2,
|
||||
MatrixResultSignedComponentsKHR = 3,
|
||||
SaturatingAccumulationKHR = 4,
|
||||
},
|
||||
|
||||
CooperativeMatrixOperandsMask = {
|
||||
MaskNone = 0,
|
||||
MatrixASignedComponentsKHR = 0x00000001,
|
||||
MatrixBSignedComponentsKHR = 0x00000002,
|
||||
MatrixCSignedComponentsKHR = 0x00000004,
|
||||
MatrixResultSignedComponentsKHR = 0x00000008,
|
||||
SaturatingAccumulationKHR = 0x00000010,
|
||||
},
|
||||
|
||||
CooperativeMatrixLayout = {
|
||||
RowMajorKHR = 0,
|
||||
ColumnMajorKHR = 1,
|
||||
},
|
||||
|
||||
CooperativeMatrixUse = {
|
||||
MatrixAKHR = 0,
|
||||
MatrixBKHR = 1,
|
||||
MatrixAccumulatorKHR = 2,
|
||||
},
|
||||
|
||||
InitializationModeQualifier = {
|
||||
InitOnDeviceReprogramINTEL = 0,
|
||||
InitOnDeviceResetINTEL = 1,
|
||||
},
|
||||
|
||||
HostAccessQualifier = {
|
||||
NoneINTEL = 0,
|
||||
ReadINTEL = 1,
|
||||
WriteINTEL = 2,
|
||||
ReadWriteINTEL = 3,
|
||||
},
|
||||
|
||||
LoadCacheControl = {
|
||||
UncachedINTEL = 0,
|
||||
CachedINTEL = 1,
|
||||
StreamingINTEL = 2,
|
||||
InvalidateAfterReadINTEL = 3,
|
||||
ConstCachedINTEL = 4,
|
||||
},
|
||||
|
||||
StoreCacheControl = {
|
||||
UncachedINTEL = 0,
|
||||
WriteThroughINTEL = 1,
|
||||
WriteBackINTEL = 2,
|
||||
StreamingINTEL = 3,
|
||||
},
|
||||
|
||||
NamedMaximumNumberOfRegisters = {
|
||||
AutoINTEL = 0,
|
||||
},
|
||||
|
||||
RawAccessChainOperandsShift = {
|
||||
RobustnessPerComponentNV = 0,
|
||||
RobustnessPerElementNV = 1,
|
||||
},
|
||||
|
||||
RawAccessChainOperandsMask = {
|
||||
MaskNone = 0,
|
||||
RobustnessPerComponentNV = 0x00000001,
|
||||
RobustnessPerElementNV = 0x00000002,
|
||||
},
|
||||
|
||||
Op = {
|
||||
OpNop = 0,
|
||||
OpUndef = 1,
|
||||
@@ -1536,6 +1702,9 @@ spv = {
|
||||
OpPtrEqual = 401,
|
||||
OpPtrNotEqual = 402,
|
||||
OpPtrDiff = 403,
|
||||
OpColorAttachmentReadEXT = 4160,
|
||||
OpDepthAttachmentReadEXT = 4161,
|
||||
OpStencilAttachmentReadEXT = 4162,
|
||||
OpTerminateInvocation = 4416,
|
||||
OpSubgroupBallotKHR = 4421,
|
||||
OpSubgroupFirstInvocationKHR = 4422,
|
||||
@@ -1561,6 +1730,11 @@ spv = {
|
||||
OpUDotAccSatKHR = 4454,
|
||||
OpSUDotAccSat = 4455,
|
||||
OpSUDotAccSatKHR = 4455,
|
||||
OpTypeCooperativeMatrixKHR = 4456,
|
||||
OpCooperativeMatrixLoadKHR = 4457,
|
||||
OpCooperativeMatrixStoreKHR = 4458,
|
||||
OpCooperativeMatrixMulAddKHR = 4459,
|
||||
OpCooperativeMatrixLengthKHR = 4460,
|
||||
OpTypeRayQueryKHR = 4472,
|
||||
OpRayQueryInitializeKHR = 4473,
|
||||
OpRayQueryTerminateKHR = 4474,
|
||||
@@ -1568,6 +1742,14 @@ spv = {
|
||||
OpRayQueryConfirmIntersectionKHR = 4476,
|
||||
OpRayQueryProceedKHR = 4477,
|
||||
OpRayQueryGetIntersectionTypeKHR = 4479,
|
||||
OpImageSampleWeightedQCOM = 4480,
|
||||
OpImageBoxFilterQCOM = 4481,
|
||||
OpImageBlockMatchSSDQCOM = 4482,
|
||||
OpImageBlockMatchSADQCOM = 4483,
|
||||
OpImageBlockMatchWindowSSDQCOM = 4500,
|
||||
OpImageBlockMatchWindowSADQCOM = 4501,
|
||||
OpImageBlockMatchGatherSSDQCOM = 4502,
|
||||
OpImageBlockMatchGatherSADQCOM = 4503,
|
||||
OpGroupIAddNonUniformAMD = 5000,
|
||||
OpGroupFAddNonUniformAMD = 5001,
|
||||
OpGroupFMinNonUniformAMD = 5002,
|
||||
@@ -1579,6 +1761,11 @@ spv = {
|
||||
OpFragmentMaskFetchAMD = 5011,
|
||||
OpFragmentFetchAMD = 5012,
|
||||
OpReadClockKHR = 5056,
|
||||
OpFinalizeNodePayloadsAMDX = 5075,
|
||||
OpFinishWritingNodePayloadAMDX = 5078,
|
||||
OpInitializeNodePayloadsAMDX = 5090,
|
||||
OpGroupNonUniformQuadAllKHR = 5110,
|
||||
OpGroupNonUniformQuadAnyKHR = 5111,
|
||||
OpHitObjectRecordHitMotionNV = 5249,
|
||||
OpHitObjectRecordHitWithIndexMotionNV = 5250,
|
||||
OpHitObjectRecordMissMotionNV = 5251,
|
||||
@@ -1617,6 +1804,8 @@ spv = {
|
||||
OpSetMeshOutputsEXT = 5295,
|
||||
OpGroupNonUniformPartitionNV = 5296,
|
||||
OpWritePackedPrimitiveIndices4x8NV = 5299,
|
||||
OpFetchMicroTriangleVertexPositionNV = 5300,
|
||||
OpFetchMicroTriangleVertexBarycentricNV = 5301,
|
||||
OpReportIntersectionKHR = 5334,
|
||||
OpReportIntersectionNV = 5334,
|
||||
OpIgnoreIntersectionNV = 5335,
|
||||
@@ -1624,6 +1813,7 @@ spv = {
|
||||
OpTraceNV = 5337,
|
||||
OpTraceMotionNV = 5338,
|
||||
OpTraceRayMotionNV = 5339,
|
||||
OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
|
||||
OpTypeAccelerationStructureKHR = 5341,
|
||||
OpTypeAccelerationStructureNV = 5341,
|
||||
OpExecuteCallableNV = 5344,
|
||||
@@ -1644,6 +1834,7 @@ spv = {
|
||||
OpConvertUToSampledImageNV = 5395,
|
||||
OpConvertSampledImageToUNV = 5396,
|
||||
OpSamplerImageAddressingModeNV = 5397,
|
||||
OpRawAccessChainNV = 5398,
|
||||
OpSubgroupShuffleINTEL = 5571,
|
||||
OpSubgroupShuffleDownINTEL = 5572,
|
||||
OpSubgroupShuffleUpINTEL = 5573,
|
||||
@@ -1885,6 +2076,9 @@ spv = {
|
||||
OpTypeStructContinuedINTEL = 6090,
|
||||
OpConstantCompositeContinuedINTEL = 6091,
|
||||
OpSpecConstantCompositeContinuedINTEL = 6092,
|
||||
OpCompositeConstructContinuedINTEL = 6096,
|
||||
OpConvertFToBF16INTEL = 6116,
|
||||
OpConvertBF16ToFINTEL = 6117,
|
||||
OpControlBarrierArriveINTEL = 6142,
|
||||
OpControlBarrierWaitINTEL = 6143,
|
||||
OpGroupIMulKHR = 6401,
|
||||
@@ -1895,6 +2089,8 @@ spv = {
|
||||
OpGroupLogicalAndKHR = 6406,
|
||||
OpGroupLogicalOrKHR = 6407,
|
||||
OpGroupLogicalXorKHR = 6408,
|
||||
OpMaskedGatherINTEL = 6428,
|
||||
OpMaskedScatterINTEL = 6429,
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
+198
-2
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||
# Copyright (c) 2014-2024 The Khronos Group Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and/or associated documentation files (the "Materials"),
|
||||
@@ -60,6 +60,11 @@ spv = {
|
||||
'HLSL' : 5,
|
||||
'CPP_for_OpenCL' : 6,
|
||||
'SYCL' : 7,
|
||||
'HERO_C' : 8,
|
||||
'NZSL' : 9,
|
||||
'WGSL' : 10,
|
||||
'Slang' : 11,
|
||||
'Zig' : 12,
|
||||
},
|
||||
|
||||
'ExecutionModel' : {
|
||||
@@ -143,6 +148,9 @@ spv = {
|
||||
'SubgroupsPerWorkgroupId' : 37,
|
||||
'LocalSizeId' : 38,
|
||||
'LocalSizeHintId' : 39,
|
||||
'NonCoherentColorAttachmentReadEXT' : 4169,
|
||||
'NonCoherentDepthAttachmentReadEXT' : 4170,
|
||||
'NonCoherentStencilAttachmentReadEXT' : 4171,
|
||||
'SubgroupUniformControlFlowKHR' : 4421,
|
||||
'PostDepthCoverage' : 4446,
|
||||
'DenormPreserve' : 4459,
|
||||
@@ -152,12 +160,19 @@ spv = {
|
||||
'RoundingModeRTZ' : 4463,
|
||||
'EarlyAndLateFragmentTestsAMD' : 5017,
|
||||
'StencilRefReplacingEXT' : 5027,
|
||||
'CoalescingAMDX' : 5069,
|
||||
'MaxNodeRecursionAMDX' : 5071,
|
||||
'StaticNumWorkgroupsAMDX' : 5072,
|
||||
'ShaderIndexAMDX' : 5073,
|
||||
'MaxNumWorkgroupsAMDX' : 5077,
|
||||
'StencilRefUnchangedFrontAMD' : 5079,
|
||||
'StencilRefGreaterFrontAMD' : 5080,
|
||||
'StencilRefLessFrontAMD' : 5081,
|
||||
'StencilRefUnchangedBackAMD' : 5082,
|
||||
'StencilRefGreaterBackAMD' : 5083,
|
||||
'StencilRefLessBackAMD' : 5084,
|
||||
'QuadDerivativesKHR' : 5088,
|
||||
'RequireFullQuadsKHR' : 5089,
|
||||
'OutputLinesEXT' : 5269,
|
||||
'OutputLinesNV' : 5269,
|
||||
'OutputPrimitivesEXT' : 5270,
|
||||
@@ -182,8 +197,14 @@ spv = {
|
||||
'NoGlobalOffsetINTEL' : 5895,
|
||||
'NumSIMDWorkitemsINTEL' : 5896,
|
||||
'SchedulerTargetFmaxMhzINTEL' : 5903,
|
||||
'MaximallyReconvergesKHR' : 6023,
|
||||
'FPFastMathDefault' : 6028,
|
||||
'StreamingInterfaceINTEL' : 6154,
|
||||
'RegisterMapInterfaceINTEL' : 6160,
|
||||
'NamedBarrierCountINTEL' : 6417,
|
||||
'MaximumRegistersINTEL' : 6461,
|
||||
'MaximumRegistersIdINTEL' : 6462,
|
||||
'NamedMaximumRegistersINTEL' : 6463,
|
||||
},
|
||||
|
||||
'StorageClass' : {
|
||||
@@ -200,6 +221,9 @@ spv = {
|
||||
'AtomicCounter' : 10,
|
||||
'Image' : 11,
|
||||
'StorageBuffer' : 12,
|
||||
'TileImageEXT' : 4172,
|
||||
'NodePayloadAMDX' : 5068,
|
||||
'NodeOutputPayloadAMDX' : 5076,
|
||||
'CallableDataKHR' : 5328,
|
||||
'CallableDataNV' : 5328,
|
||||
'IncomingCallableDataKHR' : 5329,
|
||||
@@ -229,6 +253,7 @@ spv = {
|
||||
'Rect' : 4,
|
||||
'Buffer' : 5,
|
||||
'SubpassData' : 6,
|
||||
'TileImageDataEXT' : 4173,
|
||||
},
|
||||
|
||||
'SamplerAddressingMode' : {
|
||||
@@ -330,6 +355,8 @@ spv = {
|
||||
'Float' : 14,
|
||||
'UnormInt24' : 15,
|
||||
'UnormInt101010_2' : 16,
|
||||
'UnsignedIntRaw10EXT' : 19,
|
||||
'UnsignedIntRaw12EXT' : 20,
|
||||
},
|
||||
|
||||
'ImageOperandsShift' : {
|
||||
@@ -385,8 +412,11 @@ spv = {
|
||||
'NSZ' : 2,
|
||||
'AllowRecip' : 3,
|
||||
'Fast' : 4,
|
||||
'AllowContract' : 16,
|
||||
'AllowContractFastINTEL' : 16,
|
||||
'AllowReassoc' : 17,
|
||||
'AllowReassocINTEL' : 17,
|
||||
'AllowTransform' : 18,
|
||||
},
|
||||
|
||||
'FPFastMathModeMask' : {
|
||||
@@ -396,8 +426,11 @@ spv = {
|
||||
'NSZ' : 0x00000004,
|
||||
'AllowRecip' : 0x00000008,
|
||||
'Fast' : 0x00000010,
|
||||
'AllowContract' : 0x00010000,
|
||||
'AllowContractFastINTEL' : 0x00010000,
|
||||
'AllowReassoc' : 0x00020000,
|
||||
'AllowReassocINTEL' : 0x00020000,
|
||||
'AllowTransform' : 0x00040000,
|
||||
},
|
||||
|
||||
'FPRoundingMode' : {
|
||||
@@ -481,7 +514,14 @@ spv = {
|
||||
'MaxByteOffsetId' : 47,
|
||||
'NoSignedWrap' : 4469,
|
||||
'NoUnsignedWrap' : 4470,
|
||||
'WeightTextureQCOM' : 4487,
|
||||
'BlockMatchTextureQCOM' : 4488,
|
||||
'BlockMatchSamplerQCOM' : 4499,
|
||||
'ExplicitInterpAMD' : 4999,
|
||||
'NodeSharesPayloadLimitsWithAMDX' : 5019,
|
||||
'NodeMaxPayloadsAMDX' : 5020,
|
||||
'TrackFinishWritingAMDX' : 5078,
|
||||
'PayloadNodeNameAMDX' : 5091,
|
||||
'OverrideCoverageNV' : 5248,
|
||||
'PassthroughNV' : 5250,
|
||||
'ViewportRelativeNV' : 5252,
|
||||
@@ -531,6 +571,9 @@ spv = {
|
||||
'MergeINTEL' : 5834,
|
||||
'BankBitsINTEL' : 5835,
|
||||
'ForcePow2DepthINTEL' : 5836,
|
||||
'StridesizeINTEL' : 5883,
|
||||
'WordsizeINTEL' : 5884,
|
||||
'TrueDualPortINTEL' : 5885,
|
||||
'BurstCoalesceINTEL' : 5899,
|
||||
'CacheSizeINTEL' : 5900,
|
||||
'DontStaticallyCoalesceINTEL' : 5901,
|
||||
@@ -549,6 +592,24 @@ spv = {
|
||||
'SingleElementVectorINTEL' : 6085,
|
||||
'VectorComputeCallableFunctionINTEL' : 6087,
|
||||
'MediaBlockIOINTEL' : 6140,
|
||||
'StallFreeINTEL' : 6151,
|
||||
'FPMaxErrorDecorationINTEL' : 6170,
|
||||
'LatencyControlLabelINTEL' : 6172,
|
||||
'LatencyControlConstraintINTEL' : 6173,
|
||||
'ConduitKernelArgumentINTEL' : 6175,
|
||||
'RegisterMapKernelArgumentINTEL' : 6176,
|
||||
'MMHostInterfaceAddressWidthINTEL' : 6177,
|
||||
'MMHostInterfaceDataWidthINTEL' : 6178,
|
||||
'MMHostInterfaceLatencyINTEL' : 6179,
|
||||
'MMHostInterfaceReadWriteModeINTEL' : 6180,
|
||||
'MMHostInterfaceMaxBurstINTEL' : 6181,
|
||||
'MMHostInterfaceWaitRequestINTEL' : 6182,
|
||||
'StableKernelArgumentINTEL' : 6183,
|
||||
'HostAccessINTEL' : 6188,
|
||||
'InitModeINTEL' : 6190,
|
||||
'ImplementInRegisterMapINTEL' : 6191,
|
||||
'CacheControlLoadINTEL' : 6442,
|
||||
'CacheControlStoreINTEL' : 6443,
|
||||
},
|
||||
|
||||
'BuiltIn' : {
|
||||
@@ -623,6 +684,8 @@ spv = {
|
||||
'BaryCoordSmoothSampleAMD' : 4997,
|
||||
'BaryCoordPullModelAMD' : 4998,
|
||||
'FragStencilRefEXT' : 5014,
|
||||
'CoalescedInputCountAMDX' : 5021,
|
||||
'ShaderIndexAMDX' : 5073,
|
||||
'ViewportMaskNV' : 5253,
|
||||
'SecondaryPositionNV' : 5257,
|
||||
'SecondaryViewportMaskNV' : 5258,
|
||||
@@ -675,6 +738,9 @@ spv = {
|
||||
'HitKindKHR' : 5333,
|
||||
'HitKindNV' : 5333,
|
||||
'CurrentRayTimeNV' : 5334,
|
||||
'HitTriangleVertexPositionsKHR' : 5335,
|
||||
'HitMicroTriangleVertexPositionsNV' : 5337,
|
||||
'HitMicroTriangleVertexBarycentricsNV' : 5344,
|
||||
'IncomingRayFlagsKHR' : 5351,
|
||||
'IncomingRayFlagsNV' : 5351,
|
||||
'RayGeometryIndexKHR' : 5352,
|
||||
@@ -682,6 +748,8 @@ spv = {
|
||||
'SMCountNV' : 5375,
|
||||
'WarpIDNV' : 5376,
|
||||
'SMIDNV' : 5377,
|
||||
'HitKindFrontFacingMicroTriangleNV' : 5405,
|
||||
'HitKindBackFacingMicroTriangleNV' : 5406,
|
||||
'CullMaskKHR' : 6021,
|
||||
},
|
||||
|
||||
@@ -936,6 +1004,9 @@ spv = {
|
||||
'ShaderViewportIndex' : 70,
|
||||
'UniformDecoration' : 71,
|
||||
'CoreBuiltinsARM' : 4165,
|
||||
'TileImageColorReadAccessEXT' : 4166,
|
||||
'TileImageDepthReadAccessEXT' : 4167,
|
||||
'TileImageStencilReadAccessEXT' : 4168,
|
||||
'FragmentShadingRateKHR' : 4422,
|
||||
'SubgroupBallotKHR' : 4423,
|
||||
'DrawParameters' : 4427,
|
||||
@@ -967,6 +1038,10 @@ spv = {
|
||||
'RayQueryKHR' : 4472,
|
||||
'RayTraversalPrimitiveCullingKHR' : 4478,
|
||||
'RayTracingKHR' : 4479,
|
||||
'TextureSampleWeightedQCOM' : 4484,
|
||||
'TextureBoxFilterQCOM' : 4485,
|
||||
'TextureBlockMatchQCOM' : 4486,
|
||||
'TextureBlockMatch2QCOM' : 4498,
|
||||
'Float16ImageAMD' : 5008,
|
||||
'ImageGatherBiasLodAMD' : 5009,
|
||||
'FragmentMaskAMD' : 5010,
|
||||
@@ -974,6 +1049,8 @@ spv = {
|
||||
'ImageReadWriteLodAMD' : 5015,
|
||||
'Int64ImageEXT' : 5016,
|
||||
'ShaderClockKHR' : 5055,
|
||||
'ShaderEnqueueAMDX' : 5067,
|
||||
'QuadControlKHR' : 5087,
|
||||
'SampleMaskOverrideCoverageNV' : 5249,
|
||||
'GeometryShaderPassthroughNV' : 5251,
|
||||
'ShaderViewportIndexLayerEXT' : 5254,
|
||||
@@ -1015,6 +1092,7 @@ spv = {
|
||||
'UniformTexelBufferArrayNonUniformIndexingEXT' : 5311,
|
||||
'StorageTexelBufferArrayNonUniformIndexing' : 5312,
|
||||
'StorageTexelBufferArrayNonUniformIndexingEXT' : 5312,
|
||||
'RayTracingPositionFetchKHR' : 5336,
|
||||
'RayTracingNV' : 5340,
|
||||
'RayTracingMotionBlurNV' : 5341,
|
||||
'VulkanMemoryModel' : 5345,
|
||||
@@ -1032,9 +1110,14 @@ spv = {
|
||||
'FragmentShaderPixelInterlockEXT' : 5378,
|
||||
'DemoteToHelperInvocation' : 5379,
|
||||
'DemoteToHelperInvocationEXT' : 5379,
|
||||
'DisplacementMicromapNV' : 5380,
|
||||
'RayTracingOpacityMicromapEXT' : 5381,
|
||||
'ShaderInvocationReorderNV' : 5383,
|
||||
'BindlessTextureNV' : 5390,
|
||||
'RayQueryPositionFetchKHR' : 5391,
|
||||
'AtomicFloat16VectorNV' : 5404,
|
||||
'RayTracingDisplacementMicromapNV' : 5409,
|
||||
'RawAccessChainsNV' : 5414,
|
||||
'SubgroupShuffleINTEL' : 5568,
|
||||
'SubgroupBufferBlockIOINTEL' : 5569,
|
||||
'SubgroupImageBlockIOINTEL' : 5570,
|
||||
@@ -1086,16 +1169,29 @@ spv = {
|
||||
'DotProduct' : 6019,
|
||||
'DotProductKHR' : 6019,
|
||||
'RayCullMaskKHR' : 6020,
|
||||
'CooperativeMatrixKHR' : 6022,
|
||||
'BitInstructions' : 6025,
|
||||
'GroupNonUniformRotateKHR' : 6026,
|
||||
'FloatControls2' : 6029,
|
||||
'AtomicFloat32AddEXT' : 6033,
|
||||
'AtomicFloat64AddEXT' : 6034,
|
||||
'LongConstantCompositeINTEL' : 6089,
|
||||
'LongCompositesINTEL' : 6089,
|
||||
'OptNoneINTEL' : 6094,
|
||||
'AtomicFloat16AddEXT' : 6095,
|
||||
'DebugInfoModuleINTEL' : 6114,
|
||||
'BFloat16ConversionINTEL' : 6115,
|
||||
'SplitBarrierINTEL' : 6141,
|
||||
'FPGAClusterAttributesV2INTEL' : 6150,
|
||||
'FPGAKernelAttributesv2INTEL' : 6161,
|
||||
'FPMaxErrorINTEL' : 6169,
|
||||
'FPGALatencyControlINTEL' : 6171,
|
||||
'FPGAArgumentInterfacesINTEL' : 6174,
|
||||
'GlobalVariableHostAccessINTEL' : 6187,
|
||||
'GlobalVariableFPGADecorationsINTEL' : 6189,
|
||||
'GroupUniformArithmeticKHR' : 6400,
|
||||
'MaskedGatherScatterINTEL' : 6427,
|
||||
'CacheControlsINTEL' : 6441,
|
||||
'RegisterLimitsINTEL' : 6460,
|
||||
},
|
||||
|
||||
'RayFlagsShift' : {
|
||||
@@ -1191,6 +1287,76 @@ spv = {
|
||||
'PackedVectorFormat4x8BitKHR' : 0,
|
||||
},
|
||||
|
||||
'CooperativeMatrixOperandsShift' : {
|
||||
'MatrixASignedComponentsKHR' : 0,
|
||||
'MatrixBSignedComponentsKHR' : 1,
|
||||
'MatrixCSignedComponentsKHR' : 2,
|
||||
'MatrixResultSignedComponentsKHR' : 3,
|
||||
'SaturatingAccumulationKHR' : 4,
|
||||
},
|
||||
|
||||
'CooperativeMatrixOperandsMask' : {
|
||||
'MaskNone' : 0,
|
||||
'MatrixASignedComponentsKHR' : 0x00000001,
|
||||
'MatrixBSignedComponentsKHR' : 0x00000002,
|
||||
'MatrixCSignedComponentsKHR' : 0x00000004,
|
||||
'MatrixResultSignedComponentsKHR' : 0x00000008,
|
||||
'SaturatingAccumulationKHR' : 0x00000010,
|
||||
},
|
||||
|
||||
'CooperativeMatrixLayout' : {
|
||||
'RowMajorKHR' : 0,
|
||||
'ColumnMajorKHR' : 1,
|
||||
},
|
||||
|
||||
'CooperativeMatrixUse' : {
|
||||
'MatrixAKHR' : 0,
|
||||
'MatrixBKHR' : 1,
|
||||
'MatrixAccumulatorKHR' : 2,
|
||||
},
|
||||
|
||||
'InitializationModeQualifier' : {
|
||||
'InitOnDeviceReprogramINTEL' : 0,
|
||||
'InitOnDeviceResetINTEL' : 1,
|
||||
},
|
||||
|
||||
'HostAccessQualifier' : {
|
||||
'NoneINTEL' : 0,
|
||||
'ReadINTEL' : 1,
|
||||
'WriteINTEL' : 2,
|
||||
'ReadWriteINTEL' : 3,
|
||||
},
|
||||
|
||||
'LoadCacheControl' : {
|
||||
'UncachedINTEL' : 0,
|
||||
'CachedINTEL' : 1,
|
||||
'StreamingINTEL' : 2,
|
||||
'InvalidateAfterReadINTEL' : 3,
|
||||
'ConstCachedINTEL' : 4,
|
||||
},
|
||||
|
||||
'StoreCacheControl' : {
|
||||
'UncachedINTEL' : 0,
|
||||
'WriteThroughINTEL' : 1,
|
||||
'WriteBackINTEL' : 2,
|
||||
'StreamingINTEL' : 3,
|
||||
},
|
||||
|
||||
'NamedMaximumNumberOfRegisters' : {
|
||||
'AutoINTEL' : 0,
|
||||
},
|
||||
|
||||
'RawAccessChainOperandsShift' : {
|
||||
'RobustnessPerComponentNV' : 0,
|
||||
'RobustnessPerElementNV' : 1,
|
||||
},
|
||||
|
||||
'RawAccessChainOperandsMask' : {
|
||||
'MaskNone' : 0,
|
||||
'RobustnessPerComponentNV' : 0x00000001,
|
||||
'RobustnessPerElementNV' : 0x00000002,
|
||||
},
|
||||
|
||||
'Op' : {
|
||||
'OpNop' : 0,
|
||||
'OpUndef' : 1,
|
||||
@@ -1536,6 +1702,9 @@ spv = {
|
||||
'OpPtrEqual' : 401,
|
||||
'OpPtrNotEqual' : 402,
|
||||
'OpPtrDiff' : 403,
|
||||
'OpColorAttachmentReadEXT' : 4160,
|
||||
'OpDepthAttachmentReadEXT' : 4161,
|
||||
'OpStencilAttachmentReadEXT' : 4162,
|
||||
'OpTerminateInvocation' : 4416,
|
||||
'OpSubgroupBallotKHR' : 4421,
|
||||
'OpSubgroupFirstInvocationKHR' : 4422,
|
||||
@@ -1561,6 +1730,11 @@ spv = {
|
||||
'OpUDotAccSatKHR' : 4454,
|
||||
'OpSUDotAccSat' : 4455,
|
||||
'OpSUDotAccSatKHR' : 4455,
|
||||
'OpTypeCooperativeMatrixKHR' : 4456,
|
||||
'OpCooperativeMatrixLoadKHR' : 4457,
|
||||
'OpCooperativeMatrixStoreKHR' : 4458,
|
||||
'OpCooperativeMatrixMulAddKHR' : 4459,
|
||||
'OpCooperativeMatrixLengthKHR' : 4460,
|
||||
'OpTypeRayQueryKHR' : 4472,
|
||||
'OpRayQueryInitializeKHR' : 4473,
|
||||
'OpRayQueryTerminateKHR' : 4474,
|
||||
@@ -1568,6 +1742,14 @@ spv = {
|
||||
'OpRayQueryConfirmIntersectionKHR' : 4476,
|
||||
'OpRayQueryProceedKHR' : 4477,
|
||||
'OpRayQueryGetIntersectionTypeKHR' : 4479,
|
||||
'OpImageSampleWeightedQCOM' : 4480,
|
||||
'OpImageBoxFilterQCOM' : 4481,
|
||||
'OpImageBlockMatchSSDQCOM' : 4482,
|
||||
'OpImageBlockMatchSADQCOM' : 4483,
|
||||
'OpImageBlockMatchWindowSSDQCOM' : 4500,
|
||||
'OpImageBlockMatchWindowSADQCOM' : 4501,
|
||||
'OpImageBlockMatchGatherSSDQCOM' : 4502,
|
||||
'OpImageBlockMatchGatherSADQCOM' : 4503,
|
||||
'OpGroupIAddNonUniformAMD' : 5000,
|
||||
'OpGroupFAddNonUniformAMD' : 5001,
|
||||
'OpGroupFMinNonUniformAMD' : 5002,
|
||||
@@ -1579,6 +1761,11 @@ spv = {
|
||||
'OpFragmentMaskFetchAMD' : 5011,
|
||||
'OpFragmentFetchAMD' : 5012,
|
||||
'OpReadClockKHR' : 5056,
|
||||
'OpFinalizeNodePayloadsAMDX' : 5075,
|
||||
'OpFinishWritingNodePayloadAMDX' : 5078,
|
||||
'OpInitializeNodePayloadsAMDX' : 5090,
|
||||
'OpGroupNonUniformQuadAllKHR' : 5110,
|
||||
'OpGroupNonUniformQuadAnyKHR' : 5111,
|
||||
'OpHitObjectRecordHitMotionNV' : 5249,
|
||||
'OpHitObjectRecordHitWithIndexMotionNV' : 5250,
|
||||
'OpHitObjectRecordMissMotionNV' : 5251,
|
||||
@@ -1617,6 +1804,8 @@ spv = {
|
||||
'OpSetMeshOutputsEXT' : 5295,
|
||||
'OpGroupNonUniformPartitionNV' : 5296,
|
||||
'OpWritePackedPrimitiveIndices4x8NV' : 5299,
|
||||
'OpFetchMicroTriangleVertexPositionNV' : 5300,
|
||||
'OpFetchMicroTriangleVertexBarycentricNV' : 5301,
|
||||
'OpReportIntersectionKHR' : 5334,
|
||||
'OpReportIntersectionNV' : 5334,
|
||||
'OpIgnoreIntersectionNV' : 5335,
|
||||
@@ -1624,6 +1813,7 @@ spv = {
|
||||
'OpTraceNV' : 5337,
|
||||
'OpTraceMotionNV' : 5338,
|
||||
'OpTraceRayMotionNV' : 5339,
|
||||
'OpRayQueryGetIntersectionTriangleVertexPositionsKHR' : 5340,
|
||||
'OpTypeAccelerationStructureKHR' : 5341,
|
||||
'OpTypeAccelerationStructureNV' : 5341,
|
||||
'OpExecuteCallableNV' : 5344,
|
||||
@@ -1644,6 +1834,7 @@ spv = {
|
||||
'OpConvertUToSampledImageNV' : 5395,
|
||||
'OpConvertSampledImageToUNV' : 5396,
|
||||
'OpSamplerImageAddressingModeNV' : 5397,
|
||||
'OpRawAccessChainNV' : 5398,
|
||||
'OpSubgroupShuffleINTEL' : 5571,
|
||||
'OpSubgroupShuffleDownINTEL' : 5572,
|
||||
'OpSubgroupShuffleUpINTEL' : 5573,
|
||||
@@ -1885,6 +2076,9 @@ spv = {
|
||||
'OpTypeStructContinuedINTEL' : 6090,
|
||||
'OpConstantCompositeContinuedINTEL' : 6091,
|
||||
'OpSpecConstantCompositeContinuedINTEL' : 6092,
|
||||
'OpCompositeConstructContinuedINTEL' : 6096,
|
||||
'OpConvertFToBF16INTEL' : 6116,
|
||||
'OpConvertBF16ToFINTEL' : 6117,
|
||||
'OpControlBarrierArriveINTEL' : 6142,
|
||||
'OpControlBarrierWaitINTEL' : 6143,
|
||||
'OpGroupIMulKHR' : 6401,
|
||||
@@ -1895,6 +2089,8 @@ spv = {
|
||||
'OpGroupLogicalAndKHR' : 6406,
|
||||
'OpGroupLogicalOrKHR' : 6407,
|
||||
'OpGroupLogicalXorKHR' : 6408,
|
||||
'OpMaskedGatherINTEL' : 6428,
|
||||
'OpMaskedScatterINTEL' : 6429,
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
+209
-2
@@ -1,5 +1,5 @@
|
||||
/+
|
||||
+ Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||
+ Copyright (c) 2014-2024 The Khronos Group Inc.
|
||||
+
|
||||
+ Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
+ of this software and/or associated documentation files (the "Materials"),
|
||||
@@ -68,6 +68,11 @@ enum SourceLanguage : uint
|
||||
HLSL = 5,
|
||||
CPP_for_OpenCL = 6,
|
||||
SYCL = 7,
|
||||
HERO_C = 8,
|
||||
NZSL = 9,
|
||||
WGSL = 10,
|
||||
Slang = 11,
|
||||
Zig = 12,
|
||||
}
|
||||
|
||||
enum ExecutionModel : uint
|
||||
@@ -155,6 +160,9 @@ enum ExecutionMode : uint
|
||||
SubgroupsPerWorkgroupId = 37,
|
||||
LocalSizeId = 38,
|
||||
LocalSizeHintId = 39,
|
||||
NonCoherentColorAttachmentReadEXT = 4169,
|
||||
NonCoherentDepthAttachmentReadEXT = 4170,
|
||||
NonCoherentStencilAttachmentReadEXT = 4171,
|
||||
SubgroupUniformControlFlowKHR = 4421,
|
||||
PostDepthCoverage = 4446,
|
||||
DenormPreserve = 4459,
|
||||
@@ -164,12 +172,19 @@ enum ExecutionMode : uint
|
||||
RoundingModeRTZ = 4463,
|
||||
EarlyAndLateFragmentTestsAMD = 5017,
|
||||
StencilRefReplacingEXT = 5027,
|
||||
CoalescingAMDX = 5069,
|
||||
MaxNodeRecursionAMDX = 5071,
|
||||
StaticNumWorkgroupsAMDX = 5072,
|
||||
ShaderIndexAMDX = 5073,
|
||||
MaxNumWorkgroupsAMDX = 5077,
|
||||
StencilRefUnchangedFrontAMD = 5079,
|
||||
StencilRefGreaterFrontAMD = 5080,
|
||||
StencilRefLessFrontAMD = 5081,
|
||||
StencilRefUnchangedBackAMD = 5082,
|
||||
StencilRefGreaterBackAMD = 5083,
|
||||
StencilRefLessBackAMD = 5084,
|
||||
QuadDerivativesKHR = 5088,
|
||||
RequireFullQuadsKHR = 5089,
|
||||
OutputLinesEXT = 5269,
|
||||
OutputLinesNV = 5269,
|
||||
OutputPrimitivesEXT = 5270,
|
||||
@@ -194,8 +209,14 @@ enum ExecutionMode : uint
|
||||
NoGlobalOffsetINTEL = 5895,
|
||||
NumSIMDWorkitemsINTEL = 5896,
|
||||
SchedulerTargetFmaxMhzINTEL = 5903,
|
||||
MaximallyReconvergesKHR = 6023,
|
||||
FPFastMathDefault = 6028,
|
||||
StreamingInterfaceINTEL = 6154,
|
||||
RegisterMapInterfaceINTEL = 6160,
|
||||
NamedBarrierCountINTEL = 6417,
|
||||
MaximumRegistersINTEL = 6461,
|
||||
MaximumRegistersIdINTEL = 6462,
|
||||
NamedMaximumRegistersINTEL = 6463,
|
||||
}
|
||||
|
||||
enum StorageClass : uint
|
||||
@@ -213,6 +234,9 @@ enum StorageClass : uint
|
||||
AtomicCounter = 10,
|
||||
Image = 11,
|
||||
StorageBuffer = 12,
|
||||
TileImageEXT = 4172,
|
||||
NodePayloadAMDX = 5068,
|
||||
NodeOutputPayloadAMDX = 5076,
|
||||
CallableDataKHR = 5328,
|
||||
CallableDataNV = 5328,
|
||||
IncomingCallableDataKHR = 5329,
|
||||
@@ -243,6 +267,7 @@ enum Dim : uint
|
||||
Rect = 4,
|
||||
Buffer = 5,
|
||||
SubpassData = 6,
|
||||
TileImageDataEXT = 4173,
|
||||
}
|
||||
|
||||
enum SamplerAddressingMode : uint
|
||||
@@ -349,6 +374,8 @@ enum ImageChannelDataType : uint
|
||||
Float = 14,
|
||||
UnormInt24 = 15,
|
||||
UnormInt101010_2 = 16,
|
||||
UnsignedIntRaw10EXT = 19,
|
||||
UnsignedIntRaw12EXT = 20,
|
||||
}
|
||||
|
||||
enum ImageOperandsShift : uint
|
||||
@@ -407,8 +434,11 @@ enum FPFastMathModeShift : uint
|
||||
NSZ = 2,
|
||||
AllowRecip = 3,
|
||||
Fast = 4,
|
||||
AllowContract = 16,
|
||||
AllowContractFastINTEL = 16,
|
||||
AllowReassoc = 17,
|
||||
AllowReassocINTEL = 17,
|
||||
AllowTransform = 18,
|
||||
}
|
||||
|
||||
enum FPFastMathModeMask : uint
|
||||
@@ -419,8 +449,11 @@ enum FPFastMathModeMask : uint
|
||||
NSZ = 0x00000004,
|
||||
AllowRecip = 0x00000008,
|
||||
Fast = 0x00000010,
|
||||
AllowContract = 0x00010000,
|
||||
AllowContractFastINTEL = 0x00010000,
|
||||
AllowReassoc = 0x00020000,
|
||||
AllowReassocINTEL = 0x00020000,
|
||||
AllowTransform = 0x00040000,
|
||||
}
|
||||
|
||||
enum FPRoundingMode : uint
|
||||
@@ -509,7 +542,14 @@ enum Decoration : uint
|
||||
MaxByteOffsetId = 47,
|
||||
NoSignedWrap = 4469,
|
||||
NoUnsignedWrap = 4470,
|
||||
WeightTextureQCOM = 4487,
|
||||
BlockMatchTextureQCOM = 4488,
|
||||
BlockMatchSamplerQCOM = 4499,
|
||||
ExplicitInterpAMD = 4999,
|
||||
NodeSharesPayloadLimitsWithAMDX = 5019,
|
||||
NodeMaxPayloadsAMDX = 5020,
|
||||
TrackFinishWritingAMDX = 5078,
|
||||
PayloadNodeNameAMDX = 5091,
|
||||
OverrideCoverageNV = 5248,
|
||||
PassthroughNV = 5250,
|
||||
ViewportRelativeNV = 5252,
|
||||
@@ -559,6 +599,9 @@ enum Decoration : uint
|
||||
MergeINTEL = 5834,
|
||||
BankBitsINTEL = 5835,
|
||||
ForcePow2DepthINTEL = 5836,
|
||||
StridesizeINTEL = 5883,
|
||||
WordsizeINTEL = 5884,
|
||||
TrueDualPortINTEL = 5885,
|
||||
BurstCoalesceINTEL = 5899,
|
||||
CacheSizeINTEL = 5900,
|
||||
DontStaticallyCoalesceINTEL = 5901,
|
||||
@@ -577,6 +620,24 @@ enum Decoration : uint
|
||||
SingleElementVectorINTEL = 6085,
|
||||
VectorComputeCallableFunctionINTEL = 6087,
|
||||
MediaBlockIOINTEL = 6140,
|
||||
StallFreeINTEL = 6151,
|
||||
FPMaxErrorDecorationINTEL = 6170,
|
||||
LatencyControlLabelINTEL = 6172,
|
||||
LatencyControlConstraintINTEL = 6173,
|
||||
ConduitKernelArgumentINTEL = 6175,
|
||||
RegisterMapKernelArgumentINTEL = 6176,
|
||||
MMHostInterfaceAddressWidthINTEL = 6177,
|
||||
MMHostInterfaceDataWidthINTEL = 6178,
|
||||
MMHostInterfaceLatencyINTEL = 6179,
|
||||
MMHostInterfaceReadWriteModeINTEL = 6180,
|
||||
MMHostInterfaceMaxBurstINTEL = 6181,
|
||||
MMHostInterfaceWaitRequestINTEL = 6182,
|
||||
StableKernelArgumentINTEL = 6183,
|
||||
HostAccessINTEL = 6188,
|
||||
InitModeINTEL = 6190,
|
||||
ImplementInRegisterMapINTEL = 6191,
|
||||
CacheControlLoadINTEL = 6442,
|
||||
CacheControlStoreINTEL = 6443,
|
||||
}
|
||||
|
||||
enum BuiltIn : uint
|
||||
@@ -652,6 +713,8 @@ enum BuiltIn : uint
|
||||
BaryCoordSmoothSampleAMD = 4997,
|
||||
BaryCoordPullModelAMD = 4998,
|
||||
FragStencilRefEXT = 5014,
|
||||
CoalescedInputCountAMDX = 5021,
|
||||
ShaderIndexAMDX = 5073,
|
||||
ViewportMaskNV = 5253,
|
||||
SecondaryPositionNV = 5257,
|
||||
SecondaryViewportMaskNV = 5258,
|
||||
@@ -704,6 +767,9 @@ enum BuiltIn : uint
|
||||
HitKindKHR = 5333,
|
||||
HitKindNV = 5333,
|
||||
CurrentRayTimeNV = 5334,
|
||||
HitTriangleVertexPositionsKHR = 5335,
|
||||
HitMicroTriangleVertexPositionsNV = 5337,
|
||||
HitMicroTriangleVertexBarycentricsNV = 5344,
|
||||
IncomingRayFlagsKHR = 5351,
|
||||
IncomingRayFlagsNV = 5351,
|
||||
RayGeometryIndexKHR = 5352,
|
||||
@@ -711,6 +777,8 @@ enum BuiltIn : uint
|
||||
SMCountNV = 5375,
|
||||
WarpIDNV = 5376,
|
||||
SMIDNV = 5377,
|
||||
HitKindFrontFacingMicroTriangleNV = 5405,
|
||||
HitKindBackFacingMicroTriangleNV = 5406,
|
||||
CullMaskKHR = 6021,
|
||||
}
|
||||
|
||||
@@ -981,6 +1049,9 @@ enum Capability : uint
|
||||
ShaderViewportIndex = 70,
|
||||
UniformDecoration = 71,
|
||||
CoreBuiltinsARM = 4165,
|
||||
TileImageColorReadAccessEXT = 4166,
|
||||
TileImageDepthReadAccessEXT = 4167,
|
||||
TileImageStencilReadAccessEXT = 4168,
|
||||
FragmentShadingRateKHR = 4422,
|
||||
SubgroupBallotKHR = 4423,
|
||||
DrawParameters = 4427,
|
||||
@@ -1012,6 +1083,10 @@ enum Capability : uint
|
||||
RayQueryKHR = 4472,
|
||||
RayTraversalPrimitiveCullingKHR = 4478,
|
||||
RayTracingKHR = 4479,
|
||||
TextureSampleWeightedQCOM = 4484,
|
||||
TextureBoxFilterQCOM = 4485,
|
||||
TextureBlockMatchQCOM = 4486,
|
||||
TextureBlockMatch2QCOM = 4498,
|
||||
Float16ImageAMD = 5008,
|
||||
ImageGatherBiasLodAMD = 5009,
|
||||
FragmentMaskAMD = 5010,
|
||||
@@ -1019,6 +1094,8 @@ enum Capability : uint
|
||||
ImageReadWriteLodAMD = 5015,
|
||||
Int64ImageEXT = 5016,
|
||||
ShaderClockKHR = 5055,
|
||||
ShaderEnqueueAMDX = 5067,
|
||||
QuadControlKHR = 5087,
|
||||
SampleMaskOverrideCoverageNV = 5249,
|
||||
GeometryShaderPassthroughNV = 5251,
|
||||
ShaderViewportIndexLayerEXT = 5254,
|
||||
@@ -1060,6 +1137,7 @@ enum Capability : uint
|
||||
UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
||||
StorageTexelBufferArrayNonUniformIndexing = 5312,
|
||||
StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
||||
RayTracingPositionFetchKHR = 5336,
|
||||
RayTracingNV = 5340,
|
||||
RayTracingMotionBlurNV = 5341,
|
||||
VulkanMemoryModel = 5345,
|
||||
@@ -1077,9 +1155,14 @@ enum Capability : uint
|
||||
FragmentShaderPixelInterlockEXT = 5378,
|
||||
DemoteToHelperInvocation = 5379,
|
||||
DemoteToHelperInvocationEXT = 5379,
|
||||
DisplacementMicromapNV = 5380,
|
||||
RayTracingOpacityMicromapEXT = 5381,
|
||||
ShaderInvocationReorderNV = 5383,
|
||||
BindlessTextureNV = 5390,
|
||||
RayQueryPositionFetchKHR = 5391,
|
||||
AtomicFloat16VectorNV = 5404,
|
||||
RayTracingDisplacementMicromapNV = 5409,
|
||||
RawAccessChainsNV = 5414,
|
||||
SubgroupShuffleINTEL = 5568,
|
||||
SubgroupBufferBlockIOINTEL = 5569,
|
||||
SubgroupImageBlockIOINTEL = 5570,
|
||||
@@ -1131,16 +1214,29 @@ enum Capability : uint
|
||||
DotProduct = 6019,
|
||||
DotProductKHR = 6019,
|
||||
RayCullMaskKHR = 6020,
|
||||
CooperativeMatrixKHR = 6022,
|
||||
BitInstructions = 6025,
|
||||
GroupNonUniformRotateKHR = 6026,
|
||||
FloatControls2 = 6029,
|
||||
AtomicFloat32AddEXT = 6033,
|
||||
AtomicFloat64AddEXT = 6034,
|
||||
LongConstantCompositeINTEL = 6089,
|
||||
LongCompositesINTEL = 6089,
|
||||
OptNoneINTEL = 6094,
|
||||
AtomicFloat16AddEXT = 6095,
|
||||
DebugInfoModuleINTEL = 6114,
|
||||
BFloat16ConversionINTEL = 6115,
|
||||
SplitBarrierINTEL = 6141,
|
||||
FPGAClusterAttributesV2INTEL = 6150,
|
||||
FPGAKernelAttributesv2INTEL = 6161,
|
||||
FPMaxErrorINTEL = 6169,
|
||||
FPGALatencyControlINTEL = 6171,
|
||||
FPGAArgumentInterfacesINTEL = 6174,
|
||||
GlobalVariableHostAccessINTEL = 6187,
|
||||
GlobalVariableFPGADecorationsINTEL = 6189,
|
||||
GroupUniformArithmeticKHR = 6400,
|
||||
MaskedGatherScatterINTEL = 6427,
|
||||
CacheControlsINTEL = 6441,
|
||||
RegisterLimitsINTEL = 6460,
|
||||
}
|
||||
|
||||
enum RayFlagsShift : uint
|
||||
@@ -1248,6 +1344,87 @@ enum PackedVectorFormat : uint
|
||||
PackedVectorFormat4x8BitKHR = 0,
|
||||
}
|
||||
|
||||
enum CooperativeMatrixOperandsShift : uint
|
||||
{
|
||||
MatrixASignedComponentsKHR = 0,
|
||||
MatrixBSignedComponentsKHR = 1,
|
||||
MatrixCSignedComponentsKHR = 2,
|
||||
MatrixResultSignedComponentsKHR = 3,
|
||||
SaturatingAccumulationKHR = 4,
|
||||
}
|
||||
|
||||
enum CooperativeMatrixOperandsMask : uint
|
||||
{
|
||||
MaskNone = 0,
|
||||
MatrixASignedComponentsKHR = 0x00000001,
|
||||
MatrixBSignedComponentsKHR = 0x00000002,
|
||||
MatrixCSignedComponentsKHR = 0x00000004,
|
||||
MatrixResultSignedComponentsKHR = 0x00000008,
|
||||
SaturatingAccumulationKHR = 0x00000010,
|
||||
}
|
||||
|
||||
enum CooperativeMatrixLayout : uint
|
||||
{
|
||||
RowMajorKHR = 0,
|
||||
ColumnMajorKHR = 1,
|
||||
}
|
||||
|
||||
enum CooperativeMatrixUse : uint
|
||||
{
|
||||
MatrixAKHR = 0,
|
||||
MatrixBKHR = 1,
|
||||
MatrixAccumulatorKHR = 2,
|
||||
}
|
||||
|
||||
enum InitializationModeQualifier : uint
|
||||
{
|
||||
InitOnDeviceReprogramINTEL = 0,
|
||||
InitOnDeviceResetINTEL = 1,
|
||||
}
|
||||
|
||||
enum HostAccessQualifier : uint
|
||||
{
|
||||
NoneINTEL = 0,
|
||||
ReadINTEL = 1,
|
||||
WriteINTEL = 2,
|
||||
ReadWriteINTEL = 3,
|
||||
}
|
||||
|
||||
enum LoadCacheControl : uint
|
||||
{
|
||||
UncachedINTEL = 0,
|
||||
CachedINTEL = 1,
|
||||
StreamingINTEL = 2,
|
||||
InvalidateAfterReadINTEL = 3,
|
||||
ConstCachedINTEL = 4,
|
||||
}
|
||||
|
||||
enum StoreCacheControl : uint
|
||||
{
|
||||
UncachedINTEL = 0,
|
||||
WriteThroughINTEL = 1,
|
||||
WriteBackINTEL = 2,
|
||||
StreamingINTEL = 3,
|
||||
}
|
||||
|
||||
enum NamedMaximumNumberOfRegisters : uint
|
||||
{
|
||||
AutoINTEL = 0,
|
||||
}
|
||||
|
||||
enum RawAccessChainOperandsShift : uint
|
||||
{
|
||||
RobustnessPerComponentNV = 0,
|
||||
RobustnessPerElementNV = 1,
|
||||
}
|
||||
|
||||
enum RawAccessChainOperandsMask : uint
|
||||
{
|
||||
MaskNone = 0,
|
||||
RobustnessPerComponentNV = 0x00000001,
|
||||
RobustnessPerElementNV = 0x00000002,
|
||||
}
|
||||
|
||||
enum Op : uint
|
||||
{
|
||||
OpNop = 0,
|
||||
@@ -1594,6 +1771,9 @@ enum Op : uint
|
||||
OpPtrEqual = 401,
|
||||
OpPtrNotEqual = 402,
|
||||
OpPtrDiff = 403,
|
||||
OpColorAttachmentReadEXT = 4160,
|
||||
OpDepthAttachmentReadEXT = 4161,
|
||||
OpStencilAttachmentReadEXT = 4162,
|
||||
OpTerminateInvocation = 4416,
|
||||
OpSubgroupBallotKHR = 4421,
|
||||
OpSubgroupFirstInvocationKHR = 4422,
|
||||
@@ -1619,6 +1799,11 @@ enum Op : uint
|
||||
OpUDotAccSatKHR = 4454,
|
||||
OpSUDotAccSat = 4455,
|
||||
OpSUDotAccSatKHR = 4455,
|
||||
OpTypeCooperativeMatrixKHR = 4456,
|
||||
OpCooperativeMatrixLoadKHR = 4457,
|
||||
OpCooperativeMatrixStoreKHR = 4458,
|
||||
OpCooperativeMatrixMulAddKHR = 4459,
|
||||
OpCooperativeMatrixLengthKHR = 4460,
|
||||
OpTypeRayQueryKHR = 4472,
|
||||
OpRayQueryInitializeKHR = 4473,
|
||||
OpRayQueryTerminateKHR = 4474,
|
||||
@@ -1626,6 +1811,14 @@ enum Op : uint
|
||||
OpRayQueryConfirmIntersectionKHR = 4476,
|
||||
OpRayQueryProceedKHR = 4477,
|
||||
OpRayQueryGetIntersectionTypeKHR = 4479,
|
||||
OpImageSampleWeightedQCOM = 4480,
|
||||
OpImageBoxFilterQCOM = 4481,
|
||||
OpImageBlockMatchSSDQCOM = 4482,
|
||||
OpImageBlockMatchSADQCOM = 4483,
|
||||
OpImageBlockMatchWindowSSDQCOM = 4500,
|
||||
OpImageBlockMatchWindowSADQCOM = 4501,
|
||||
OpImageBlockMatchGatherSSDQCOM = 4502,
|
||||
OpImageBlockMatchGatherSADQCOM = 4503,
|
||||
OpGroupIAddNonUniformAMD = 5000,
|
||||
OpGroupFAddNonUniformAMD = 5001,
|
||||
OpGroupFMinNonUniformAMD = 5002,
|
||||
@@ -1637,6 +1830,11 @@ enum Op : uint
|
||||
OpFragmentMaskFetchAMD = 5011,
|
||||
OpFragmentFetchAMD = 5012,
|
||||
OpReadClockKHR = 5056,
|
||||
OpFinalizeNodePayloadsAMDX = 5075,
|
||||
OpFinishWritingNodePayloadAMDX = 5078,
|
||||
OpInitializeNodePayloadsAMDX = 5090,
|
||||
OpGroupNonUniformQuadAllKHR = 5110,
|
||||
OpGroupNonUniformQuadAnyKHR = 5111,
|
||||
OpHitObjectRecordHitMotionNV = 5249,
|
||||
OpHitObjectRecordHitWithIndexMotionNV = 5250,
|
||||
OpHitObjectRecordMissMotionNV = 5251,
|
||||
@@ -1675,6 +1873,8 @@ enum Op : uint
|
||||
OpSetMeshOutputsEXT = 5295,
|
||||
OpGroupNonUniformPartitionNV = 5296,
|
||||
OpWritePackedPrimitiveIndices4x8NV = 5299,
|
||||
OpFetchMicroTriangleVertexPositionNV = 5300,
|
||||
OpFetchMicroTriangleVertexBarycentricNV = 5301,
|
||||
OpReportIntersectionKHR = 5334,
|
||||
OpReportIntersectionNV = 5334,
|
||||
OpIgnoreIntersectionNV = 5335,
|
||||
@@ -1682,6 +1882,7 @@ enum Op : uint
|
||||
OpTraceNV = 5337,
|
||||
OpTraceMotionNV = 5338,
|
||||
OpTraceRayMotionNV = 5339,
|
||||
OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
|
||||
OpTypeAccelerationStructureKHR = 5341,
|
||||
OpTypeAccelerationStructureNV = 5341,
|
||||
OpExecuteCallableNV = 5344,
|
||||
@@ -1702,6 +1903,7 @@ enum Op : uint
|
||||
OpConvertUToSampledImageNV = 5395,
|
||||
OpConvertSampledImageToUNV = 5396,
|
||||
OpSamplerImageAddressingModeNV = 5397,
|
||||
OpRawAccessChainNV = 5398,
|
||||
OpSubgroupShuffleINTEL = 5571,
|
||||
OpSubgroupShuffleDownINTEL = 5572,
|
||||
OpSubgroupShuffleUpINTEL = 5573,
|
||||
@@ -1943,6 +2145,9 @@ enum Op : uint
|
||||
OpTypeStructContinuedINTEL = 6090,
|
||||
OpConstantCompositeContinuedINTEL = 6091,
|
||||
OpSpecConstantCompositeContinuedINTEL = 6092,
|
||||
OpCompositeConstructContinuedINTEL = 6096,
|
||||
OpConvertFToBF16INTEL = 6116,
|
||||
OpConvertBF16ToFINTEL = 6117,
|
||||
OpControlBarrierArriveINTEL = 6142,
|
||||
OpControlBarrierWaitINTEL = 6143,
|
||||
OpGroupIMulKHR = 6401,
|
||||
@@ -1953,6 +2158,8 @@ enum Op : uint
|
||||
OpGroupLogicalAndKHR = 6406,
|
||||
OpGroupLogicalOrKHR = 6407,
|
||||
OpGroupLogicalXorKHR = 6408,
|
||||
OpMaskedGatherINTEL = 6428,
|
||||
OpMaskedScatterINTEL = 6429,
|
||||
}
|
||||
|
||||
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
# Copyright (c) 2015-2024 The Khronos Group Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
# "Materials"), to deal in the Materials without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
# permit persons to whom the Materials are furnished to do so, subject to
|
||||
# the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Materials.
|
||||
#
|
||||
# MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||
# KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||
# SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||
# https://www.khronos.org/registry/
|
||||
#
|
||||
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
|
||||
add_library(spirv_headers_simple_test STATIC)
|
||||
|
||||
target_sources(spirv_headers_simple_test PRIVATE
|
||||
example.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(spirv_headers_simple_test PRIVATE
|
||||
SPIRV-Headers::SPIRV-Headers
|
||||
)
|
||||
|
||||
if (NOT TARGET SPIRV-Headers)
|
||||
message(FATAL_ERROR "SPIRV-Headers target not defined!")
|
||||
endif()
|
||||
|
||||
if (NOT PROJECT_NAME STREQUAL "SPIRV-Headers")
|
||||
message(FATAL_ERROR "PROJECT_NAME changed!") # Needed for backcompat with SPIRV-Tools.
|
||||
endif()
|
||||
|
||||
if (NOT DEFINED SPIRV-Headers_SOURCE_DIR)
|
||||
message(FATAL_ERROR "SPIRV-Headers_SOURCE_DIR not defined!") # Needed for backcompat with SPIRV-Tools.
|
||||
endif()
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user