Skip to content
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

Return KTX_NOT_FOUND when a GPU proc is not found. #770

Merged
merged 2 commits into from
Sep 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion include/ktx.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ typedef enum ktx_error_code_e {
KTX_GL_ERROR, /*!< GL operations resulted in an error. */
KTX_INVALID_OPERATION, /*!< The operation is not allowed in the current state. */
KTX_INVALID_VALUE, /*!< A parameter value was not valid */
KTX_NOT_FOUND, /*!< Requested key was not found */
KTX_NOT_FOUND, /*!< Requested metadata key or required dynamically loaded GPU function was not found. */
KTX_OUT_OF_MEMORY, /*!< Not enough memory to complete the operation. */
KTX_TRANSCODE_FAILED, /*!< Transcoding of block compressed texture failed. */
KTX_UNKNOWN_FILE_FORMAT, /*!< The file not a KTX file */
Expand Down
4 changes: 2 additions & 2 deletions lib/gl_funcs.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ struct glFuncPtrs gl;
*(void **)(&gl.func) = LoadProcAddr(ktxOpenGLModuleHandle, #func); \
if ( !gl.func && required ) { \
fprintf(stderr, noloadmsg, #func); \
return KTX_FALSE; \
return KTX_NOT_FOUND; \
}
#else
#define GL_FUNCTION(type, func, required) \
Expand All @@ -112,7 +112,7 @@ struct glFuncPtrs gl;
gl.func = (type)LoadProcAddr(ktxOpenGLModuleHandle, #func); \
if ( !gl.func && required) { \
fprintf(stderr, noloadmsg, #func); \
return KTX_FALSE; \
return KTX_NOT_FOUND; \
}
#endif

Expand Down
6 changes: 5 additions & 1 deletion lib/glloader.c
Original file line number Diff line number Diff line change
Expand Up @@ -890,6 +890,8 @@ ktxTexture_GLUploadPrivate(ktxTexture* This, ktx_glformatinfo* formatInfo,
* glGenTextures or gl*TexImage*. The GL error
* will be returned in @p *glerror, if glerror
* is not @c NULL.
* @exception KTX_NOT_FOUND A dynamically loaded OpenGL {,ES} function
* required by the loader was not found.
* @exception KTX_UNSUPPORTED_TEXTURE_TYPE The type of texture is not supported
* by the current OpenGL context.
*/
Expand Down Expand Up @@ -974,6 +976,8 @@ ktxTexture1_GLUpload(ktxTexture1* This, GLuint* pTexture, GLenum* pTarget,
* glGenTextures or gl*TexImage*. The GL error
* will be returned in @p *glerror, if glerror
* is not @c NULL.
* @exception KTX_NOT_FOUND A dynamically loaded OpenGL {,ES} function
* required by the loader was not found.
* @exception KTX_UNSUPPORTED_TEXTURE_TYPE The type of texture is not supported
* by the current OpenGL context.
*/
Expand Down Expand Up @@ -1041,7 +1045,7 @@ ktxTexture2_GLUpload(ktxTexture2* This, GLuint* pTexture, GLenum* pTarget,
* @~English
* @brief Create a GL texture object from a ktxTexture1 object.
*
* In ordert to ensure that the GL uploader is not linked into an application unless explicitly called,
* In order to ensure that the GL uploader is not linked into an application unless explicitly called,
* this is not a virtual function. It determines the texture type then dispatches to the correct function.
*
* @copydetails ktxTexture1::ktxTexture1_GLUpload
Expand Down
2 changes: 1 addition & 1 deletion lib/strings.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ static const char* const errorStrings[] = {
"GL error occurred.", /* KTX_GL_ERROR */
"Operation not allowed in the current state.", /* KTX_INVALID_OPERATION */
"Invalid parameter value.", /* KTX_INVALID_VALUE */
"Key not found.", /* KTX_NOT_FOUND */
"Metadata key or loader-required GPU function not found.", /* KTX_NOT_FOUND */
"Out of memory.", /* KTX_OUT_OF_MEMORY */
"Transcoding of block compressed texture failed.",/* KTX_TRANSCODE_FAILED */
"Not a KTX file.", /* KTX_UNKNOWN_FILE_FORMAT */
Expand Down
26 changes: 15 additions & 11 deletions lib/vkloader.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,12 @@ generateMipmaps(ktxVulkanTexture* vkTexture, ktxVulkanDeviceInfo* vdi,
* @brief Create a ktxVulkanDeviceInfo object.
*
* Allocates CPU memory for a ktxVulkanDeviceInfo object then calls
* ktxVulkanDeviceInfo_construct(). See it for documentation of the
* ktxVulkanDeviceInfo\_Construct(). See it for documentation of the
* parameters.
*
* @return a pointer to the constructed ktxVulkanDeviceInfo.
*
* @sa ktxVulkanDeviceInfo_construct(), ktxVulkanDeviceInfo_destroy()
* @sa ktxVulkanDeviceInfo\_Construct(), ktxVulkanDeviceInfo\_Destroy()
*/
ktxVulkanDeviceInfo*
ktxVulkanDeviceInfo_Create(VkPhysicalDevice physicalDevice, VkDevice device,
Expand All @@ -111,12 +111,12 @@ ktxVulkanDeviceInfo_Create(VkPhysicalDevice physicalDevice, VkDevice device,
* @brief Create a ktxVulkanDeviceInfo object.
*
* Allocates CPU memory for a ktxVulkanDeviceInfo object then calls
* ktxVulkanDeviceInfo_construct(). See it for documentation of the
* ktxVulkanDeviceInfo\_Construct(). See it for documentation of the
* parameters.
*
* @return a pointer to the constructed ktxVulkanDeviceInfo.
*
* @sa ktxVulkanDeviceInfo_construct(), ktxVulkanDeviceInfo_destroy()
* @sa ktxVulkanDeviceInfo\_Construct(), ktxVulkanDeviceInfo\_Destroy()
*/
ktxVulkanDeviceInfo*
ktxVulkanDeviceInfo_CreateEx(VkInstance instance,
Expand Down Expand Up @@ -164,10 +164,14 @@ ktxVulkanDeviceInfo_CreateEx(VkInstance instance,
* Pass a valid ktxVulkanDeviceInfo* to any Vulkan KTX image loading
* function to provide it with the information.
*
* @returns KTX_SUCCESS on success, KTX_OUT_OF_MEMORY if a command buffer could
* not be allocated.
* @returns KTX\_SUCCESS on success, other KTX\_\* enum values on error.
*
* @sa ktxVulkanDeviceInfo_destruct()
* @exception KTX_NOT_FOUND A dynamically loaded Vulkan function
* required by the loader was not found.
*
* @exception KTX_OUT_OF_MEMORY A command buffer could not be allocated.
*
* @sa ktxVulkanDeviceInfo\_Destruct()
*
* @param This pointer to the ktxVulkanDeviceInfo object to
* initialize.
Expand Down Expand Up @@ -217,7 +221,7 @@ do { \
if ((member).fun == NULL) { \
(member).fun = (PFN_##fun)ktxLoadVulkanFunction(#fun); \
if ((member).fun == NULL) { \
return KTX_FALSE; \
return KTX_NOT_FOUND; \
}\
} \
} while (0)
Expand All @@ -227,7 +231,7 @@ do { \
if ((member).fun == NULL) { \
(member).fun = (PFN_##fun)((member).vkGetInstanceProcAddr)((instance), #fun); \
if ((member).fun == NULL) { \
return KTX_FALSE; \
return KTX_NOT_FOUND; \
}\
} \
} while (0)
Expand All @@ -237,7 +241,7 @@ do { \
if ((member).fun == NULL) { \
(member).fun = (PFN_##fun)((member).vkGetDeviceProcAddr)((device), #fun); \
if ((member).fun == NULL) { \
return KTX_FALSE; \
return KTX_NOT_FOUND; \
}\
} \
} while (0)
Expand Down Expand Up @@ -369,7 +373,7 @@ ktxVulkanDeviceInfo_Destruct(ktxVulkanDeviceInfo* This)
* @~English
* @brief Destroy a ktxVulkanDeviceInfo object.
*
* Calls ktxVulkanDeviceInfo_destruct() then frees the ktxVulkanDeviceInfo.
* Calls ktxVulkanDeviceInfo\_Destruct() then frees the ktxVulkanDeviceInfo.
*
* @param This pointer to the ktxVulkanDeviceInfo to destroy.
*/
Expand Down