diff --git a/media_driver/agnostic/Xe_M/Xe_XPM/hw/mhw_state_heap_xe_xpm.c b/media_driver/agnostic/Xe_M/Xe_XPM/hw/mhw_state_heap_xe_xpm.c index d7891b63a8..6bb96eddcc 100644 --- a/media_driver/agnostic/Xe_M/Xe_XPM/hw/mhw_state_heap_xe_xpm.c +++ b/media_driver/agnostic/Xe_M/Xe_XPM/hw/mhw_state_heap_xe_xpm.c @@ -178,7 +178,18 @@ MOS_STATUS MHW_STATE_HEAP_INTERFACE_XE_XPM::AddSamplerStateData( mhw_state_heap_xe_xpm::SAMPLER_STATE_CMD unormSampler; mhw_state_heap_xe_xpm::SAMPLER_INDIRECT_STATE_CMD indirectState; + // indirectState is scratch space consumed entirely within this block: + // SetSamplerState writes to it via pParam->Unorm.pIndirectState and the + // result is copied out below. The pointer never outlives indirectState, + // so suppress GCC's false-positive dangling-pointer warning (GCC 16+). +#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 12) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-pointer" +#endif pParam->Unorm.pIndirectState = &indirectState; +#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 12) +#pragma GCC diagnostic pop +#endif MHW_MI_CHK_STATUS(SetSamplerState(&unormSampler, pParam)); diff --git a/media_driver/agnostic/gen11/hw/mhw_state_heap_g11.c b/media_driver/agnostic/gen11/hw/mhw_state_heap_g11.c index 5c034d5e30..4ee6c74f77 100644 --- a/media_driver/agnostic/gen11/hw/mhw_state_heap_g11.c +++ b/media_driver/agnostic/gen11/hw/mhw_state_heap_g11.c @@ -894,7 +894,18 @@ MOS_STATUS MHW_STATE_HEAP_INTERFACE_G11_X::AddSamplerStateData( mhw_state_heap_g11_X::SAMPLER_STATE_CMD unormSampler; mhw_state_heap_g11_X::SAMPLER_INDIRECT_STATE_CMD indirectState; + // indirectState is scratch space consumed entirely within this block: + // SetSamplerState writes to it via pParam->Unorm.pIndirectState and the + // result is copied out below. The pointer never outlives indirectState, + // so suppress GCC's false-positive dangling-pointer warning (GCC 16+). +#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 12) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-pointer" +#endif pParam->Unorm.pIndirectState = &indirectState; +#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 12) +#pragma GCC diagnostic pop +#endif MHW_MI_CHK_STATUS(SetSamplerState(&unormSampler, pParam)); diff --git a/media_driver/agnostic/gen12/hw/mhw_state_heap_g12.c b/media_driver/agnostic/gen12/hw/mhw_state_heap_g12.c index e80b246a2a..d09b134d3a 100644 --- a/media_driver/agnostic/gen12/hw/mhw_state_heap_g12.c +++ b/media_driver/agnostic/gen12/hw/mhw_state_heap_g12.c @@ -777,7 +777,18 @@ MOS_STATUS MHW_STATE_HEAP_INTERFACE_G12_X::AddSamplerStateData( mhw_state_heap_g12_X::SAMPLER_STATE_CMD unormSampler; mhw_state_heap_g12_X::SAMPLER_INDIRECT_STATE_CMD indirectState; + // indirectState is scratch space consumed entirely within this block: + // SetSamplerState writes to it via pParam->Unorm.pIndirectState and the + // result is copied out below. The pointer never outlives indirectState, + // so suppress GCC's false-positive dangling-pointer warning (GCC 16+). +#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 12) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-pointer" +#endif pParam->Unorm.pIndirectState = &indirectState; +#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 12) +#pragma GCC diagnostic pop +#endif MHW_MI_CHK_STATUS(SetSamplerState(&unormSampler, pParam)); diff --git a/media_driver/agnostic/gen8/hw/mhw_state_heap_g8.c b/media_driver/agnostic/gen8/hw/mhw_state_heap_g8.c index 1f0ac117b4..5d822ee963 100644 --- a/media_driver/agnostic/gen8/hw/mhw_state_heap_g8.c +++ b/media_driver/agnostic/gen8/hw/mhw_state_heap_g8.c @@ -831,7 +831,18 @@ MOS_STATUS MHW_STATE_HEAP_INTERFACE_G8_X::AddSamplerStateData( mhw_state_heap_g8_X::SAMPLER_STATE_CMD unormSampler; mhw_state_heap_g8_X::SAMPLER_INDIRECT_STATE_CMD indirectState; + // indirectState is scratch space consumed entirely within this block: + // SetSamplerState writes to it via pParam->Unorm.pIndirectState and the + // result is copied out below. The pointer never outlives indirectState, + // so suppress GCC's false-positive dangling-pointer warning (GCC 16+). +#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 12) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-pointer" +#endif pParam->Unorm.pIndirectState = &indirectState; +#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 12) +#pragma GCC diagnostic pop +#endif MHW_MI_CHK_STATUS(SetSamplerState(&unormSampler, pParam)); diff --git a/media_driver/agnostic/gen9/hw/mhw_state_heap_g9.c b/media_driver/agnostic/gen9/hw/mhw_state_heap_g9.c index f37b59c15e..858e144d07 100644 --- a/media_driver/agnostic/gen9/hw/mhw_state_heap_g9.c +++ b/media_driver/agnostic/gen9/hw/mhw_state_heap_g9.c @@ -1035,7 +1035,18 @@ MOS_STATUS MHW_STATE_HEAP_INTERFACE_G9_X::AddSamplerStateData( mhw_state_heap_g9_X::SAMPLER_STATE_CMD unormSampler; mhw_state_heap_g9_X::SAMPLER_INDIRECT_STATE_CMD indirectState; + // indirectState is scratch space consumed entirely within this block: + // SetSamplerState writes to it via pParam->Unorm.pIndirectState and the + // result is copied out below. The pointer never outlives indirectState, + // so suppress GCC's false-positive dangling-pointer warning (GCC 16+). +#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 12) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-pointer" +#endif pParam->Unorm.pIndirectState = &indirectState; +#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 12) +#pragma GCC diagnostic pop +#endif MHW_MI_CHK_STATUS(SetSamplerState(&unormSampler, pParam));