Comments (2)
This will be one of the cases we will NOT follow dxc's behavior because that behavior is fundamentally flawed.
In HLSL, resource types are just handles.
If a function has an inout Texture2D, it doesn't mean the texture itself is modifiable, instead it just means the function may return another texture handle through that function parameter. This means that the caller needs to pass in a l-valued texture handle. Since global shader parameters are not l-values, passing them to an out parameter is incorrect from the type system's point of view, and this behavior is consistent and desired.
The HLSL language has made various mistakes confusing the mutability of a handle vs. the things pointed to by the handle. An example is the OutputIndices type of mesh shaders. They should have been treated as an handle through which modifications are made, therefore the handle itself should just be "in", instead of "out" in the entry point signature.
In slang we care a lot about type system consistency and we try to avoid confusing mistakes in HLSL.
from slang.
I will close this issue because I feel strong enough that this isn't something we should "fix" in Slang.
from slang.
Related Issues (20)
- spirv core grammar embed isn't generated at built time
- `None`: defined as constant under Linux HOT 5
- Metal: Metal fails to compile `ByteAddressBuffer` correctly with use of `getEquivalentStructuredBuffer`
- Unexpected crash when compiling using Slang API HOT 1
- Translate all metal entry point legalization logic into `EntryPointVaryingParamLegalizeContext`
- [MDL:3/5] Benchmark compilation times HOT 8
- [MDL:4/5] Benchmark the runtime performance HOT 1
- [MDL:5/5] Add support for embedded precompiled library feature HOT 1
- Enable warnings-as-error on CI tests
- Slang parser incorrectly recognizes line continuations HOT 1
- slang not annotating array as restricted or aliased
- Capability System: Simplify CapabilitySet Diagnostic Printing
- Capability System: Fully define all capabilities meant for a user with 2 representations `_Internal_atom`/`External_atom` HOT 1
- Need further development of built-in interfaces
- Capability System: Simplify how we report incompatibilities of CapabilitySets to users
- Ignore CI when only `docs/proposal` is changed.
- `all` and/or `==` doesn't work as intended on metal. HOT 1
- ConstantBuffer inside a ParameterBlock breaks the compiler when targeting metal.
- AST: `CheckSwizzleExpr` can cause Stack around the variable 'elementIndices' was corrupted.
- AST: `CheckSwizzleExpr` can cause `Stack around the variable 'elementIndices' was corrupted` error
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from slang.