diff --git a/include/bgfx/bgfx.h b/include/bgfx/bgfx.h index b081ee87d..1cb5effb2 100644 --- a/include/bgfx/bgfx.h +++ b/include/bgfx/bgfx.h @@ -1547,7 +1547,6 @@ namespace bgfx , uint32_t _numX = 1 , uint32_t _numY = 1 , uint32_t _numZ = 1 - , uint8_t _flags = BGFX_SUBMIT_EYE_FIRST ); /// Dispatch compute indirect. @@ -1570,7 +1569,6 @@ namespace bgfx , IndirectBufferHandle _indirectHandle , uint16_t _start = 0 , uint16_t _num = 1 - , uint8_t _flags = BGFX_SUBMIT_EYE_FIRST ); /// Discard all previously set state for draw or compute call. @@ -3283,22 +3281,14 @@ namespace bgfx /// /// @param[in] _id View id. /// @param[in] _view View matrix. - /// @param[in] _projL Projection matrix. When using stereo rendering this projection matrix - /// represent projection matrix for left eye. - /// @param[in] _flags View flags. Use - /// - `BGFX_VIEW_NONE` - View will be rendered only once if stereo mode is enabled. - /// - `BGFX_VIEW_STEREO` - View will be rendered for both eyes if stereo mode is enabled. When - /// stereo mode is disabled this flag doesn't have effect. - /// @param[in] _projR Projection matrix for right eye in stereo mode. + /// @param[in] _projProjection matrix. /// - /// @attention C99 equivalent are `bgfx_set_view_transform`, `bgfx_set_view_transform_stereo`. + /// @attention C99 equivalent is `bgfx_set_view_transform`. /// void setViewTransform( ViewId _id , const void* _view - , const void* _projL - , uint8_t _flags = BGFX_VIEW_STEREO - , const void* _projR = NULL + , const void* _proj ); /// Post submit view reordering. @@ -3891,7 +3881,6 @@ namespace bgfx , uint32_t _numX = 1 , uint32_t _numY = 1 , uint32_t _numZ = 1 - , uint8_t _flags = BGFX_SUBMIT_EYE_FIRST ); /// Dispatch compute indirect. @@ -3914,7 +3903,6 @@ namespace bgfx , IndirectBufferHandle _indirectHandle , uint16_t _start = 0 , uint16_t _num = 1 - , uint8_t _flags = BGFX_SUBMIT_EYE_FIRST ); /// Discard all previously set state for draw or compute call. diff --git a/include/bgfx/c99/bgfx.h b/include/bgfx/c99/bgfx.h index 58a583ff1..316693b47 100644 --- a/include/bgfx/c99/bgfx.h +++ b/include/bgfx/c99/bgfx.h @@ -940,9 +940,6 @@ BGFX_C_API void bgfx_set_view_frame_buffer(bgfx_view_id_t _id, bgfx_frame_buffer /**/ BGFX_C_API void bgfx_set_view_transform(bgfx_view_id_t _id, const void* _view, const void* _proj); -/**/ -BGFX_C_API void bgfx_set_view_transform_stereo(bgfx_view_id_t _id, const void* _view, const void* _projL, uint8_t _flags, const void* _projR); - /**/ BGFX_C_API void bgfx_set_view_order(bgfx_view_id_t _id, uint16_t _num, const bgfx_view_id_t* _order); @@ -1046,10 +1043,10 @@ BGFX_C_API void bgfx_set_compute_dynamic_vertex_buffer(uint8_t _stage, bgfx_dyna BGFX_C_API void bgfx_set_compute_indirect_buffer(uint8_t _stage, bgfx_indirect_buffer_handle_t _handle, bgfx_access_t _access); /**/ -BGFX_C_API void bgfx_dispatch(bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags); +BGFX_C_API void bgfx_dispatch(bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ); /**/ -BGFX_C_API void bgfx_dispatch_indirect(bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags); +BGFX_C_API void bgfx_dispatch_indirect(bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num); /**/ BGFX_C_API void bgfx_discard(void); @@ -1151,10 +1148,10 @@ BGFX_C_API void bgfx_encoder_set_compute_dynamic_vertex_buffer(struct bgfx_encod BGFX_C_API void bgfx_encoder_set_compute_indirect_buffer(struct bgfx_encoder_s* _encoder, uint8_t _stage, bgfx_indirect_buffer_handle_t _handle, bgfx_access_t _access); /**/ -BGFX_C_API void bgfx_encoder_dispatch(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags); +BGFX_C_API void bgfx_encoder_dispatch(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ); /**/ -BGFX_C_API void bgfx_encoder_dispatch_indirect(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags); +BGFX_C_API void bgfx_encoder_dispatch_indirect(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num); /**/ BGFX_C_API void bgfx_encoder_discard(struct bgfx_encoder_s* _encoder); diff --git a/include/bgfx/c99/platform.h b/include/bgfx/c99/platform.h index caaeb01c4..9b1d91632 100644 --- a/include/bgfx/c99/platform.h +++ b/include/bgfx/c99/platform.h @@ -154,7 +154,6 @@ typedef struct bgfx_interface_vtbl void (*set_view_mode)(bgfx_view_id_t _id, bgfx_view_mode_t _mode); void (*set_view_frame_buffer)(bgfx_view_id_t _id, bgfx_frame_buffer_handle_t _handle); void (*set_view_transform)(bgfx_view_id_t _id, const void* _view, const void* _proj); - void (*set_view_transform_stereo)(bgfx_view_id_t _id, const void* _view, const void* _projL, uint8_t _flags, const void* _projR); void (*set_view_order)(bgfx_view_id_t _id, uint16_t _num, const bgfx_view_id_t* _order); void (*encoder_set_marker)(struct bgfx_encoder_s* _encoder, const char* _marker); void (*encoder_set_state)(struct bgfx_encoder_s* _encoder, uint64_t _state, uint32_t _rgba); @@ -188,8 +187,8 @@ typedef struct bgfx_interface_vtbl void (*encoder_set_compute_dynamic_index_buffer)(struct bgfx_encoder_s* _encoder, uint8_t _stage, bgfx_dynamic_index_buffer_handle_t _handle, bgfx_access_t _access); void (*encoder_set_compute_dynamic_vertex_buffer)(struct bgfx_encoder_s* _encoder, uint8_t _stage, bgfx_dynamic_vertex_buffer_handle_t _handle, bgfx_access_t _access); void (*encoder_set_compute_indirect_buffer)(struct bgfx_encoder_s* _encoder, uint8_t _stage, bgfx_indirect_buffer_handle_t _handle, bgfx_access_t _access); - void (*encoder_dispatch)(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags); - void (*encoder_dispatch_indirect)(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags); + void (*encoder_dispatch)(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ); + void (*encoder_dispatch_indirect)(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num); void (*encoder_discard)(struct bgfx_encoder_s* _encoder); void (*encoder_blit)(struct bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_texture_handle_t _dst, uint8_t _dstMip, uint16_t _dstX, uint16_t _dstY, uint16_t _dstZ, bgfx_texture_handle_t _src, uint8_t _srcMip, uint16_t _srcX, uint16_t _srcY, uint16_t _srcZ, uint16_t _width, uint16_t _height, uint16_t _depth); void (*request_screen_shot)(bgfx_frame_buffer_handle_t _handle, const char* _filePath); diff --git a/include/bgfx/defines.h b/include/bgfx/defines.h index c3b653d93..c1f466eb7 100644 --- a/include/bgfx/defines.h +++ b/include/bgfx/defines.h @@ -6,7 +6,7 @@ #ifndef BGFX_DEFINES_H_HEADER_GUARD #define BGFX_DEFINES_H_HEADER_GUARD -#define BGFX_API_VERSION UINT32_C(90) +#define BGFX_API_VERSION UINT32_C(91) /// Color RGB/alpha/depth write. When it's not specified write will be disabled. #define BGFX_STATE_WRITE_R UINT64_C(0x0000000000000001) //!< Enable R write. @@ -521,19 +521,6 @@ #define BGFX_CAPS_FORMAT_TEXTURE_MSAA UINT16_C(0x2000) //!< Texture can be sampled as MSAA. #define BGFX_CAPS_FORMAT_TEXTURE_MIP_AUTOGEN UINT16_C(0x4000) //!< Texture format supports auto-generated mips. -/// -#define BGFX_VIEW_NONE UINT8_C(0x00) //!< -#define BGFX_VIEW_STEREO UINT8_C(0x01) //!< View will be rendered in stereo mode. - -/// -#define BGFX_SUBMIT_EYE_LEFT UINT8_C(0x01) //!< Submit to left eye. -#define BGFX_SUBMIT_EYE_RIGHT UINT8_C(0x02) //!< Submit to right eye. -#define BGFX_SUBMIT_EYE_MASK UINT8_C(0x03) //!< -#define BGFX_SUBMIT_EYE_FIRST BGFX_SUBMIT_EYE_LEFT - -#define BGFX_SUBMIT_RESERVED_SHIFT 7 //!< Internal bits shift. -#define BGFX_SUBMIT_RESERVED_MASK UINT8_C(0x80) //!< Internal bits mask. - /// #define BGFX_RESOLVE_NONE UINT8_C(0x00) //!< No resolve flags. #define BGFX_RESOLVE_AUTO_GEN_MIPS UINT8_C(0x01) //!< Auto-generate mip maps on resolve. diff --git a/src/bgfx.cpp b/src/bgfx.cpp index 83e7dd514..4918a80ad 100644 --- a/src/bgfx.cpp +++ b/src/bgfx.cpp @@ -1224,7 +1224,7 @@ namespace bgfx } } - void EncoderImpl::dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags) + void EncoderImpl::dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ) { if (BX_ENABLED(BGFX_CONFIG_DEBUG_UNIFORM) ) { @@ -1255,7 +1255,6 @@ namespace bgfx m_compute.m_numX = bx::max(_numX, 1u); m_compute.m_numY = bx::max(_numY, 1u); m_compute.m_numZ = bx::max(_numZ, 1u); - m_compute.m_submitFlags = _flags; m_key.m_program = _handle; m_key.m_depth = 0; @@ -3590,20 +3589,20 @@ namespace bgfx BGFX_ENCODER(setImage(_stage, _handle, _mip, _access, _format) ); } - void Encoder::dispatch(ViewId _id, ProgramHandle _program, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags) + void Encoder::dispatch(ViewId _id, ProgramHandle _program, uint32_t _numX, uint32_t _numY, uint32_t _numZ) { BGFX_CHECK_CAPS(BGFX_CAPS_COMPUTE, "Compute is not supported!"); BGFX_CHECK_HANDLE_INVALID_OK("dispatch", s_ctx->m_programHandle, _program); - BGFX_ENCODER(dispatch(_id, _program, _numX, _numY, _numZ, _flags) ); + BGFX_ENCODER(dispatch(_id, _program, _numX, _numY, _numZ) ); } - void Encoder::dispatch(ViewId _id, ProgramHandle _program, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags) + void Encoder::dispatch(ViewId _id, ProgramHandle _program, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num) { BGFX_CHECK_CAPS(BGFX_CAPS_DRAW_INDIRECT, "Dispatch indirect is not supported!"); BGFX_CHECK_CAPS(BGFX_CAPS_COMPUTE, "Compute is not supported!"); BGFX_CHECK_HANDLE_INVALID_OK("dispatch", s_ctx->m_programHandle, _program); BGFX_CHECK_HANDLE("dispatch", s_ctx->m_vertexBufferHandle, _indirectHandle); - BGFX_ENCODER(dispatch(_id, _program, _indirectHandle, _start, _num, _flags) ); + BGFX_ENCODER(dispatch(_id, _program, _indirectHandle, _start, _num) ); } void Encoder::discard() @@ -4504,10 +4503,10 @@ namespace bgfx s_ctx->setViewFrameBuffer(_id, _handle); } - void setViewTransform(ViewId _id, const void* _view, const void* _projL, uint8_t _flags, const void* _projR) + void setViewTransform(ViewId _id, const void* _view, const void* _proj) { BX_CHECK(checkView(_id), "Invalid view id: %d", _id); - s_ctx->setViewTransform(_id, _view, _projL, _flags, _projR); + s_ctx->setViewTransform(_id, _view, _proj); } void setViewOrder(ViewId _id, uint16_t _num, const ViewId* _order) @@ -4750,16 +4749,16 @@ namespace bgfx s_ctx->m_encoder0->setImage(_stage, _handle, _mip, _access, _format); } - void dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags) + void dispatch(ViewId _id, ProgramHandle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ) { BGFX_CHECK_API_THREAD(); - s_ctx->m_encoder0->dispatch(_id, _handle, _numX, _numY, _numZ, _flags); + s_ctx->m_encoder0->dispatch(_id, _handle, _numX, _numY, _numZ); } - void dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags) + void dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num) { BGFX_CHECK_API_THREAD(); - s_ctx->m_encoder0->dispatch(_id, _handle, _indirectHandle, _start, _num, _flags); + s_ctx->m_encoder0->dispatch(_id, _handle, _indirectHandle, _start, _num); } void discard() @@ -5744,11 +5743,6 @@ BGFX_C_API void bgfx_set_view_transform(bgfx_view_id_t _id, const void* _view, c bgfx::setViewTransform(_id, _view, _proj); } -BGFX_C_API void bgfx_set_view_transform_stereo(bgfx_view_id_t _id, const void* _view, const void* _projL, uint8_t _flags, const void* _projR) -{ - bgfx::setViewTransform(_id, _view, _projL, _flags, _projR); -} - BGFX_C_API void bgfx_set_view_order(bgfx_view_id_t _id, uint16_t _num, const bgfx_view_id_t* _order) { bgfx::setViewOrder(_id, _num, _order); @@ -5940,17 +5934,17 @@ BGFX_C_API void bgfx_set_compute_indirect_buffer(uint8_t _stage, bgfx_indirect_b bgfx::setBuffer(_stage, handle.cpp, bgfx::Access::Enum(_access) ); } -BGFX_C_API void bgfx_dispatch(bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags) +BGFX_C_API void bgfx_dispatch(bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ) { union { bgfx_program_handle_t c; bgfx::ProgramHandle cpp; } handle = { _handle }; - bgfx::dispatch(_id, handle.cpp, _numX, _numY, _numZ, _flags); + bgfx::dispatch(_id, handle.cpp, _numX, _numY, _numZ); } -BGFX_C_API void bgfx_dispatch_indirect(bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags) +BGFX_C_API void bgfx_dispatch_indirect(bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num) { union { bgfx_program_handle_t c; bgfx::ProgramHandle cpp; } handle = { _handle }; union { bgfx_indirect_buffer_handle_t c; bgfx::IndirectBufferHandle cpp; } indirectHandle = { _indirectHandle }; - bgfx::dispatch(_id, handle.cpp, indirectHandle.cpp, _start, _num, _flags); + bgfx::dispatch(_id, handle.cpp, indirectHandle.cpp, _start, _num); } BGFX_C_API void bgfx_discard(void) @@ -6148,17 +6142,17 @@ BGFX_C_API void bgfx_encoder_set_compute_indirect_buffer(bgfx_encoder_s* _encode BGFX_ENCODER(setBuffer(_stage, handle.cpp, bgfx::Access::Enum(_access) ) ); } -BGFX_C_API void bgfx_encoder_dispatch(bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ, uint8_t _flags) +BGFX_C_API void bgfx_encoder_dispatch(bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ) { union { bgfx_program_handle_t c; bgfx::ProgramHandle cpp; } handle = { _handle }; - BGFX_ENCODER(dispatch(_id, handle.cpp, _numX, _numY, _numZ, _flags) ); + BGFX_ENCODER(dispatch(_id, handle.cpp, _numX, _numY, _numZ) ); } -BGFX_C_API void bgfx_encoder_dispatch_indirect(bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags) +BGFX_C_API void bgfx_encoder_dispatch_indirect(bgfx_encoder_s* _encoder, bgfx_view_id_t _id, bgfx_program_handle_t _handle, bgfx_indirect_buffer_handle_t _indirectHandle, uint16_t _start, uint16_t _num) { union { bgfx_program_handle_t c; bgfx::ProgramHandle cpp; } handle = { _handle }; union { bgfx_indirect_buffer_handle_t c; bgfx::IndirectBufferHandle cpp; } indirectHandle = { _indirectHandle }; - BGFX_ENCODER(dispatch(_id, handle.cpp, indirectHandle.cpp, _start, _num, _flags) ); + BGFX_ENCODER(dispatch(_id, handle.cpp, indirectHandle.cpp, _start, _num) ); } BGFX_C_API void bgfx_encoder_discard(bgfx_encoder_s* _encoder) @@ -6312,7 +6306,6 @@ BGFX_C_API bgfx_interface_vtbl_t* bgfx_get_interface(uint32_t _version) BGFX_IMPORT_FUNC(set_view_mode) \ BGFX_IMPORT_FUNC(set_view_frame_buffer) \ BGFX_IMPORT_FUNC(set_view_transform) \ - BGFX_IMPORT_FUNC(set_view_transform_stereo) \ BGFX_IMPORT_FUNC(set_view_order) \ BGFX_IMPORT_FUNC(encoder_set_marker) \ BGFX_IMPORT_FUNC(encoder_set_state) \ diff --git a/src/bgfx_p.h b/src/bgfx_p.h index 479906efc..db5932ed2 100644 --- a/src/bgfx_p.h +++ b/src/bgfx_p.h @@ -213,6 +213,7 @@ namespace stl = std; #define BGFX_STATE_INTERNAL_SCISSOR UINT64_C(0x2000000000000000) #define BGFX_STATE_INTERNAL_OCCLUSION_QUERY UINT64_C(0x4000000000000000) +#define BGFX_SUBMIT_RESERVED_MASK UINT8_C(0xff) #define BGFX_SUBMIT_INTERNAL_OCCLUSION_VISIBLE UINT8_C(0x80) #define BGFX_RENDERER_DIRECT3D9_NAME "Direct3D 9" @@ -1549,7 +1550,7 @@ namespace bgfx m_startIndirect = 0; m_numIndirect = UINT16_MAX; m_numMatrices = 1; - m_submitFlags = BGFX_SUBMIT_EYE_FIRST; + m_submitFlags = 0; m_scissor = UINT16_MAX; m_streamMask = 0; m_stream[0].clear(); @@ -1607,7 +1608,7 @@ namespace bgfx m_numY = 0; m_numZ = 0; m_numMatrices = 0; - m_submitFlags = BGFX_SUBMIT_EYE_FIRST; + m_submitFlags = 0; m_uniformIdx = UINT8_MAX; m_indirectBuffer.idx = kInvalidHandle; @@ -1694,7 +1695,7 @@ namespace bgfx setClear(BGFX_CLEAR_NONE, 0, 0.0f, 0); setMode(ViewMode::Default); setFrameBuffer(BGFX_INVALID_HANDLE); - setTransform(NULL, NULL, BGFX_VIEW_NONE, NULL); + setTransform(NULL, NULL); } void setRect(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height) @@ -1733,10 +1734,8 @@ namespace bgfx m_fbh = _handle; } - void setTransform(const void* _view, const void* _proj, uint8_t _flags, const void* _proj1) + void setTransform(const void* _view, const void* _proj) { - m_flags = _flags; - if (NULL != _view) { bx::memCopy(m_view.un.val, _view, sizeof(Matrix4) ); @@ -1748,20 +1747,11 @@ namespace bgfx if (NULL != _proj) { - bx::memCopy(m_proj[0].un.val, _proj, sizeof(Matrix4) ); + bx::memCopy(m_proj.un.val, _proj, sizeof(Matrix4) ); } else { - m_proj[0].setIdentity(); - } - - if (NULL != _proj1) - { - bx::memCopy(m_proj[1].un.val, _proj1, sizeof(Matrix4) ); - } - else - { - bx::memCopy(m_proj[1].un.val, m_proj[0].un.val, sizeof(Matrix4) ); + m_proj.setIdentity(); } } @@ -1769,10 +1759,9 @@ namespace bgfx Rect m_rect; Rect m_scissor; Matrix4 m_view; - Matrix4 m_proj[2]; + Matrix4 m_proj; FrameBufferHandle m_fbh; uint8_t m_mode; - uint8_t m_flags; }; struct FrameCache @@ -2393,14 +2382,14 @@ namespace bgfx submit(_id, _program, handle, _depth, _preserveState); } - void dispatch(ViewId _id, ProgramHandle _handle, uint32_t _ngx, uint32_t _ngy, uint32_t _ngz, uint8_t _flags); + void dispatch(ViewId _id, ProgramHandle _handle, uint32_t _ngx, uint32_t _ngy, uint32_t _ngz); - void dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num, uint8_t _flags) + void dispatch(ViewId _id, ProgramHandle _handle, IndirectBufferHandle _indirectHandle, uint16_t _start, uint16_t _num) { m_compute.m_indirectBuffer = _indirectHandle; m_compute.m_startIndirect = _start; m_compute.m_numIndirect = _num; - dispatch(_id, _handle, 0, 0, 0, _flags); + dispatch(_id, _handle, 0, 0, 0); } void blit(ViewId _id, TextureHandle _dst, uint8_t _dstMip, uint16_t _dstX, uint16_t _dstY, uint16_t _dstZ, TextureHandle _src, uint8_t _srcMip, uint16_t _srcX, uint16_t _srcY, uint16_t _srcZ, uint16_t _width, uint16_t _height, uint16_t _depth); @@ -4533,9 +4522,9 @@ namespace bgfx m_view[_id].setFrameBuffer(_handle); } - BGFX_API_FUNC(void setViewTransform(ViewId _id, const void* _view, const void* _proj, uint8_t _flags, const void* _proj1) ) + BGFX_API_FUNC(void setViewTransform(ViewId _id, const void* _view, const void* _proj) ) { - m_view[_id].setTransform(_view, _proj, _flags, _proj1); + m_view[_id].setTransform(_view, _proj); } BGFX_API_FUNC(void resetView(ViewId _id) ) diff --git a/src/renderer.h b/src/renderer.h index ef45002a7..23ea44a55 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -47,74 +47,36 @@ namespace bgfx { } - ViewState(Frame* _frame, bool _stereo) + ViewState(Frame* _frame) { - reset(_frame, _stereo); + reset(_frame); } - void reset(Frame* _frame, bool _stereo) + void reset(Frame* _frame) { m_alphaRef = 0.0f; m_invViewCached = UINT16_MAX; m_invProjCached = UINT16_MAX; m_invViewProjCached = UINT16_MAX; - m_view[0] = m_viewTmp[0]; - m_view[1] = m_viewTmp[1]; + m_view = m_viewTmp; - if (_stereo) + for (uint32_t ii = 0; ii < BGFX_CONFIG_MAX_VIEWS; ++ii) { - m_view[0] = m_viewTmp[0]; - Matrix4 viewAdjust; - bx::mtxIdentity(viewAdjust.un.val); - - for (uint32_t eye = 0; eye < 2; ++eye) - { -/* - const HMD::Eye& hmdEye = hmd.eye[eye]; - viewAdjust.un.val[12] = hmdEye.viewOffset[0]; - viewAdjust.un.val[13] = hmdEye.viewOffset[1]; - viewAdjust.un.val[14] = hmdEye.viewOffset[2]; - - for (uint32_t ii = 0; ii < BGFX_CONFIG_MAX_VIEWS; ++ii) - { - if (BGFX_VIEW_STEREO == (_frame->m_view[ii].m_flags & BGFX_VIEW_STEREO) ) - { - bx::float4x4_mul(&m_view[eye][ii].un.f4x4 - , &_frame->m_view[ii].m_view.un.f4x4 - , &viewAdjust.un.f4x4 - ); - } - else - { - bx::memCopy(&m_view[0][ii].un.f4x4, &_frame->m_view[ii].m_view.un.f4x4, sizeof(Matrix4) ); - } - } -*/ - } - } - else - { - for (uint32_t ii = 0; ii < BGFX_CONFIG_MAX_VIEWS; ++ii) - { - bx::memCopy(&m_view[0][ii].un.f4x4, &_frame->m_view[ii].m_view.un.f4x4, sizeof(Matrix4) ); - } + bx::memCopy(&m_view[ii].un.f4x4, &_frame->m_view[ii].m_view.un.f4x4, sizeof(Matrix4) ); } for (uint32_t ii = 0; ii < BGFX_CONFIG_MAX_VIEWS; ++ii) { - for (uint32_t eye = 0; eye < uint32_t(_stereo)+1; ++eye) - { - bx::float4x4_mul(&m_viewProj[eye][ii].un.f4x4 - , &m_view[eye][ii].un.f4x4 - , &_frame->m_view[ii].m_proj[eye].un.f4x4 - ); - } + bx::float4x4_mul(&m_viewProj[ii].un.f4x4 + , &m_view[ii].un.f4x4 + , &_frame->m_view[ii].m_proj.un.f4x4 + ); } } template - void setPredefined(RendererContext* _renderer, uint16_t _view, uint8_t _eye, const Program& _program, const Frame* _frame, const Draw& _draw) + void setPredefined(RendererContext* _renderer, uint16_t _view, const Program& _program, const Frame* _frame, const Draw& _draw) { const FrameCache& frameCache = _frame->m_frameCache; @@ -158,7 +120,7 @@ namespace bgfx { _renderer->setShaderUniform4x4f(flags , predefined.m_loc - , m_view[_eye][_view].un.val + , m_view[_view].un.val , bx::uint32_min(mtxRegs, predefined.m_count) ); } @@ -166,12 +128,11 @@ namespace bgfx case PredefinedUniform::InvView: { - uint16_t viewEye = (_view << 1) | _eye; - if (viewEye != m_invViewCached) + if (_view != m_invViewCached) { - m_invViewCached = viewEye; + m_invViewCached = _view; bx::float4x4_inverse(&m_invView.un.f4x4 - , &m_view[_eye][_view].un.f4x4 + , &m_view[_view].un.f4x4 ); } @@ -187,7 +148,7 @@ namespace bgfx { _renderer->setShaderUniform4x4f(flags , predefined.m_loc - , _frame->m_view[_view].m_proj[_eye].un.val + , _frame->m_view[_view].m_proj.un.val , bx::uint32_min(mtxRegs, predefined.m_count) ); } @@ -195,12 +156,11 @@ namespace bgfx case PredefinedUniform::InvProj: { - uint16_t viewEye = (_view << 1) | _eye; - if (viewEye != m_invProjCached) + if (_view != m_invProjCached) { - m_invProjCached = viewEye; + m_invProjCached = _view; bx::float4x4_inverse(&m_invProj.un.f4x4 - , &_frame->m_view[_view].m_proj[_eye].un.f4x4 + , &_frame->m_view[_view].m_proj.un.f4x4 ); } @@ -216,7 +176,7 @@ namespace bgfx { _renderer->setShaderUniform4x4f(flags , predefined.m_loc - , m_viewProj[_eye][_view].un.val + , m_viewProj[_view].un.val , bx::uint32_min(mtxRegs, predefined.m_count) ); } @@ -224,12 +184,11 @@ namespace bgfx case PredefinedUniform::InvViewProj: { - uint16_t viewEye = (_view << 1) | _eye; - if (viewEye != m_invViewProjCached) + if (_view != m_invViewProjCached) { - m_invViewProjCached = viewEye; + m_invViewProjCached = _view; bx::float4x4_inverse(&m_invViewProj.un.f4x4 - , &m_viewProj[_eye][_view].un.f4x4 + , &m_viewProj[_view].un.f4x4 ); } @@ -258,7 +217,7 @@ namespace bgfx const Matrix4& model = frameCache.m_matrixCache.m_cache[_draw.m_startMatrix]; bx::float4x4_mul(&modelView.un.f4x4 , &model.un.f4x4 - , &m_view[_eye][_view].un.f4x4 + , &m_view[_view].un.f4x4 ); _renderer->setShaderUniform4x4f(flags , predefined.m_loc @@ -274,7 +233,7 @@ namespace bgfx const Matrix4& model = frameCache.m_matrixCache.m_cache[_draw.m_startMatrix]; bx::float4x4_mul(&modelViewProj.un.f4x4 , &model.un.f4x4 - , &m_viewProj[_eye][_view].un.f4x4 + , &m_viewProj[_view].un.f4x4 ); _renderer->setShaderUniform4x4f(flags , predefined.m_loc @@ -301,9 +260,9 @@ namespace bgfx } } - Matrix4 m_viewTmp[2][BGFX_CONFIG_MAX_VIEWS]; - Matrix4 m_viewProj[2][BGFX_CONFIG_MAX_VIEWS]; - Matrix4* m_view[2]; + Matrix4 m_viewTmp[BGFX_CONFIG_MAX_VIEWS]; + Matrix4 m_viewProj[BGFX_CONFIG_MAX_VIEWS]; + Matrix4* m_view; Rect m_rect; Matrix4 m_invView; Matrix4 m_invProj; diff --git a/src/renderer_d3d11.cpp b/src/renderer_d3d11.cpp index 3a53fb07d..11b4af251 100644 --- a/src/renderer_d3d11.cpp +++ b/src/renderer_d3d11.cpp @@ -5249,9 +5249,8 @@ namespace bgfx { namespace d3d11 RenderBind currentBind; currentBind.clear(); - const bool hmdEnabled = false; static ViewState viewState; - viewState.reset(_render, hmdEnabled); + viewState.reset(_render); bool wireframe = !!(_render->m_debug&BGFX_DEBUG_WIREFRAME); bool scissorEnabled = false; @@ -5299,13 +5298,10 @@ namespace bgfx { namespace d3d11 // if we don't do this we'll only see one frame of output and then nothing setFrameBuffer(BGFX_INVALID_HANDLE, true, false); - bool viewRestart = false; - uint8_t eye = 0; - uint8_t restartState = 0; viewState.m_rect = _render->m_view[0].m_rect; - int32_t numItems = _render->m_numRenderItems; - for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;) + + for (int32_t item = 0; item < numItems;) { const uint64_t encodedKey = _render->m_sortKeys[item]; const bool isCompute = key.decode(encodedKey, _render->m_viewRemap); @@ -5323,15 +5319,6 @@ namespace bgfx { namespace d3d11 if (viewChanged) { - if (1 == restartState) - { - restartState = 2; - item = restartItem; - restartItem = numItems; - view = UINT16_MAX; - continue; - } - view = key.m_view; currentProgram = BGFX_INVALID_HANDLE; @@ -5341,24 +5328,6 @@ namespace bgfx { namespace d3d11 setFrameBuffer(fbh); } - viewRestart = ( (BGFX_VIEW_STEREO == (_render->m_view[view].m_flags & BGFX_VIEW_STEREO) ) ); - viewRestart &= hmdEnabled; - if (viewRestart) - { - if (0 == restartState) - { - restartState = 1; - restartItem = item - 1; - } - - eye = (restartState - 1) & 1; - restartState &= 1; - } - else - { - eye = 0; - } - PIX_ENDEVENT(); if (item > 1) { @@ -5367,32 +5336,12 @@ namespace bgfx { namespace d3d11 profiler.begin(view); viewState.m_rect = _render->m_view[view].m_rect; - if (viewRestart) + if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) ) { - if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) ) - { - wchar_t* viewNameW = s_viewNameW[view]; - viewNameW[3] = L' '; - viewNameW[4] = eye ? L'R' : L'L'; - PIX_BEGINEVENT(0 == ( (view*2+eye)&1) - ? D3DCOLOR_VIEW_L - : D3DCOLOR_VIEW_R - , viewNameW - ); - } - - viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2; - viewState.m_rect.m_width /= 2; - } - else - { - if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) ) - { - wchar_t* viewNameW = s_viewNameW[view]; - viewNameW[3] = L' '; - viewNameW[4] = L' '; - PIX_BEGINEVENT(D3DCOLOR_VIEW, viewNameW); - } + wchar_t* viewNameW = s_viewNameW[view]; + viewNameW[3] = L' '; + viewNameW[4] = L' '; + PIX_BEGINEVENT(D3DCOLOR_VIEW, viewNameW); } const Rect& scissorRect = _render->m_view[view].m_scissor; @@ -5444,12 +5393,6 @@ namespace bgfx { namespace d3d11 const RenderCompute& compute = renderItem.compute; - if (0 != eye - && BGFX_SUBMIT_EYE_LEFT == (compute.m_submitFlags&BGFX_SUBMIT_EYE_MASK) ) - { - continue; - } - bool programChanged = false; bool constantsChanged = compute.m_uniformBegin < compute.m_uniformEnd; rendererUpdateUniforms(this, _render->m_uniformBuffer[compute.m_uniformIdx], compute.m_uniformBegin, compute.m_uniformEnd); @@ -5481,7 +5424,7 @@ namespace bgfx { namespace d3d11 } } - viewState.setPredefined<4>(this, view, eye, program, _render, compute); + viewState.setPredefined<4>(this, view, program, _render, compute); if (constantsChanged || program.m_numPredefined > 0) @@ -5807,7 +5750,7 @@ namespace bgfx { namespace d3d11 } } - viewState.setPredefined<4>(this, view, eye, program, _render, draw); + viewState.setPredefined<4>(this, view, program, _render, draw); if (constantsChanged || program.m_numPredefined > 0) diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index 83c94493e..2af843ab1 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -5705,9 +5705,8 @@ namespace bgfx { namespace d3d12 RenderBind currentBind; currentBind.clear(); - const bool hmdEnabled = false; static ViewState viewState; - viewState.reset(_render, hmdEnabled); + viewState.reset(_render); // bool wireframe = !!(_render->m_debug&BGFX_DEBUG_WIREFRAME); // setDebugWireframe(wireframe); @@ -5806,9 +5805,9 @@ namespace bgfx { namespace d3d12 m_batch.begin(); viewState.m_rect = _render->m_view[0].m_rect; - int32_t numItems = _render->m_numRenderItems; - for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;) + + for (int32_t item = 0; item < numItems;) { const uint64_t encodedKey = _render->m_sortKeys[item]; const bool isCompute = key.decode(encodedKey, _render->m_viewRemap); @@ -6061,7 +6060,7 @@ namespace bgfx { namespace d3d12 || hasPredefined) { ProgramD3D12& program = m_program[currentProgram.idx]; - viewState.setPredefined<4>(this, view, 0, program, _render, compute); + viewState.setPredefined<4>(this, view, program, _render, compute); commitShaderConstants(key.m_program, gpuAddress); m_commandList->SetComputeRootConstantBufferView(Rdt::CBV, gpuAddress); } @@ -6457,7 +6456,7 @@ namespace bgfx { namespace d3d12 ProgramD3D12& program = m_program[currentProgram.idx]; uint32_t ref = (newFlags&BGFX_STATE_ALPHA_REF_MASK)>>BGFX_STATE_ALPHA_REF_SHIFT; viewState.m_alphaRef = ref/255.0f; - viewState.setPredefined<4>(this, view, 0, program, _render, draw); + viewState.setPredefined<4>(this, view, program, _render, draw); commitShaderConstants(key.m_program, gpuAddress); } diff --git a/src/renderer_d3d9.cpp b/src/renderer_d3d9.cpp index 7616d7e2d..cee5e94ae 100644 --- a/src/renderer_d3d9.cpp +++ b/src/renderer_d3d9.cpp @@ -3745,7 +3745,8 @@ namespace bgfx { namespace d3d9 RenderBind currentBind; currentBind.clear(); - ViewState viewState(_render, false); + static ViewState viewState; + viewState.reset(_render); DX_CHECK(device->SetRenderState(D3DRS_FILLMODE, _render->m_debug&BGFX_DEBUG_WIREFRAME ? D3DFILL_WIREFRAME : D3DFILL_SOLID) ); ProgramHandle currentProgram = BGFX_INVALID_HANDLE; @@ -4159,7 +4160,7 @@ namespace bgfx { namespace d3d9 } } - viewState.setPredefined<4>(this, view, 0, program, _render, draw); + viewState.setPredefined<4>(this, view, program, _render, draw); } { diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 7e04cf6bf..002217b31 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -6350,9 +6350,8 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) ); RenderBind currentBind; currentBind.clear(); - const bool hmdEnabled = false; static ViewState viewState; - viewState.reset(_render, hmdEnabled); + viewState.reset(_render); ProgramHandle currentProgram = BGFX_INVALID_HANDLE; ProgramHandle boundProgram = BGFX_INVALID_HANDLE; @@ -6409,18 +6408,14 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) ); m_occlusionQuery.resolve(_render); } - uint8_t eye = 0; - if (0 == (_render->m_debug&BGFX_DEBUG_IFH) ) { GL_CHECK(glBindFramebuffer(GL_FRAMEBUFFER, m_msaaBackBufferFbo) ); - bool viewRestart = false; - uint8_t restartState = 0; viewState.m_rect = _render->m_view[0].m_rect; - int32_t numItems = _render->m_numRenderItems; - for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;) + + for (int32_t item = 0; item < numItems;) { const uint64_t encodedKey = _render->m_sortKeys[item]; const bool isCompute = key.decode(encodedKey, _render->m_viewRemap); @@ -6438,15 +6433,6 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) ); if (viewChanged) { - if (1 == restartState) - { - restartState = 2; - item = restartItem; - restartItem = numItems; - view = UINT16_MAX; - continue; - } - view = key.m_view; currentProgram = BGFX_INVALID_HANDLE; @@ -6457,24 +6443,6 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) ); resolutionHeight = setFrameBuffer(fbh, resolutionHeight, discardFlags); } - viewRestart = ( (BGFX_VIEW_STEREO == (_render->m_view[view].m_flags & BGFX_VIEW_STEREO) ) ); - viewRestart &= hmdEnabled; - if (viewRestart) - { - if (0 == restartState) - { - restartState = 1; - restartItem = item - 1; - } - - eye = (restartState - 1) & 1; - restartState &= 1; - } - else - { - eye = 0; - } - if (item > 1) { profiler.end(); @@ -6483,28 +6451,12 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) ); profiler.begin(view); viewState.m_rect = _render->m_view[view].m_rect; - if (viewRestart) + if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) ) { - if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) ) - { - char* viewName = s_viewName[view]; - viewName[3] = ' '; - viewName[4] = eye ? 'R' : 'L'; - GL_CHECK(glInsertEventMarker(0, viewName) ); - } - - viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2; - viewState.m_rect.m_width /= 2; - } - else - { - if (BX_ENABLED(BGFX_CONFIG_DEBUG_PIX) ) - { - char* viewName = s_viewName[view]; - viewName[3] = ' '; - viewName[4] = ' '; - GL_CHECK(glInsertEventMarker(0, viewName) ); - } + char* viewName = s_viewName[view]; + viewName[3] = ' '; + viewName[4] = ' '; + GL_CHECK(glInsertEventMarker(0, viewName) ); } const Rect& scissorRect = _render->m_view[view].m_scissor; @@ -6615,7 +6567,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) ); commit(*program.m_constantBuffer); } - viewState.setPredefined<1>(this, view, eye, program, _render, compute); + viewState.setPredefined<1>(this, view, program, _render, compute); if (isValid(compute.m_indirectBuffer) ) { @@ -7060,7 +7012,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) ); commit(*program.m_constantBuffer); } - viewState.setPredefined<1>(this, view, eye, program, _render, draw); + viewState.setPredefined<1>(this, view, program, _render, draw); { for (uint32_t stage = 0; stage < BGFX_CONFIG_MAX_TEXTURE_SAMPLERS; ++stage) diff --git a/src/renderer_mtl.mm b/src/renderer_mtl.mm index b3d65619a..e2c1a3ad9 100644 --- a/src/renderer_mtl.mm +++ b/src/renderer_mtl.mm @@ -3449,9 +3449,8 @@ namespace bgfx { namespace mtl RenderBind currentBind; currentBind.clear(); - const bool hmdEnabled = false; static ViewState viewState; - viewState.reset(_render, hmdEnabled); + viewState.reset(_render); uint32_t blendFactor = 0; bool wireframe = !!(_render->m_debug&BGFX_DEBUG_WIREFRAME); @@ -3485,13 +3484,10 @@ namespace bgfx { namespace mtl if (0 == (_render->m_debug&BGFX_DEBUG_IFH) ) { - bool viewRestart = false; - uint8_t eye = 0; - uint8_t restartState = 0; viewState.m_rect = _render->m_view[0].m_rect; - int32_t numItems = _render->m_numRenderItems; - for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;) + + for (int32_t item = 0; item < numItems;) { const uint64_t encodedKey = _render->m_sortKeys[item]; const bool isCompute = key.decode(encodedKey, _render->m_viewRemap); @@ -3509,45 +3505,11 @@ namespace bgfx { namespace mtl if (viewChanged) { - if (1 == restartState) - { - restartState = 2; - item = restartItem; - restartItem = numItems; - view = UINT16_MAX; - continue; - } - view = key.m_view; currentProgram = BGFX_INVALID_HANDLE; - viewRestart = BGFX_VIEW_STEREO == (_render->m_view[view].m_flags & BGFX_VIEW_STEREO); - viewRestart &= hmdEnabled; - - if (viewRestart) - { - if (0 == restartState) - { - restartState = 1; - restartItem = item - 1; - } - - eye = (restartState - 1) & 1; - restartState &= 1; - } - else - { - eye = 0; - } - viewState.m_rect = _render->m_view[view].m_rect; - if (viewRestart) - { - viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2; - viewState.m_rect.m_width /= 2; - } - submitBlit(bs, view); const Rect& scissorRect = _render->m_view[view].m_scissor; @@ -4003,7 +3965,7 @@ namespace bgfx { namespace mtl } } - viewState.setPredefined<4>(this, view, eye, program, _render, draw); + viewState.setPredefined<4>(this, view, program, _render, draw); m_uniformBufferFragmentOffset += fragmentUniformBufferSize; m_uniformBufferVertexOffset = m_uniformBufferFragmentOffset; diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index d3daa1e5d..d4ca7b39a 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -3679,9 +3679,8 @@ VK_DESTROY currentState.m_stateFlags = BGFX_STATE_NONE; currentState.m_stencil = packStencil(BGFX_STENCIL_NONE, BGFX_STENCIL_NONE); - const bool hmdEnabled = false; - ViewState viewState(_render, hmdEnabled); - viewState.reset(_render, hmdEnabled); + static ViewState viewState; + viewState.reset(_render); // bool wireframe = !!(_render->m_debug&BGFX_DEBUG_WIREFRAME); // setDebugWireframe(wireframe); @@ -3771,12 +3770,10 @@ VK_DESTROY { // m_batch.begin(); -// uint8_t eye = 0; -// uint8_t restartState = 0; viewState.m_rect = _render->m_view[0].m_rect; int32_t numItems = _render->m_numRenderItems; - for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;) + for (int32_t item = 0; item < numItems;) { const uint64_t encodedKey = _render->m_sortKeys[item]; const bool isCompute = key.decode(encodedKey, _render->m_viewRemap); @@ -3997,7 +3994,7 @@ BX_UNUSED(currentSamplerStateIdx); || hasPredefined) { ProgramVK& program = m_program[currentProgram.idx]; - viewState.setPredefined<4>(this, view, 0, program, _render, compute); + viewState.setPredefined<4>(this, view, program, _render, compute); // commitShaderConstants(key.m_program, gpuAddress); // m_commandList->SetComputeRootConstantBufferView(Rdt::CBV, gpuAddress); } @@ -4300,7 +4297,7 @@ BX_UNUSED(currentSamplerStateIdx); ProgramVK& program = m_program[currentProgram.idx]; uint32_t ref = (newFlags&BGFX_STATE_ALPHA_REF_MASK)>>BGFX_STATE_ALPHA_REF_SHIFT; viewState.m_alphaRef = ref/255.0f; - viewState.setPredefined<4>(this, view, 0, program, _render, draw); + viewState.setPredefined<4>(this, view, program, _render, draw); commitShaderUniforms(m_commandBuffer, key.m_program); //, gpuAddress); }