Merge pull request #69 from jekstrand/texel-fetch
SPIR-V: Add support for texelFetch
This commit is contained in:
commit
0487d550d1
@ -1690,8 +1690,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
|
|||||||
|
|
||||||
// This is no longer a query....
|
// This is no longer a query....
|
||||||
|
|
||||||
if (cracked.fetch)
|
|
||||||
spv::MissingFunctionality("texel fetch");
|
|
||||||
if (cracked.gather)
|
if (cracked.gather)
|
||||||
spv::MissingFunctionality("texture gather");
|
spv::MissingFunctionality("texture gather");
|
||||||
|
|
||||||
@ -1747,7 +1745,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
|
|||||||
++extraArgs;
|
++extraArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder.createTextureCall(precision, convertGlslangToSpvType(node->getType()), cracked.proj, params);
|
return builder.createTextureCall(precision, convertGlslangToSpvType(node->getType()), cracked.fetch, cracked.proj, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAggregate* node)
|
spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAggregate* node)
|
||||||
|
|||||||
@ -1137,7 +1137,7 @@ Id Builder::createBuiltinCall(Decoration /*precision*/, Id resultType, Id builti
|
|||||||
|
|
||||||
// Accept all parameters needed to create a texture instruction.
|
// Accept all parameters needed to create a texture instruction.
|
||||||
// Create the correct instruction based on the inputs, and make the call.
|
// Create the correct instruction based on the inputs, and make the call.
|
||||||
Id Builder::createTextureCall(Decoration precision, Id resultType, bool proj, const TextureParameters& parameters)
|
Id Builder::createTextureCall(Decoration precision, Id resultType, bool fetch, bool proj, const TextureParameters& parameters)
|
||||||
{
|
{
|
||||||
static const int maxTextureArgs = 10;
|
static const int maxTextureArgs = 10;
|
||||||
Id texArgs[maxTextureArgs] = {};
|
Id texArgs[maxTextureArgs] = {};
|
||||||
@ -1196,7 +1196,9 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool proj, co
|
|||||||
//
|
//
|
||||||
Op opCode;
|
Op opCode;
|
||||||
opCode = OpImageSampleImplicitLod;
|
opCode = OpImageSampleImplicitLod;
|
||||||
if (xplicit) {
|
if (fetch) {
|
||||||
|
opCode = OpImageFetch;
|
||||||
|
} else if (xplicit) {
|
||||||
if (parameters.Dref) {
|
if (parameters.Dref) {
|
||||||
if (proj)
|
if (proj)
|
||||||
opCode = OpImageSampleProjDrefExplicitLod;
|
opCode = OpImageSampleProjDrefExplicitLod;
|
||||||
|
|||||||
@ -298,7 +298,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Select the correct texture operation based on all inputs, and emit the correct instruction
|
// Select the correct texture operation based on all inputs, and emit the correct instruction
|
||||||
Id createTextureCall(Decoration precision, Id resultType, bool proj, const TextureParameters&);
|
Id createTextureCall(Decoration precision, Id resultType, bool fetch, bool proj, const TextureParameters&);
|
||||||
|
|
||||||
// Emit the OpTextureQuery* instruction that was passed in.
|
// Emit the OpTextureQuery* instruction that was passed in.
|
||||||
// Figure out the right return value and type, and return it.
|
// Figure out the right return value and type, and return it.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user