Skip to content

Pull upstream #9

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 93 commits into from
Jul 24, 2025
Merged

Conversation

AnastaZIuk
Copy link
Member

No description provided.

alecardoso-tech and others added 30 commits April 18, 2025 14:59
Test class `ShaderOpTest` had a `HANDLE` not closed after `RunShaderOp`
test ran.

Created a constructor and destructor for the Test Class to manage the
`HANDLE`.
DXC seems to be building inocrrectly with GCC-13 and later, which is
causing our pre-merge testing on 24.04 to fail. This will take some time
to sort out, so in the meantime I'm reverting to 22.04 on our pipelines.
- Generalize raypayload validation to HitObject::TraceRay|Invoke
- Reject non-numeric payload types in [HitObject::]TraceRay|Invoke

Specification:
https://github.com/microsoft/hlsl-specs/blob/main/proposals/0027-shader-execution-reordering.md

Bug: #7234 [SER] Diagnose and validate illegal use of HitObject in
unsupported contexts
Lowering for
- HitObject::TraceRay
- HitObject::Invoke

Specification:
https://github.com/microsoft/hlsl-specs/blob/main/proposals/0027-shader-execution-reordering.md
DXC SER implementation tracker:: #7214
Update the submodules to the latest release candidate for the Vulkan
SDK.
Lowering for all HitObject accessors (ex GetAttributes)

Specification:
https://github.com/microsoft/hlsl-specs/blob/main/proposals/0027-shader-execution-reordering.md
DXC SER implementation tracker::
#7214
* HLSL -> DXIL lowering
* ast, hlsl->dxil, dxilgen, and ScalarReplAggregatesHLSL tests

SER implementation tracker (#7214)
Validate:
 HitObject_GeometryIndex
 HitObject_HitKind
 HitObject_InstanceID
 HitObject_InstanceIndex
 HitObject_IsHit
 HitObject_IsMiss
 HitObject_IsNop
 HitObject_LoadLocalRootTableConstant
 HitObject_ObjectRayDirection
 HitObject_ObjectRayOrigin
 HitObject_ObjectToWorld3x4
 HitObject_PrimitiveIndex
 HitObject_RayFlags
 HitObject_RayTCurrent
 HitObject_RayTMin
 HitObject_SetShaderTableIndex
 HitObject_ShaderTableIndex
 HitObject_WorldRayDirection
 HitObject_WorldRayOrigin

Rules:
* No undef parameters (HitObject, RecordIndex, RootTableOffset)
* row/col/component indices are constant and in-bounds
* If constant, RootTableOffset % 4 == 0

SER implementation tracker:
#7214
Validate:
 HitObject_MakeMiss

Rules:
 No undef MissShaderIndex or RayFlags

SER implementation tracker: #7214
The first parameter of the HLSL_INTRINSIC record is actually a dummy
entry for the function name.
When builtin member function templates are instantiated, the 'this' ptr
is added as the first ParamVarDecl, which has the same index as the
first argument in the HLSL_INTRINSIC record.
This shifts the parameter names by one for static member functions, as
those do not have a 'this' pointer, as in:

```
| | | `-CXXMethodDecl {{[^ ]+}} <<invalid sloc>> <invalid sloc> used MakeMiss 'dx::HitObject (unsigned int, unsigned int, RayDesc)' static
| | |   |-TemplateArgument type 'dx::HitObject'
| | |   |-TemplateArgument type 'unsigned int'
| | |   |-TemplateArgument type 'unsigned int'
| | |   |-TemplateArgument type 'RayDesc'
| | |   |-ParmVarDecl {{[^ ]+}} <<invalid sloc>> <invalid sloc> MakeMiss 'unsigned int'
| | |   |-ParmVarDecl {{[^ ]+}} <<invalid sloc>> <invalid sloc> RayFlags 'unsigned int'
| | |   |-ParmVarDecl {{[^ ]+}} <<invalid sloc>> <invalid sloc> MissShaderIndex 'RayDesc'
```

The fix is the take the first actual parameter name of the
HLSL_INTRINSIC if a static member function template is declared.

Closes #7374
…ics (#7290) (#7381)

Authored-by: Anupama Chandrasekhar <anupamac@nvidia.com>

Implements
HLSL:
__builtin_MatVecMul
__builtin_MatVecMulAdd
__builtin_OuterProductAccumulate
__builtin_VectorAccumulate

Lowered to
DXIL:
@dx.op.matVecMul
@dx.op.matVecMulAdd
 @dx.op.outerProductAccumulate
 @dx.op.vectorAccumulate

---------

Co-authored-by: Anupama Chandrasekhar <anupamac@nvidia.com>
Co-authored-by: Simon Moll <smoll@nvidia.com>
(cherry picked from commit 1db8c5b)
The current implementation of OpExecutionModeId assumes that the
operands must be OpConstants. However, they could be the id of a
spec constant. The first step in allowing OpExecutionModeId is to modify
the internal representation of the instruction to hold general spirv
instructions.

Part of #5960
and #3092.
This PR introduces the linear algebra header file, and places it in a
location that is by default included in all HLSL compilation. The
builtins in the API aren't yet defined, and depend on the #7290 PR
merging first.
The tests that have been added have temporary diagnostic messages while
7290 is in progress. They will need to be updated. Open to feedback on
better / suggested error messages, or whether there shouldn't be any
sema-level validation for these errors.

Fixes
[#7304](#7304)

Cherrypick of
#7350

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Validator did not recognize %dx.types.HitObject as an allowed type. This
lead to validation failures in -Od compiles where allocas, loads and
stores remain in the generated DXIL:

```
  dxc.exe -T lib_6_9 -Od \tools\clang\test\CodeGenDXIL\hlsl\intrinsics\maybereorder.hlsl
  error: validation errors
  error: Declaration '%dx.types.HitObject = type { i8* }' uses a reserved prefix.
```
Closes #7387
This PR changes the default validation behavior to use the internal
validator by default.
If no options are specified, the internal validator will be used, and if
it fails, then compilation fails.
The external validator can still be run but must be explicitly chosen.
Specifying internal works just as before.

There is plenty of testing and infrastructure that needs to be added to
verify this change, but that needs to be added in a separate change.
This change is step 1.

Addresses #7389
Update version to 1.8.2505
Add upcoming release section to the release notes.
This test that enables spirv codegen needs to be in a directory that has
a lit cfg file that specifies that spirv is required, that lack of spirv
codegen means the test is unsupported.
…dator (#7409)

This change removes the code meant to pass through to DXIL.dll when
creating a CLSID_DxcValidator object with DxcCreateInstance.

Since the internal validator is now the default, and it will sign
shaders, there is no reason to pass through to DXIL.dll when using
DxcCreateInstance on DxCompiler.dll.

Testing will come with planned work to include the ability to globally
override the default validator to external.
…versoin (#7408)

Internal testing using older validators reveals some failures on tests
that were intended to be run on newer validators. This PR changes the
tests to require a minimum validation version to run.
Validate:
 HitObject_FromRayQuery
 HitObject_FromRayQueryWithAttrs

Rules:
 No `undef` inputs

SER implementation tracker: #7214
Validate:
 HitObject_Invoke
 HitObject_TraceRay

Rules:
 No undef params
 Resource handle must be AS

SER implementation tracker: #7214
We will get a crash when use spirv intrinsic to create a constant value.
```fundamental
fatal error: generated SPIR-V is invalid: Constant cannot appear in a function declaration
  %spirvIntrinsicType_42 = OpConstant %spirvIntrinsicType 42
```
Show 'REORDER_SCOPE' memory flag rejected pre DXIL 1.9. REORDER_SCOPE
validation logic already implemented in #7263

Move REORDER_SCOPE validation tests to `LitDXILValidation/` and adapt
RUN lines as we are touching this (#7359).

SER implementation tracker: #7214
This PR removes a dead fallthrough statement after a switch-statement's
case that is terminated by a break;
This needs to be removed, because the way linux builds dxc in our
internal infrastructure, it errors when a dead fallthrough statement is
detected.
For context, here is the relevant error:

```
ScalarReplAggregatesHLSL.cpp:2822:9: error: fallthrough annotation in unreachable code [-Werror,-Wimplicit-fallthrough]
        LLVM_FALLTHROUGH;
        ^
... DXC/include/llvm/Support/Compiler.h:224:26: note: expanded from macro 'LLVM_FALLTHROUGH'
#define LLVM_FALLTHROUGH [[fallthrough]]
                         ^
1 error generated.
```
This updates the clang-format-checker action workflow to pull the format
checker and tools from `main` instead of from the PR.

Note: This PR basically can't be tested pre-merge since the pre-merge
check will use the version of the action in `main`.
Several intrinsics that were enabled for native vectors late got their
testing removed as it expected scalarized forms. This adds tests for
pow, modf, and abs in their native vector intrinsic forms. It removes
native vector intrinsics for derivative operations as they require more
scalarization removal due to their convergent markers and restores the
scalarized testing for them. The 1024 size was removed from
longvec-intrinsics as the verbose way that constant vectors are
represented in the disassembly made the test take significantly longer.
This PR removes the select-validator option. It is being deprecated, and
it wasn't ever officially documented.
Fixes #7419
dependabot bot and others added 28 commits June 18, 2025 13:23
Bumps [requests](https://github.com/psf/requests) from 2.32.0 to 2.32.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/psf/requests/releases">requests's
releases</a>.</em></p>
<blockquote>
<h2>v2.32.4</h2>
<h2>2.32.4 (2025-06-10)</h2>
<p><strong>Security</strong></p>
<ul>
<li>CVE-2024-47081 Fixed an issue where a maliciously crafted URL and
trusted
environment will retrieve credentials for the wrong hostname/machine
from a
netrc file. (<a
href="https://redirect.github.com/psf/requests/issues/6965">#6965</a>)</li>
</ul>
<p><strong>Improvements</strong></p>
<ul>
<li>Numerous documentation improvements</li>
</ul>
<p><strong>Deprecations</strong></p>
<ul>
<li>Added support for pypy 3.11 for Linux and macOS. (<a
href="https://redirect.github.com/psf/requests/issues/6926">#6926</a>)</li>
<li>Dropped support for pypy 3.9 following its end of support. (<a
href="https://redirect.github.com/psf/requests/issues/6926">#6926</a>)</li>
</ul>
<h2>v2.32.3</h2>
<h2>2.32.3 (2024-05-29)</h2>
<p><strong>Bugfixes</strong></p>
<ul>
<li>Fixed bug breaking the ability to specify custom SSLContexts in
sub-classes of
HTTPAdapter. (<a
href="https://redirect.github.com/psf/requests/issues/6716">#6716</a>)</li>
<li>Fixed issue where Requests started failing to run on Python versions
compiled
without the <code>ssl</code> module. (<a
href="https://redirect.github.com/psf/requests/issues/6724">#6724</a>)</li>
</ul>
<h2>v2.32.2</h2>
<h2>2.32.2 (2024-05-21)</h2>
<p><strong>Deprecations</strong></p>
<ul>
<li>
<p>To provide a more stable migration for custom HTTPAdapters impacted
by the CVE changes in 2.32.0, we've renamed <code>_get_connection</code>
to
a new public API, <code>get_connection_with_tls_context</code>. Existing
custom
HTTPAdapters will need to migrate their code to use this new API.
<code>get_connection</code> is considered deprecated in all versions of
Requests&gt;=2.32.0.</p>
<p>A minimal (2-line) example has been provided in the linked PR to ease
migration, but we strongly urge users to evaluate if their custom
adapter
is subject to the same issue described in CVE-2024-35195. (<a
href="https://redirect.github.com/psf/requests/issues/6710">#6710</a>)</p>
</li>
</ul>
<h2>v2.32.1</h2>
<h2>2.32.1 (2024-05-20)</h2>
<p><strong>Bugfixes</strong></p>
<ul>
<li>Add missing test certs to the sdist distributed on PyPI.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psf/requests/blob/main/HISTORY.md">requests's
changelog</a>.</em></p>
<blockquote>
<h2>2.32.4 (2025-06-10)</h2>
<p><strong>Security</strong></p>
<ul>
<li>CVE-2024-47081 Fixed an issue where a maliciously crafted URL and
trusted
environment will retrieve credentials for the wrong hostname/machine
from a
netrc file.</li>
</ul>
<p><strong>Improvements</strong></p>
<ul>
<li>Numerous documentation improvements</li>
</ul>
<p><strong>Deprecations</strong></p>
<ul>
<li>Added support for pypy 3.11 for Linux and macOS.</li>
<li>Dropped support for pypy 3.9 following its end of support.</li>
</ul>
<h2>2.32.3 (2024-05-29)</h2>
<p><strong>Bugfixes</strong></p>
<ul>
<li>Fixed bug breaking the ability to specify custom SSLContexts in
sub-classes of
HTTPAdapter. (<a
href="https://redirect.github.com/psf/requests/issues/6716">#6716</a>)</li>
<li>Fixed issue where Requests started failing to run on Python versions
compiled
without the <code>ssl</code> module. (<a
href="https://redirect.github.com/psf/requests/issues/6724">#6724</a>)</li>
</ul>
<h2>2.32.2 (2024-05-21)</h2>
<p><strong>Deprecations</strong></p>
<ul>
<li>
<p>To provide a more stable migration for custom HTTPAdapters impacted
by the CVE changes in 2.32.0, we've renamed <code>_get_connection</code>
to
a new public API, <code>get_connection_with_tls_context</code>. Existing
custom
HTTPAdapters will need to migrate their code to use this new API.
<code>get_connection</code> is considered deprecated in all versions of
Requests&gt;=2.32.0.</p>
<p>A minimal (2-line) example has been provided in the linked PR to ease
migration, but we strongly urge users to evaluate if their custom
adapter
is subject to the same issue described in CVE-2024-35195. (<a
href="https://redirect.github.com/psf/requests/issues/6710">#6710</a>)</p>
</li>
</ul>
<h2>2.32.1 (2024-05-20)</h2>
<p><strong>Bugfixes</strong></p>
<ul>
<li>Add missing test certs to the sdist distributed on PyPI.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psf/requests/commit/021dc729f0b71a3030cefdbec7fb57a0e80a6cfd"><code>021dc72</code></a>
Polish up release tooling for last manual release</li>
<li><a
href="https://github.com/psf/requests/commit/821770e822a20a21b207b3907ea83878bda1d396"><code>821770e</code></a>
Bump version and add release notes for v2.32.4</li>
<li><a
href="https://github.com/psf/requests/commit/59f8aa2adf1d3d06bcbf7ce6b13743a1639a5401"><code>59f8aa2</code></a>
Add netrc file search information to authentication documentation (<a
href="https://redirect.github.com/psf/requests/issues/6876">#6876</a>)</li>
<li><a
href="https://github.com/psf/requests/commit/5b4b64c3467fd7a3c03f91ee641aaa348b6bed3b"><code>5b4b64c</code></a>
Add more tests to prevent regression of CVE 2024 47081</li>
<li><a
href="https://github.com/psf/requests/commit/7bc45877a86192af77645e156eb3744f95b47dae"><code>7bc4587</code></a>
Add new test to check netrc auth leak (<a
href="https://redirect.github.com/psf/requests/issues/6962">#6962</a>)</li>
<li><a
href="https://github.com/psf/requests/commit/96ba401c1296ab1dda74a2365ef36d88f7d144ef"><code>96ba401</code></a>
Only use hostname to do netrc lookup instead of netloc</li>
<li><a
href="https://github.com/psf/requests/commit/7341690e842a23cf18ded0abd9229765fa88c4e2"><code>7341690</code></a>
Merge pull request <a
href="https://redirect.github.com/psf/requests/issues/6951">#6951</a>
from tswast/patch-1</li>
<li><a
href="https://github.com/psf/requests/commit/6716d7c9f29df636643fa2489f98890216525cb0"><code>6716d7c</code></a>
remove links</li>
<li><a
href="https://github.com/psf/requests/commit/a7e1c745dc23c18e836febd672416ed0c5d8d8ae"><code>a7e1c74</code></a>
Update docs/conf.py</li>
<li><a
href="https://github.com/psf/requests/commit/c799b8167a13416833ad3b4f3298261a477e826f"><code>c799b81</code></a>
docs: fix dead links to kenreitz.org</li>
<li>Additional commits viewable in <a
href="https://github.com/psf/requests/compare/v2.32.0...v2.32.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=requests&package-manager=pip&previous-version=2.32.0&new-version=2.32.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/DirectXShaderCompiler/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Two instances of the err_integer_literal_too_large diagnostic in HLSL
specific code within Sema::ActOnNumericConstant() had a missing
argument. When these diagnostics were raised this caused an assert in an
assert enabled DXC, and random corruption of the diagnostic text in a
non-assert enabled DXC.

The trivial fix is to supply the required argument.

Fixes #7425

Co-authored-by: Tim Corringham <tcorring@amd.com>
….cpp (#7556)

Addresses #7555 

All but one are simple updates to use std::numeric_limits<T>.
One case converts to use ~ operator and includes a comment with
additional context.
…T> cases (#7559)

Addresses #7558. There is also one trivial change to use the ~ operator
included in LEB128.h. My notes on the files were wrong and suggested
that it should use std::numeric_limits<T> but looking at it again using
~0ULL made more sense.
I just learned more about the VK feature. In VK1.3, the validation rule
was moved from the existence of the capability to being specific to the
format. It is possible that people will see regressions if their code
runs on a driver that does not support
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT or
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT for the format used
by the developer.

Reverts #7528
Updating SPIRV-{Headers,Tools} for the release.
…omplement instead of negation (#7567)

Addresses #7565

A few more instances where we can take advantage of -N being equivalent
to (~N + 1)
…stances (#7574)

## Fix C4146 warnings: unary minus on unsigned types

Fixes several remaining MSVC C4146 warnings where unary minus was
applied to unsigned integers.
This should be the last PR containing MSVC C4146 warning fixes. I will
remove the disablement of the warning as an error in a subsequent PR
once the other pending PRs are completed.

**Changes:**
- Replace `-(unsigned_value)` with `~unsigned_value + 1` for offset
calculations
- Use `-1LL` instead of `-1ULL` where signed values are intended
- Fix alignment padding calculation to avoid unsigned negation

**Files changed:**
- CoverageMappingGen.cpp, Lexer.cpp, Rewriter.cpp: Use two's complement
for safe unsigned negation in offset calculations
- ItaniumCXXABI.cpp: Use signed literal for ABI-compliant null member
pointer (-1)
- ExprConstant.cpp: Replace `-1ULL` with `~0ULL` for bitmasks
- CodeGenMapTable.cpp: Fix sentinel value generation

All changes are mathematically equivalent and preserve existing behavior
while eliminating compiler warnings.

Addresses #7573
… of negation (#7562)

Replaces uses of the unary - operator on signed integers with the
equivalent (sort of, see the details below) expression '~N + 1',
assigning the result to an unsigned type. This avoids undefined behavior
in edge cases and ensures correctness when certain conditions are met.

Details:
This transformation is valid when:

The signed value N is guaranteed to be negative.
The result is stored in an unsigned type that can represent the full
range of the signed type (e.g., uint64_t for int64_t).
The system uses two's complement representation (as is standard on
modern platforms).
While -N is undefined for the minimum representable value (e.g.,
INT64_MIN), the expression ~N + 1 remains well-defined and yields the
correct bit pattern. Assigning this result to an appropriately sized
unsigned type preserves the intended two's complement interpretation
without triggering undefined behavior.

Addresses #7561.
There were two problems with processing the status parameter with the
reword of the buffer load code. The first was that the status was not
being passed down to the load instruction generation for aggregate types
in any shader model version. The second was that the status retrieval
from the resret returned by the raw buffer loads was using the wrong
index for native vectors supported by shader model 6.9.

The status Value was not getting passed all the way down to the load
instruction generation for aggregate types because the refactored helper
constructor would always set it to null. It needs to be explicitly
stated since by that point, the original call instruction it came from
has been lost amidst subsequent GEPs, bitcasts, and/or loads that
aggregate types (arrays and structs) will use on the results of the
original call instruction to get the exact element required.

This changes the constructor to take an optional status parameter
allowing the locations where it might be set to pass it along. In other
cases, it will be null and be appropriately ignored.

Modified aggregate tests to verify this behavior. This required keeping
track of the return of the last load operation involved in a raw buffer
load, which made arrays more complicated. Rather than give them their
own CHECK prefix, I lumped them in with large matrices requiring three
loads. This did require making all the array lengths 3 to match. The
loss in test variability is worth the convenience as there is no known
distinction when it comes to array sizes over 1.

The status retrieval from the ResRet returned by the raw buffer loads
was using the wrong index for native vectors supported by shader model
6.9. Adjusting the index according to the opcode ensures that the index
will be correct.

This also required a change to validation that allows
checkAccessFullyMapped to operate on the second element extracted from a
ResRet where applicable and some corresponding null tolerance in related
code.

Adds status retrieving overloads to the relevant load/store tests for
sm6.9, aggregates, and other loads though the last category exhibited no
issues. At least I got some statuses right!

Fixes #7508
Update release notes in preparation for release
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.2 to 2.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/urllib3/urllib3/releases">urllib3's
releases</a>.</em></p>
<blockquote>
<h2>2.5.0</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h1>Security issues</h1>
<p>urllib3 2.5.0 fixes two moderate security issues:</p>
<ul>
<li>Pool managers now properly control redirects when
<code>retries</code> is passed — CVE-2025-50181 reported by <a
href="https://github.com/sandumjacob"><code>@​sandumjacob</code></a>
(5.3 Medium, GHSA-pq67-6m6q-mj2v)</li>
<li>Redirects are now controlled by urllib3 in the Node.js runtime —
CVE-2025-50182 (5.3 Medium, GHSA-48p4-8xcf-vxj5)</li>
</ul>
<h1>Features</h1>
<ul>
<li>Added support for the <code>compression.zstd</code> module that is
new in Python 3.14. See <a href="https://peps.python.org/pep-0784/">PEP
784</a> for more information. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3610">#3610</a>)</li>
<li>Added support for version 0.5 of <code>hatch-vcs</code> (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3612">#3612</a>)</li>
</ul>
<h1>Bugfixes</h1>
<ul>
<li>Raised exception for <code>HTTPResponse.shutdown</code> on a
connection already released to the pool. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3581">#3581</a>)</li>
<li>Fixed incorrect <code>CONNECT</code> statement when using an IPv6
proxy with <code>connection_from_host</code>. Previously would not be
wrapped in <code>[]</code>. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3615">#3615</a>)</li>
</ul>
<h2>2.4.0</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h1>Features</h1>
<ul>
<li>Applied PEP 639 by specifying the license fields in pyproject.toml.
(<a
href="https://redirect.github.com/urllib3/urllib3/issues/3522">#3522</a>)</li>
<li>Updated exceptions to save and restore more properties during the
pickle/serialization process. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3567">#3567</a>)</li>
<li>Added <code>verify_flags</code> option to
<code>create_urllib3_context</code> with a default of
<code>VERIFY_X509_PARTIAL_CHAIN</code> and
<code>VERIFY_X509_STRICT</code> for Python 3.13+. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3571">#3571</a>)</li>
</ul>
<h1>Bugfixes</h1>
<ul>
<li>Fixed a bug with partial reads of streaming data in Emscripten. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3555">#3555</a>)</li>
</ul>
<h1>Misc</h1>
<ul>
<li>Switched to uv for installing development dependecies. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3550">#3550</a>)</li>
<li>Removed the <code>multiple.intoto.jsonl</code> asset from GitHub
releases. Attestation of release files since v2.3.0 can be found on
PyPI. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3566">#3566</a>)</li>
</ul>
<h2>2.3.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/urllib3/urllib3/blob/main/CHANGES.rst">urllib3's
changelog</a>.</em></p>
<blockquote>
<h1>2.5.0 (2025-06-18)</h1>
<h2>Features</h2>
<ul>
<li>Added support for the <code>compression.zstd</code> module that is
new in Python 3.14.
See <code>PEP 784 &lt;https://peps.python.org/pep-0784/&gt;</code>_ for
more information.
(<code>[#3610](urllib3/urllib3#3610)
&lt;https://github.com/urllib3/urllib3/issues/3610&gt;</code>__)</li>
<li>Added support for version 0.5 of <code>hatch-vcs</code>
(<code>[#3612](urllib3/urllib3#3612)
&lt;https://github.com/urllib3/urllib3/issues/3612&gt;</code>__)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Fixed a security issue where restricting the maximum number of
followed
redirects at the <code>urllib3.PoolManager</code> level via the
<code>retries</code> parameter
did not work.</li>
<li>Made the Node.js runtime respect redirect parameters such as
<code>retries</code>
and <code>redirects</code>.</li>
<li>Raised exception for <code>HTTPResponse.shutdown</code> on a
connection already released to the pool.
(<code>[#3581](urllib3/urllib3#3581)
&lt;https://github.com/urllib3/urllib3/issues/3581&gt;</code>__)</li>
<li>Fixed incorrect <code>CONNECT</code> statement when using an IPv6
proxy with <code>connection_from_host</code>. Previously would not be
wrapped in <code>[]</code>.
(<code>[#3615](urllib3/urllib3#3615)
&lt;https://github.com/urllib3/urllib3/issues/3615&gt;</code>__)</li>
</ul>
<h1>2.4.0 (2025-04-10)</h1>
<h2>Features</h2>
<ul>
<li>Applied PEP 639 by specifying the license fields in pyproject.toml.
(<code>[#3522](urllib3/urllib3#3522)
&lt;https://github.com/urllib3/urllib3/issues/3522&gt;</code>__)</li>
<li>Updated exceptions to save and restore more properties during the
pickle/serialization process.
(<code>[#3567](urllib3/urllib3#3567)
&lt;https://github.com/urllib3/urllib3/issues/3567&gt;</code>__)</li>
<li>Added <code>verify_flags</code> option to
<code>create_urllib3_context</code> with a default of
<code>VERIFY_X509_PARTIAL_CHAIN</code> and
<code>VERIFY_X509_STRICT</code> for Python 3.13+.
(<code>[#3571](urllib3/urllib3#3571)
&lt;https://github.com/urllib3/urllib3/issues/3571&gt;</code>__)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Fixed a bug with partial reads of streaming data in Emscripten.
(<code>[#3555](urllib3/urllib3#3555)
&lt;https://github.com/urllib3/urllib3/issues/3555&gt;</code>__)</li>
</ul>
<h2>Misc</h2>
<ul>
<li>Switched to uv for installing development dependecies.
(<code>[#3550](urllib3/urllib3#3550)
&lt;https://github.com/urllib3/urllib3/issues/3550&gt;</code>__)</li>
<li>Removed the <code>multiple.intoto.jsonl</code> asset from GitHub
releases. Attestation of release files since v2.3.0 can be found on
PyPI. (<code>[#3566](urllib3/urllib3#3566)
&lt;https://github.com/urllib3/urllib3/issues/3566&gt;</code>__)</li>
</ul>
<h1>2.3.0 (2024-12-22)</h1>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/urllib3/urllib3/commit/aaab4eccc10c965897540b21e15f11859d0b62e7"><code>aaab4ec</code></a>
Release 2.5.0</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/7eb4a2aafe49a279c29b6d1f0ed0f42e9736194f"><code>7eb4a2a</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/f05b1329126d5be6de501f9d1e3e36738bc08857"><code>f05b132</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/d03fe327a71d09728512217149f269763671f296"><code>d03fe32</code></a>
Fix HTTP tunneling with IPv6 in older Python versions</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/11661e9bb4278e43d081f47a516e287a928c2206"><code>11661e9</code></a>
Bump github/codeql-action from 3.28.0 to 3.29.0 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3624">#3624</a>)</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/6a0ecc6b16fe30f721021b44a81d19615098c71e"><code>6a0ecc6</code></a>
Update v2 migration guide to 2.4.0 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3621">#3621</a>)</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/8e32e60d9024c05bc6f7adda08bdf6c539d0b0d4"><code>8e32e60</code></a>
Raise exception for shutdown on a connection already released to the
pool (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3">#3</a>...</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/9996e0fbf90b77083ad3c73737a6c6395703faa9"><code>9996e0f</code></a>
Fix emscripten CI for Chrome 137+ (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3599">#3599</a>)</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/4fd1a99a59725faf0efc946ce3b6bc9a194420af"><code>4fd1a99</code></a>
Bump RECENT_DATE (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3617">#3617</a>)</li>
<li><a
href="https://github.com/urllib3/urllib3/commit/c4b5917e911a90c8bf279448df8952a682294135"><code>c4b5917</code></a>
Add support for the new <code>compression.zstd</code> module in Python
3.14 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3611">#3611</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/urllib3/urllib3/compare/2.2.2...2.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=urllib3&package-manager=pip&previous-version=2.2.2&new-version=2.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/DirectXShaderCompiler/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Addresses #7584 by removing the warning disable for 4146. Also includes
a few trivial fixes for C4146 across several files that were missed in
previous PRs.
Resolves `C33010` which is currently blocking the release pipeline.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
The key change here is the & in DxcDxilPixStorage.cpp. The generated
DXIL packs the bitfields into their 32- or 64-bit-typed Values as
expected, but this code, when trying to figure out which Value a
bitfield lives in, was looking up the unpacked bit offset, so only
fields within the zeroth underlying Value were being reported correctly.

With this change, PIX reports correct bitfield values wherever they
live, including within deeply nested structs.

Unfortunately, the tests had to be in C++ because file-check obv.
doesn't run the APIs that PIX uses to read debug data.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…7549)

**Summary**  
Adds infrastructure for long vector execution tests. This code and
additional test cases were already added to the staging-sm6.9 branch.
This is the second of several PRs to bring these changes into main. That
being said, reviews of this code should treat it as brand new. Resolves
#7545

**Includes:**
- A new test class `LongVector::OpTest` in `LongVectors.h/cpp`, still
part of the `ExecHLSLTests.dll` binary.
- HLSL source added to `ShaderOpArith.xml` to leverage the existing exec
test framework for shader compilation and execution.
- A new TAEF metadata file `LongVectorOpTable.xml` defining long vector
test cases.
- `LongVectorTestData.h` for statically defined input values, including
`HLSLHalf_t` and `HLSLBool_t`. This avoids duplicating values across
test cases.

**Template Handling**  
To support template instantiation across translation units,
`LongVectors.tpp` contains full template definitions included by
`LongVectors.h`. These were originally required when tests lived in
`ExecutionTests.cpp`. Now that the tests are isolated, the plan is to
move the definitions back into `LongVectors.cpp` after merging the long
vector tests from `staging-sm6.9` to simplify the manual merge.

**Utilities**  
`HlslTestUtils.h` includes minor updates to support the new test
scenarios.
…out (#7539)

I was trying to debug a Vulkan Storage Buffer-related memory alignment
issue in my application where I was using SPIR-V generated via `dxc`
with `-fvk-use-dx-layout`. In `SPIR-V.rst`, I happened to miss the
paragraph that follows the list of layout rules (removed in this
proposal). That paragraph starts with "To use scalar layout", which
given my use of DirectX layout, I did not think was relevant to me.
However, the next sentence of that paragraph sneakily and indirectly
mentions that `VK_EXT_scalar_block_layout` is required for the DirectX
memory layout as well.

I have proposed explicitly stating the extension requirement when the
relevant layout rules are listed.
SPIR-V intrinsics allow us to create spirv basic type and opaque type in
HLSL, but these type are object and not allowed in template parameter.

```fundamental
error: object 'Int8Type' is not allowed in builtin template parameters
    /* OpTypeCooperativeMatrixKHR */ 4456, Int8Type,
                                           ^
```

This doesn't make sense to me, and is not convenience to use. This
change wants to allow that use those in template parameter.
…that allow it. (#7628)

DXC allows user to use decrivative instruction in shader models that do
not allow it, but they must be dead code that will be removed. However,
when we see a derivative instruction in the SPIR-V backend that is not
in a pixel shader we assume it need the DerivativeGroup execution mode,
and we fail when we try to add it to a vertex shader.

To allow out implementation to match DXIL, we will not assume we can add
the execution mode. We will only add it for shader that we know can use
is, and skip the other.

If the derivative instruction is not removed during optimizations, there
will be a validation error.

While fixing this, we observed another bug that is fixed at the same
time since they are closely related. The TaskNV and TaskEXT shader types
do not have the same id, and the SPV_KHR_compute_shader_derivatives does
not work with the NV mesh shader extension. That was fixed up.

Fixes #7478
This PR merges some more long vector exec test code from staging-sm6.9
into main. Specifically, we bring over the helper classes that define
data types for half and bool. Halfs are only available in newer c++
versions so a simple class was needed to implement the proper logic
using existing DX helpers that were added for this same reason. The bool
class is used as the size of a bool in c++ differs from that in HLSL.

Also brings in some tests cases using these data types. Test cases were
verified locally by running against WARP.

Addresses #7546
Many Vulkan driver allow the SPIR-V to use the `Unknown` image format
for storage images and texel buffers. This makes the SPIR-V more
flexible, and it useful for developers. However, it can be cumbersome to
have to add the `vk::image_format` attribute to all resources.

This option allows users to make `Unkown` the default image format for
all resource types.

Fixes #7484
This change fixes issues with intrinsic lookup caused by not correctly
respecting the using declaration(s) that impact unqualified lookups.

This probably isn't a perfect solution because I'm sure there's some
nuance of unqualified lookups in C++ that I'm not handling, but this
does respect scoped using directives and allows us to get things
working.

Additionally this change disables emitting some "declared here" notes
when the source location referred to is invalid.

Fixes #7495
…apping register assignments (#7636)

The issue:
simple vertex shader like so
```
uniform float4x4 gMVP : register(c0);
uniform float4   gFoo : register(c5);
uniform float4   gBar : register(c5);

float4 main(float4 pos : POSITION) : SV_Position {
    return mul(gMVP, pos * gFoo + gBar);
}
```
will result in an internal crash
```
dxc.exe -spirv -T vs_6_2 -E main test.hlsl -Fo test.spirv
Internal compiler error: access violation. Attempted to read from address 0x0000000000000000
```

Due to `LowerTypeVisitor` trying to assign offsets to fields without
explicit locations.
It'll sort fields first, which will fill the map with the fields first.
And since it's using `std::map` - if there's fields with the same
`register` number - it'll only insert first, other will be left out,
resulting nullptrs in the output vector.
We read the content of the vector down the road crashing.

My change fixes the crash and tries to output somewhat useful info about
compilation fail.

I hope this helps you in fixing it properly, or you can take it as it
is.
…nTests::AtomicsShared64Test (#7641)

Fixes #5198. 
 
ExecutionTests::AtomicsShared64Test could sporadically fail.
 
g_sint64Share is indexed with ix%3 + 1, which could lead to an out of
bounds access.
Increase the size of g_sint64Share to 4 and ensure all values are
initialized.
```
Old: T    HitObject::GetAttributes<T>()
New: void HitObject::GetAttributes(out udt)
```
- remove HitObject::GetAttributes<T> template code path from
DeduceTemplateArgumentsForHLSL
- cleanup intersection attribute diagnostic code path
- adjust GetAttributes calls and expected AST, HLOps in tests (DXIL
unaffected)

Closes #7534

This is a breaking change. Merge and release must be coordinated with:
- hlsl-spec change (microsoft/hlsl-specs#495)
- HLK releases (SM6.9 preview tests use old signature)

---------

Co-authored-by: Tex Riddell <texr@microsoft.com>
Resolves #7629

Merge the long vector trig op exec tests from staging-sm6.9.
Verified locally against WARP:
`F:\hlsl.bin\TAEF\x64\te.exe "F:\hlsl.bin\Debug\bin\ExecHLSLTests.dll"
/name:LongVector::OpTest::trig* /p:D3D12SDKVersion=1
/p:"ExperimentalShaders=*"`
Copy link

PR description is empty, please add some valid description

@AnastaZIuk AnastaZIuk merged commit 125a3ce into Devsh-Graphics-Programming:devshFixes Jul 24, 2025
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.